diff --git a/samples/bkmExpress/RetrieveBkmExpressPayment.js b/samples/bkmExpress/RetrieveBkmExpressPayment.js deleted file mode 100644 index 9792abad..00000000 --- a/samples/bkmExpress/RetrieveBkmExpressPayment.js +++ /dev/null @@ -1,11 +0,0 @@ -const Craftgate = require("../../dist"); - -const craftgate = new Craftgate.Client({ - apiKey: "api-key", - secretKey: "secret-key", - baseUrl: "https://sandbox-api.craftgate.io" -}); - -craftgate.bkmExpress().retrievePayment("06fa9f84-ddf3-4ce4-91df-2f96139c8855") - .then(result => console.info("Payment retrieve successful", result)) - .catch(err => console.error("Payment retrieve failed", err)); diff --git a/samples/mealVoucher/CompleteMealVoucherCardTokenization.js b/samples/mealVoucher/CompleteMealVoucherCardTokenization.js new file mode 100644 index 00000000..e8ef3d9a --- /dev/null +++ b/samples/mealVoucher/CompleteMealVoucherCardTokenization.js @@ -0,0 +1,17 @@ +const Craftgate = require('../../dist'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +const sessionId = 'session-id'; + +const request = { + validationCode: '123456' +}; + +craftgate.mealVoucherCardTokenization().complete(sessionId, request) + .then(result => console.info('Meal voucher card tokenization completed', result)) + .catch(err => console.error('Meal voucher card tokenization completion failed', err)); diff --git a/samples/mealVoucher/InitMealVoucherCardTokenization.js b/samples/mealVoucher/InitMealVoucherCardTokenization.js new file mode 100644 index 00000000..3e864e64 --- /dev/null +++ b/samples/mealVoucher/InitMealVoucherCardTokenization.js @@ -0,0 +1,18 @@ +const Craftgate = require('../../dist'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +const request = { + apmType: Craftgate.Model.ApmType.Setcard, + mealVoucherCardTokenizationData: { + callbackUrl: 'https://www.yourdomain.com/callback' + } +}; + +craftgate.mealVoucherCardTokenization().init(request) + .then(result => console.info('Meal voucher card tokenization initiated', result)) + .catch(err => console.error('Meal voucher card tokenization failed', err)); diff --git a/samples/mealVoucher/RegenerateMealVoucherCardTokenization.js b/samples/mealVoucher/RegenerateMealVoucherCardTokenization.js new file mode 100644 index 00000000..3bf693d1 --- /dev/null +++ b/samples/mealVoucher/RegenerateMealVoucherCardTokenization.js @@ -0,0 +1,20 @@ +const Craftgate = require('../../dist'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +const sessionId = 'session-id'; + +const request = { + mealVoucherCardTokenizationData: { + cardNumber: '1234567890123456', + gsmNumber: '5555555555' + } +}; + +craftgate.mealVoucherCardTokenization().regenerate(sessionId, request) + .then(result => console.info('Meal voucher card tokenization regenerated', result)) + .catch(err => console.error('Meal voucher card tokenization regeneration failed', err)); diff --git a/src/CraftgateClient.ts b/src/CraftgateClient.ts index 82d414d8..e0de57fd 100644 --- a/src/CraftgateClient.ts +++ b/src/CraftgateClient.ts @@ -7,6 +7,7 @@ import HookAdapter from './adapter/HookAdapter'; import InstallmentAdapter from './adapter/InstallmentAdapter'; import JuzdanPaymentAdapter from './adapter/JuzdanPaymentAdapter'; import MasterpassPaymentAdapter from './adapter/MasterpassPaymentAdapter'; +import MealVoucherCardTokenizationAdapter from './adapter/MealVoucherCardTokenizationAdapter'; import MerchantAdapter from './adapter/MerchantAdapter'; import MerchantApmAdapter from './adapter/MerchantApmAdapter'; import OnboardingAdapter from './adapter/OnboardingAdapter'; @@ -36,6 +37,7 @@ export default class CraftgateAdapter extends BaseAdapter { private _merchantApmAdapter: MerchantApmAdapter; private _juzdanPaymentAdapter: JuzdanPaymentAdapter; private _bkmExpressPaymentAdapter: BkmExpressPaymentAdapter; + private _mealVoucherCardTokenizationAdapter: MealVoucherCardTokenizationAdapter; constructor(options: ClientCreationOptions) { super(options); @@ -56,6 +58,7 @@ export default class CraftgateAdapter extends BaseAdapter { this._merchantApmAdapter = new MerchantApmAdapter(options); this._juzdanPaymentAdapter = new JuzdanPaymentAdapter(options); this._bkmExpressPaymentAdapter = new BkmExpressPaymentAdapter(options); + this._mealVoucherCardTokenizationAdapter = new MealVoucherCardTokenizationAdapter(options); } installment(): InstallmentAdapter { @@ -125,4 +128,8 @@ export default class CraftgateAdapter extends BaseAdapter { bkmExpress(): BkmExpressPaymentAdapter { return this._bkmExpressPaymentAdapter; } + + mealVoucherCardTokenization(): MealVoucherCardTokenizationAdapter { + return this._mealVoucherCardTokenizationAdapter; + } } diff --git a/src/adapter/BkmExpressPaymentAdapter.ts b/src/adapter/BkmExpressPaymentAdapter.ts index c7b62188..46199b5d 100644 --- a/src/adapter/BkmExpressPaymentAdapter.ts +++ b/src/adapter/BkmExpressPaymentAdapter.ts @@ -22,10 +22,6 @@ export default class BkmExpressPaymentAdapter extends BaseAdapter { return this._client.post(`/payment/v1/bkm-express/complete`, request); } - async retrievePayment(ticketId: string): Promise { - return this._client.get(`/payment/v1/bkm-express/payments/${ticketId}`); - } - async retrievePaymentByToken(token: string): Promise { return this._client.get(`/payment/v1/bkm-express/${token}`); } diff --git a/src/adapter/MealVoucherCardTokenizationAdapter.ts b/src/adapter/MealVoucherCardTokenizationAdapter.ts new file mode 100644 index 00000000..e7164abc --- /dev/null +++ b/src/adapter/MealVoucherCardTokenizationAdapter.ts @@ -0,0 +1,28 @@ +import {ClientCreationOptions} from '../lib/HttpClient'; + +import InitMealVoucherCardTokenizationRequest from '../request/InitMealVoucherCardTokenizationRequest'; +import MealVoucherCardTokenizationCompleteRequest from '../request/MealVoucherCardTokenizationCompleteRequest'; +import MealVoucherCardTokenizationRegenerateRequest from '../request/MealVoucherCardTokenizationRegenerateRequest'; + +import InitMealVoucherCardTokenizationResponse from '../response/InitMealVoucherCardTokenizationResponse'; +import MealVoucherCardTokenizationCompleteResponse from '../response/MealVoucherCardTokenizationCompleteResponse'; + +import BaseAdapter from './BaseAdapter'; + +export default class MealVoucherCardTokenizationAdapter extends BaseAdapter { + constructor(options: ClientCreationOptions) { + super(options); + } + + async init(request: InitMealVoucherCardTokenizationRequest): Promise { + return this._client.post('/payment/v1/meal-voucher/card-tokenizations/init', request); + } + + async regenerate(sessionId: string, request: MealVoucherCardTokenizationRegenerateRequest): Promise { + return this._client.post(`/payment/v1/meal-voucher/card-tokenizations/${sessionId}/regenerate`, request); + } + + async complete(sessionId: string, request: MealVoucherCardTokenizationCompleteRequest): Promise { + return this._client.post(`/payment/v1/meal-voucher/card-tokenizations/${sessionId}/complete`, request); + } +} diff --git a/src/model/index.ts b/src/model/index.ts index 1f6b1ee7..4508eb2b 100644 --- a/src/model/index.ts +++ b/src/model/index.ts @@ -1,4 +1,5 @@ import AccountOwner from './AccountOwner'; +import ApmAdditionalAction from './ApmAdditionalAction'; import ApmType from './ApmType'; import ApprovalStatus from './ApprovalStatus'; import BankAccountTrackingSource from './BankAccountTrackingSource'; @@ -59,6 +60,7 @@ import WebhookStatus from './WebhookStatus'; export = { AccountOwner, + ApmAdditionalAction, ApmType, ApprovalStatus, BounceStatus, diff --git a/src/request/InitMealVoucherCardTokenizationRequest.ts b/src/request/InitMealVoucherCardTokenizationRequest.ts new file mode 100644 index 00000000..b0c4779e --- /dev/null +++ b/src/request/InitMealVoucherCardTokenizationRequest.ts @@ -0,0 +1,10 @@ +import ApmType from '../model/ApmType'; + +import MealVoucherCardTokenizationData from './dto/MealVoucherCardTokenizationData'; + +type InitMealVoucherCardTokenizationRequest = { + apmType: ApmType; + mealVoucherCardTokenizationData: MealVoucherCardTokenizationData; +}; + +export default InitMealVoucherCardTokenizationRequest; diff --git a/src/request/MealVoucherCardTokenizationCompleteRequest.ts b/src/request/MealVoucherCardTokenizationCompleteRequest.ts new file mode 100644 index 00000000..a61e9320 --- /dev/null +++ b/src/request/MealVoucherCardTokenizationCompleteRequest.ts @@ -0,0 +1,5 @@ +type MealVoucherCardTokenizationCompleteRequest = { + validationCode?: string; +}; + +export default MealVoucherCardTokenizationCompleteRequest; diff --git a/src/request/MealVoucherCardTokenizationRegenerateRequest.ts b/src/request/MealVoucherCardTokenizationRegenerateRequest.ts new file mode 100644 index 00000000..effe6d63 --- /dev/null +++ b/src/request/MealVoucherCardTokenizationRegenerateRequest.ts @@ -0,0 +1,7 @@ +import MealVoucherCardTokenizationData from './dto/MealVoucherCardTokenizationData'; + +type MealVoucherCardTokenizationRegenerateRequest = { + mealVoucherCardTokenizationData: MealVoucherCardTokenizationData; +}; + +export default MealVoucherCardTokenizationRegenerateRequest; diff --git a/src/request/dto/MealVoucherCardTokenizationData.ts b/src/request/dto/MealVoucherCardTokenizationData.ts new file mode 100644 index 00000000..44f5ad0b --- /dev/null +++ b/src/request/dto/MealVoucherCardTokenizationData.ts @@ -0,0 +1,8 @@ +type MealVoucherCardTokenizationData = { + cardNumber?: string; + userReferenceNumber?: string; + gsmNumber?: string; + callbackUrl?: string; +}; + +export default MealVoucherCardTokenizationData; diff --git a/src/response/InitMealVoucherCardTokenizationResponse.ts b/src/response/InitMealVoucherCardTokenizationResponse.ts new file mode 100644 index 00000000..43451417 --- /dev/null +++ b/src/response/InitMealVoucherCardTokenizationResponse.ts @@ -0,0 +1,10 @@ +import ApmAdditionalAction from '../model/ApmAdditionalAction'; + +type InitMealVoucherCardTokenizationResponse = { + sessionId: string; + additionalAction: ApmAdditionalAction; + htmlContent: string; + redirectUrl: string; +}; + +export default InitMealVoucherCardTokenizationResponse; diff --git a/src/response/MealVoucherCardTokenizationCompleteResponse.ts b/src/response/MealVoucherCardTokenizationCompleteResponse.ts new file mode 100644 index 00000000..cc7b6fcb --- /dev/null +++ b/src/response/MealVoucherCardTokenizationCompleteResponse.ts @@ -0,0 +1,8 @@ +type MealVoucherCardTokenizationCompleteResponse = { + sessionId: string; + maskedCardNumber: string; + fingerprint: string; + balance: number; +}; + +export default MealVoucherCardTokenizationCompleteResponse;