From 6baf93482297ae92fd7c83fc2301cec3589381aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Berat=20ALLAHVERD=C4=B0?= Date: Thu, 5 Mar 2026 16:52:23 +0300 Subject: [PATCH 1/2] Added limit inquiry --- samples/payment/CompleteBnplLimitInquiry.js | 18 ++++++++++++++++++ samples/payment/InitBnplLimitInquiry.js | 19 +++++++++++++++++++ src/adapter/PaymentAdapter.ts | 11 +++++++++++ src/model/ApmType.ts | 3 ++- .../CompleteBnplLimitInquiryRequest.ts | 12 ++++++++++++ src/request/InitBnplLimitInquiryRequest.ts | 13 +++++++++++++ src/response/BnplLimitInquiryResponse.ts | 12 ++++++++++++ 7 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 samples/payment/CompleteBnplLimitInquiry.js create mode 100644 samples/payment/InitBnplLimitInquiry.js create mode 100644 src/request/CompleteBnplLimitInquiryRequest.ts create mode 100644 src/request/InitBnplLimitInquiryRequest.ts create mode 100644 src/response/BnplLimitInquiryResponse.ts diff --git a/samples/payment/CompleteBnplLimitInquiry.js b/samples/payment/CompleteBnplLimitInquiry.js new file mode 100644 index 0000000..e95ef42 --- /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().completeBnplLimitInquiry({ + 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..d653b75 --- /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().initBnplLimitInquiry({ + 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 a1cf8d3..35fc484 100644 --- a/src/adapter/PaymentAdapter.ts +++ b/src/adapter/PaymentAdapter.ts @@ -59,6 +59,9 @@ import StoredCardResponse from '../response/StoredCardResponse'; import WaitingPaymentRefundResponse from '../response/WaitingPaymentRefundResponse'; import BaseAdapter from './BaseAdapter'; +import InitBnplLimitInquiryRequest from '../request/InitBnplLimitInquiryRequest'; +import BnplLimitInquiryResponse from '../response/BnplLimitInquiryResponse'; +import CompleteBnplLimitInquiryRequest from '../request/CompleteBnplLimitInquiryRequest'; export default class PaymentAdapter extends BaseAdapter { constructor(options: ClientCreationOptions) { @@ -225,6 +228,14 @@ export default class PaymentAdapter extends BaseAdapter { return this._client.post(`/payment/v1/bnpl-payments/${paymentId}/verify`); } + async initBnplLimitInquiry(request: InitBnplLimitInquiryRequest): Promise { + return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry/init`, request); + } + + async completeBnplLimitInquiry(request: CompleteBnplLimitInquiryRequest): Promise { + return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry/complete`, 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; From 7561261e6d64b82c89e6f8ab3b2de82dae2c78a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Berat=20ALLAHVERD=C4=B0?= Date: Wed, 1 Apr 2026 15:07:29 +0300 Subject: [PATCH 2/2] update --- samples/payment/CompleteBnplLimitInquiry.js | 2 +- samples/payment/InitBnplLimitInquiry.js | 2 +- src/adapter/PaymentAdapter.ts | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/payment/CompleteBnplLimitInquiry.js b/samples/payment/CompleteBnplLimitInquiry.js index e95ef42..79d2926 100644 --- a/samples/payment/CompleteBnplLimitInquiry.js +++ b/samples/payment/CompleteBnplLimitInquiry.js @@ -7,7 +7,7 @@ const craftgate = new Craftgate.Client({ baseUrl: 'https://sandbox-api.craftgate.io' }); -craftgate.payment().completeBnplLimitInquiry({ +craftgate.payment().bnplLimitInquiry({ apmType: ApmType.Zip, additionalParams: { buyerPhoneNumber: '+905320000000', diff --git a/samples/payment/InitBnplLimitInquiry.js b/samples/payment/InitBnplLimitInquiry.js index d653b75..c056d7b 100644 --- a/samples/payment/InitBnplLimitInquiry.js +++ b/samples/payment/InitBnplLimitInquiry.js @@ -7,7 +7,7 @@ const craftgate = new Craftgate.Client({ baseUrl: 'https://sandbox-api.craftgate.io' }); -craftgate.payment().initBnplLimitInquiry({ +craftgate.payment().bnplLimitInquiryInit({ apmType: ApmType.Zip, additionalParams: { buyerPhoneNumber: '5320000000', diff --git a/src/adapter/PaymentAdapter.ts b/src/adapter/PaymentAdapter.ts index 35fc484..fca783d 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 InitCheckoutPaymentRequest from '../request/InitCheckoutPaymentRequest'; import InitGarantiPayPaymentRequest from '../request/InitGarantiPayPaymentRequest'; @@ -34,6 +36,7 @@ import UpdateCardRequest from '../request/UpdateCardRequest'; import UpdatePaymentTransactionRequest from '../request/UpdatePaymentTransactionRequest'; 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'; @@ -59,9 +62,6 @@ import StoredCardResponse from '../response/StoredCardResponse'; import WaitingPaymentRefundResponse from '../response/WaitingPaymentRefundResponse'; import BaseAdapter from './BaseAdapter'; -import InitBnplLimitInquiryRequest from '../request/InitBnplLimitInquiryRequest'; -import BnplLimitInquiryResponse from '../response/BnplLimitInquiryResponse'; -import CompleteBnplLimitInquiryRequest from '../request/CompleteBnplLimitInquiryRequest'; export default class PaymentAdapter extends BaseAdapter { constructor(options: ClientCreationOptions) { @@ -228,12 +228,12 @@ export default class PaymentAdapter extends BaseAdapter { return this._client.post(`/payment/v1/bnpl-payments/${paymentId}/verify`); } - async initBnplLimitInquiry(request: InitBnplLimitInquiryRequest): Promise { + async bnplLimitInquiryInit(request: InitBnplLimitInquiryRequest): Promise { return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry/init`, request); } - async completeBnplLimitInquiry(request: CompleteBnplLimitInquiryRequest): Promise { - return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry/complete`, request); + async bnplLimitInquiry(request: CompleteBnplLimitInquiryRequest): Promise { + return this._client.post(`/payment/v1/bnpl-payments/limit-inquiry`, request); } async retrieveActiveBanks(): Promise {