diff --git a/samples/payment/CompleteBnplLimitInquiry.js b/samples/payment/CompleteBnplLimitInquiry.js new file mode 100644 index 0000000..79d2926 --- /dev/null +++ b/samples/payment/CompleteBnplLimitInquiry.js @@ -0,0 +1,18 @@ +const Craftgate = require('../../dist'); +const ApmType = require('../../src/model/ApmType'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +craftgate.payment().bnplLimitInquiry({ + apmType: ApmType.Zip, + additionalParams: { + buyerPhoneNumber: '+905320000000', + otpCode: '123456' + } +}) + .then(results => console.info('Complete BNPL limit inquiry response ', results)) + .catch(err => console.error('Failed to complete BNPL limit inquiry', err)); diff --git a/samples/payment/InitBnplLimitInquiry.js b/samples/payment/InitBnplLimitInquiry.js new file mode 100644 index 0000000..c056d7b --- /dev/null +++ b/samples/payment/InitBnplLimitInquiry.js @@ -0,0 +1,19 @@ +const Craftgate = require('../../dist'); +const ApmType = require('../../src/model/ApmType'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +craftgate.payment().bnplLimitInquiryInit({ + apmType: ApmType.Zip, + additionalParams: { + buyerPhoneNumber: '5320000000', + buyerIdentityNumber: '11111111110', + buyerBirthdate: '1990-01-01' + } +}) + .then(results => console.info('Init BNPL limit inquiry response ', results)) + .catch(err => console.error('Failed to init BNPL limit inquiry', err)); diff --git a/src/adapter/PaymentAdapter.ts b/src/adapter/PaymentAdapter.ts index 37a0592..ada021e 100644 --- a/src/adapter/PaymentAdapter.ts +++ b/src/adapter/PaymentAdapter.ts @@ -6,6 +6,7 @@ import ApprovePaymentTransactionsRequest from '../request/ApprovePaymentTransact import BnplPaymentOfferRequest from '../request/BnplPaymentOfferRequest'; import CloneCardRequest from '../request/CloneCardRequest'; import CompleteApmPaymentRequest from '../request/CompleteApmPaymentRequest'; +import CompleteBnplLimitInquiryRequest from '../request/CompleteBnplLimitInquiryRequest'; import CompletePosApmPaymentRequest from '../request/CompletePosApmPaymentRequest'; import CompleteThreeDSPaymentRequest from '../request/CompleteThreeDSPaymentRequest'; import CreateApmPaymentRequest from '../request/CreateApmPaymentRequest'; @@ -16,6 +17,7 @@ import DeleteStoredCardRequest from '../request/DeleteStoredCardRequest'; import DisapprovePaymentTransactionsRequest from '../request/DisapprovePaymentTransactionsRequest'; import InitApmDepositPaymentRequest from '../request/InitApmDepositPaymentRequest'; import InitApmPaymentRequest from '../request/InitApmPaymentRequest'; +import InitBnplLimitInquiryRequest from '../request/InitBnplLimitInquiryRequest'; import InitBnplPaymentRequest from '../request/InitBnplPaymentRequest'; import InitCheckoutCardVerifyRequest from '../request/InitCheckoutCardVerifyRequest'; import InitCheckoutPaymentRequest from '../request/InitCheckoutPaymentRequest'; @@ -37,6 +39,7 @@ import UpdatePaymentTransactionRequest from '../request/UpdatePaymentTransaction import VerifyCardRequest from '../request/VerifyCardRequest'; import ApmDepositPaymentResponse from '../response/ApmDepositPaymentResponse'; +import BnplLimitInquiryResponse from '../response/BnplLimitInquiryResponse'; import BnplPaymentOfferResponse from '../response/BnplPaymentOfferResponse'; import BnplPaymentVerifyResponse from '../response/BnplPaymentVerifyResponse'; import CompleteApmPaymentResponse from '../response/CompleteApmPaymentResponse'; @@ -244,6 +247,14 @@ export default class PaymentAdapter extends BaseAdapter { return this._client.post(`/payment/v1/bnpl-payments/${paymentId}/verify`); } + async bnplLimitInquiryInit(request: InitBnplLimitInquiryRequest): Promise { + return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry/init`, request); + } + + async bnplLimitInquiry(request: CompleteBnplLimitInquiryRequest): Promise { + return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry`, request); + } + async retrieveActiveBanks(): Promise { return this._client.get(`/payment/v1/instant-transfer-banks`); } diff --git a/src/model/ApmType.ts b/src/model/ApmType.ts index 5174f43..6ad8997 100644 --- a/src/model/ApmType.ts +++ b/src/model/ApmType.ts @@ -32,7 +32,8 @@ enum ApmType { PaycellDCB = 'PAYCELL_DCB', IWallet = 'IWALLET', Papel = 'PAPEL', - Paymob = 'PAYMOB' + Paymob = 'PAYMOB', + Zip = 'ZIP' } export default ApmType; diff --git a/src/request/CompleteBnplLimitInquiryRequest.ts b/src/request/CompleteBnplLimitInquiryRequest.ts new file mode 100644 index 0000000..459f2ef --- /dev/null +++ b/src/request/CompleteBnplLimitInquiryRequest.ts @@ -0,0 +1,12 @@ +import ApmType from '../model/ApmType'; + +type CompleteBnplLimitInquiryRequest = { + apmType: ApmType; + merchantApmId: number; + additionalParams: { + buyerPhoneNumber: string; + otpCode: string; + }; +}; + +export default CompleteBnplLimitInquiryRequest; diff --git a/src/request/InitBnplLimitInquiryRequest.ts b/src/request/InitBnplLimitInquiryRequest.ts new file mode 100644 index 0000000..497a10a --- /dev/null +++ b/src/request/InitBnplLimitInquiryRequest.ts @@ -0,0 +1,13 @@ +import ApmType from '../model/ApmType'; + +type InitBnplLimitInquiryRequest = { + apmType: ApmType; + merchantApmId: number; + additionalParams: { + buyerPhoneNumber: string; + buyerIdentityNumber: string; + buyerBirthdate: string; + }; +}; + +export default InitBnplLimitInquiryRequest; diff --git a/src/response/BnplLimitInquiryResponse.ts b/src/response/BnplLimitInquiryResponse.ts new file mode 100644 index 0000000..40a1392 --- /dev/null +++ b/src/response/BnplLimitInquiryResponse.ts @@ -0,0 +1,12 @@ +import ApmAdditionalAction from '../model/ApmAdditionalAction'; +import PaymentStatus from '../model/PaymentStatus'; + +type BnplLimitInquiryResponse = { + paymentStatus: PaymentStatus; + apmAdditionalAction: ApmAdditionalAction; + additionalData?: Map; + errorCode: string; + errorMessage: string; +}; + +export default BnplLimitInquiryResponse;