diff --git a/components/node-service-api-request-handlers/package.json b/components/node-service-api-request-handlers/package.json index 4f374ee3..71618a51 100644 --- a/components/node-service-api-request-handlers/package.json +++ b/components/node-service-api-request-handlers/package.json @@ -1,7 +1,7 @@ { "name": "@crystallize/node-service-api-request-handlers", "license": "MIT", - "version": "3.8.0", + "version": "3.9.0", "author": "Crystallize (https://crystallize.com)", "contributors": [ "Sébastien Morel " diff --git a/components/node-service-api-request-handlers/src/index.ts b/components/node-service-api-request-handlers/src/index.ts index 2471d89b..e22c2388 100644 --- a/components/node-service-api-request-handlers/src/index.ts +++ b/components/node-service-api-request-handlers/src/index.ts @@ -26,3 +26,6 @@ export * from './payments/vipps/fetchPayment'; export * from './payments/vipps/addReceiptOrder'; export * from './payments/vipps/fetchTokenFromOAuthCode'; export * from './payments/vipps/fetchUserInfoFromOAuthToken'; +export * from './payments/vipps/capturePayment'; +export * from './payments/vipps/cancelPayment'; +export * from './payments/vipps/refundPayment'; diff --git a/components/node-service-api-request-handlers/src/payments/vipps/cancelPayment.ts b/components/node-service-api-request-handlers/src/payments/vipps/cancelPayment.ts new file mode 100644 index 00000000..a4d895d7 --- /dev/null +++ b/components/node-service-api-request-handlers/src/payments/vipps/cancelPayment.ts @@ -0,0 +1,12 @@ +import { createClient } from './client'; +import { VippsAppCredentials } from './types'; + +export const cancelVippsPayment = async (orderId: string, credentials: VippsAppCredentials, body: any) => { + const client = await createClient({ + ...credentials, + fetchToken: false, + }); + const cancelConfirmation = await client.put(`/ecomm/v2/payments/${orderId}/cancel`, body, orderId); + + return cancelConfirmation; +}; diff --git a/components/node-service-api-request-handlers/src/payments/vipps/capturePayment.ts b/components/node-service-api-request-handlers/src/payments/vipps/capturePayment.ts new file mode 100644 index 00000000..a51d1bd6 --- /dev/null +++ b/components/node-service-api-request-handlers/src/payments/vipps/capturePayment.ts @@ -0,0 +1,12 @@ +import { createClient } from './client'; +import { VippsAppCredentials } from './types'; + +export const captureVippsPayment = async (orderId: string, credentials: VippsAppCredentials, body: any) => { + const client = await createClient({ + ...credentials, + fetchToken: false, + }); + const capturedConfirmation = await client.post(`/ecomm/v2/payments/${orderId}/capture`, body, orderId); + + return capturedConfirmation; +}; diff --git a/components/node-service-api-request-handlers/src/payments/vipps/client.ts b/components/node-service-api-request-handlers/src/payments/vipps/client.ts index 5336bc48..4982473e 100644 --- a/components/node-service-api-request-handlers/src/payments/vipps/client.ts +++ b/components/node-service-api-request-handlers/src/payments/vipps/client.ts @@ -127,6 +127,18 @@ export const createClient = async ({ ...init, }); }, + put: async (endpoint: string, body: any, idempotencyKey: string, init?: RequestInit): Promise => { + return fetchResult(`https://${origin}${endpoint}`, { + method: 'PUT', + headers: { + ...(idempotencyKey.length > 0 ? { 'Idempotency-Key': idempotencyKey } : {}), + ...authHeaders, + ...extraHeaders, + }, + body: JSON.stringify(body), + ...init, + }); + }, formEncodedPost: async ( endpoint: string, body: any, diff --git a/components/node-service-api-request-handlers/src/payments/vipps/refundPayment.ts b/components/node-service-api-request-handlers/src/payments/vipps/refundPayment.ts new file mode 100644 index 00000000..887b071c --- /dev/null +++ b/components/node-service-api-request-handlers/src/payments/vipps/refundPayment.ts @@ -0,0 +1,12 @@ +import { createClient } from './client'; +import { VippsAppCredentials } from './types'; + +export const refundVippsPayment = async (orderId: string, credentials: VippsAppCredentials, body: any) => { + const client = await createClient({ + ...credentials, + fetchToken: false, + }); + const refundConfirmation = await client.post(`/ecomm/v2/payments/${orderId}/refund`, body, orderId); + + return refundConfirmation; +};