From bf5216ef664f17185c976ca770db996fb2c7c18c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Berat=20ALLAHVERD=C4=B0?= Date: Thu, 5 Mar 2026 17:03:45 +0300 Subject: [PATCH 1/2] Added BNPL Limit Inquiry --- .../io/craftgate/adapter/PaymentAdapter.java | 10 ++++++ .../request/InitBnplLimitInquiryRequest.java | 20 +++++++++++ .../response/BnplLimitInquiryResponse.java | 17 ++++++++++ .../craftgate/sample/BnplPaymentSample.java | 33 ++++++++++++++++--- 4 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java create mode 100644 src/main/java/io/craftgate/response/BnplLimitInquiryResponse.java diff --git a/src/main/java/io/craftgate/adapter/PaymentAdapter.java b/src/main/java/io/craftgate/adapter/PaymentAdapter.java index cfded47e..cc5abd63 100644 --- a/src/main/java/io/craftgate/adapter/PaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/PaymentAdapter.java @@ -264,6 +264,16 @@ public BnplPaymentVerifyResponse verifyBnplPayment(Long paymentId) { return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BnplPaymentVerifyResponse.class); } + public BnplLimitInquiryResponse initBnplLimitInquiry(InitBnplLimitInquiryRequest initBnplLimitInquiry) { + String path = "/payment/v1/bnpl-payments/limit-inquiry/init"; + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplLimitInquiry, path, requestOptions), BnplLimitInquiryResponse.class); + } + + public BnplLimitInquiryResponse completeBnplLimitInquiry(InitBnplLimitInquiryRequest initBnplLimitInquiry) { + String path = "/payment/v1/bnpl-payments/limit-inquiry/complete"; + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplLimitInquiry, path, requestOptions), BnplLimitInquiryResponse.class); + } + public InstantTransferBanksResponse retrieveActiveBanks() { String path = "/payment/v1/instant-transfer-banks"; return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), diff --git a/src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java b/src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java new file mode 100644 index 00000000..7a8b5ff5 --- /dev/null +++ b/src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java @@ -0,0 +1,20 @@ +package io.craftgate.request; + +import io.craftgate.model.ApmType; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class InitBnplLimitInquiryRequest { + + private ApmType apmType; + private Long merchantApmId; + private Map additionalParams; +} diff --git a/src/main/java/io/craftgate/response/BnplLimitInquiryResponse.java b/src/main/java/io/craftgate/response/BnplLimitInquiryResponse.java new file mode 100644 index 00000000..6f5ae4ac --- /dev/null +++ b/src/main/java/io/craftgate/response/BnplLimitInquiryResponse.java @@ -0,0 +1,17 @@ +package io.craftgate.response; + +import io.craftgate.model.ApmAdditionalAction; +import io.craftgate.model.PaymentStatus; +import lombok.Data; + +import java.util.Map; + +@Data +public class BnplLimitInquiryResponse { + + private PaymentStatus paymentStatus; + private ApmAdditionalAction additionalAction; + private Map additionalData; + private String errorCode; + private String errorMessage; +} \ No newline at end of file diff --git a/src/test/java/io/craftgate/sample/BnplPaymentSample.java b/src/test/java/io/craftgate/sample/BnplPaymentSample.java index 62f4289d..71eaa98d 100644 --- a/src/test/java/io/craftgate/sample/BnplPaymentSample.java +++ b/src/test/java/io/craftgate/sample/BnplPaymentSample.java @@ -6,13 +6,11 @@ import io.craftgate.model.Currency; import io.craftgate.model.PaymentGroup; import io.craftgate.request.BnplPaymentOfferRequest; +import io.craftgate.request.InitBnplLimitInquiryRequest; import io.craftgate.request.InitBnplPaymentRequest; import io.craftgate.request.dto.BnplPaymentCartItem; import io.craftgate.request.dto.PaymentItem; -import io.craftgate.response.BnplPaymentOfferResponse; -import io.craftgate.response.BnplPaymentVerifyResponse; -import io.craftgate.response.InitBnplPaymentResponse; -import io.craftgate.response.PaymentResponse; +import io.craftgate.response.*; import io.craftgate.response.dto.BnplBankOffer; import org.junit.jupiter.api.Test; @@ -113,6 +111,33 @@ void init_bnpl_payment() { assertNotNull(response.getRedirectUrl()); } + void init_bnpl_limit_inquiry() { + InitBnplLimitInquiryRequest request = InitBnplLimitInquiryRequest.builder() + .apmType(ApmType.ZIP) + .additionalParams(new HashMap() {{ + put("buyerPhoneNumber", "5320000000"); + put("buyerIdentityNumber", "11111111110"); + put("buyerBirthdate", "1990-01-01"); + }}) + .build(); + + BnplLimitInquiryResponse response = craftgate.payment().initBnplLimitInquiry(request); + assertNotNull(response); + } + + void complete_bnpl_limit_inquiry() { + InitBnplLimitInquiryRequest request = InitBnplLimitInquiryRequest.builder() + .apmType(ApmType.ZIP) + .additionalParams(new HashMap() {{ + put("buyerPhoneNumber", "5320000000"); + put("otpCode", "123456"); + }}) + .build(); + + BnplLimitInquiryResponse response = craftgate.payment().completeBnplLimitInquiry(request); + assertNotNull(response); + } + @Test void init_tom_finance_bnpl_payment() { BigDecimal price = new BigDecimal("100"); From 5c4a93f075de49b047d2f723719b44949f26e709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Berat=20ALLAHVERD=C4=B0?= Date: Thu, 5 Mar 2026 17:04:10 +0300 Subject: [PATCH 2/2] update --- src/test/java/io/craftgate/sample/BnplPaymentSample.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/io/craftgate/sample/BnplPaymentSample.java b/src/test/java/io/craftgate/sample/BnplPaymentSample.java index 71eaa98d..8e39102d 100644 --- a/src/test/java/io/craftgate/sample/BnplPaymentSample.java +++ b/src/test/java/io/craftgate/sample/BnplPaymentSample.java @@ -111,6 +111,7 @@ void init_bnpl_payment() { assertNotNull(response.getRedirectUrl()); } + @Test void init_bnpl_limit_inquiry() { InitBnplLimitInquiryRequest request = InitBnplLimitInquiryRequest.builder() .apmType(ApmType.ZIP) @@ -125,6 +126,7 @@ void init_bnpl_limit_inquiry() { assertNotNull(response); } + @Test void complete_bnpl_limit_inquiry() { InitBnplLimitInquiryRequest request = InitBnplLimitInquiryRequest.builder() .apmType(ApmType.ZIP)