diff --git a/samples/payment/RetrieveCardFromIVR.js b/samples/payment/RetrieveCardFromIVR.js new file mode 100644 index 0000000..fc99c45 --- /dev/null +++ b/samples/payment/RetrieveCardFromIVR.js @@ -0,0 +1,17 @@ +const Craftgate = require('../../dist'); +const RetrieveCardFromIvrRequest = require('../../src/request/RetrieveCardFromIvrRequest'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +const request = { + cardUserKey: '45f12c74-3000-465c-96dc-876850e7dd7a', + callToken: "0309ac2d-c5a5-4b4f-a91f-5c444ba07b24" +}; + +craftgate.payment().retrieveCardFromIvr(request) + .then(result => console.info('Retrieve card from ivr', result)) + .catch(err => console.error('Failed to retrieve card from ivr', err)); diff --git a/src/adapter/PaymentAdapter.ts b/src/adapter/PaymentAdapter.ts index ada021e..7e10107 100644 --- a/src/adapter/PaymentAdapter.ts +++ b/src/adapter/PaymentAdapter.ts @@ -30,6 +30,7 @@ import RefundPaymentRequest from '../request/RefundPaymentRequest'; import RefundPaymentTransactionMarkAsRefundedRequest from '../request/RefundPaymentTransactionMarkAsRefundedRequest'; import RefundPaymentTransactionRequest from '../request/RefundPaymentTransactionRequest'; import RefundWaitingPaymentRequest from '../request/RefundWaitingPaymentRequest'; +import RetrieveCardFromIvrRequest from '../request/RetrieveCardFromIvrRequest'; import RetrieveLoyaltiesRequest from '../request/RetrieveLoyaltiesRequest'; import RetrieveProviderCardRequest from '../request/RetrieveProviderCardRequest'; import SearchStoredCardsRequest from '../request/SearchStoredCardsRequest'; @@ -55,6 +56,7 @@ import InitMultiPaymentResponse from '../response/InitMultipaymentPaymentRespons import InitPosApmPaymentResponse from '../response/InitPosApmPaymentResponse'; import InitThreeDSPaymentResponse from '../response/InitThreeDSPaymentResponse'; import InstantTransferBanksResponse from '../response/InstantTransferBanksResponse'; +import IVRCardTokenizationResponse from '../response/IVRCardTokenizationResponse'; import MultiPaymentResponse from '../response/MultiPaymentResponse'; import PaymentRefundResponse from '../response/PaymentRefundResponse'; import PaymentResponse from '../response/PaymentResponse'; @@ -271,6 +273,10 @@ export default class PaymentAdapter extends BaseAdapter { return this._client.get('/payment/v1/cards/provider-card-mappings', request); } + async retrieveCardFromIvr(request: RetrieveCardFromIvrRequest): Promise { + return this._client.get('/payment/v1/ivr-cards', request); + } + async is3DSecureCallbackVerified(threeDSecureCallbackKey: string, params: Map): Promise { const hash = params['hash']; const hashString: string = [ diff --git a/src/request/RetrieveCardFromIvrRequest.ts b/src/request/RetrieveCardFromIvrRequest.ts new file mode 100644 index 0000000..2703dac --- /dev/null +++ b/src/request/RetrieveCardFromIvrRequest.ts @@ -0,0 +1,6 @@ +type RetrieveCardFromIvrRequest = { + callToken: string; + cardUserKey: string; +}; + +export default RetrieveCardFromIvrRequest; diff --git a/src/response/IVRCardTokenizationResponse.ts b/src/response/IVRCardTokenizationResponse.ts new file mode 100644 index 0000000..bf9c629 --- /dev/null +++ b/src/response/IVRCardTokenizationResponse.ts @@ -0,0 +1,9 @@ +type IVRCardTokenizationResponse = { + binNumber: string; + lastFourDigits: string; + cardUserKey: string; + cardToken: string; + secureFieldsToken: string; +}; + +export default IVRCardTokenizationResponse;