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/4] 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/4] 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) From 28eaecc9ea51e6d18b235856a22e45b0ae4014b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Berat=20ALLAHVERD=C4=B0?= Date: Wed, 1 Apr 2026 14:45:05 +0300 Subject: [PATCH 3/4] update --- src/main/java/io/craftgate/adapter/PaymentAdapter.java | 6 +++--- ...imitInquiryRequest.java => BnplLimitInquiryRequest.java} | 2 +- src/test/java/io/craftgate/sample/BnplPaymentSample.java | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) rename src/main/java/io/craftgate/request/{InitBnplLimitInquiryRequest.java => BnplLimitInquiryRequest.java} (89%) diff --git a/src/main/java/io/craftgate/adapter/PaymentAdapter.java b/src/main/java/io/craftgate/adapter/PaymentAdapter.java index cc5abd63..cd9178c2 100644 --- a/src/main/java/io/craftgate/adapter/PaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/PaymentAdapter.java @@ -264,13 +264,13 @@ public BnplPaymentVerifyResponse verifyBnplPayment(Long paymentId) { return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BnplPaymentVerifyResponse.class); } - public BnplLimitInquiryResponse initBnplLimitInquiry(InitBnplLimitInquiryRequest initBnplLimitInquiry) { + public BnplLimitInquiryResponse initBnplLimitInquiry(BnplLimitInquiryRequest 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"; + public BnplLimitInquiryResponse completeBnplLimitInquiry(BnplLimitInquiryRequest initBnplLimitInquiry) { + String path = "/payment/v1/bnpl-payments/limit-inquiry"; return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplLimitInquiry, path, requestOptions), BnplLimitInquiryResponse.class); } diff --git a/src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java b/src/main/java/io/craftgate/request/BnplLimitInquiryRequest.java similarity index 89% rename from src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java rename to src/main/java/io/craftgate/request/BnplLimitInquiryRequest.java index 7a8b5ff5..9c25aa3e 100644 --- a/src/main/java/io/craftgate/request/InitBnplLimitInquiryRequest.java +++ b/src/main/java/io/craftgate/request/BnplLimitInquiryRequest.java @@ -12,7 +12,7 @@ @Builder @AllArgsConstructor @NoArgsConstructor -public class InitBnplLimitInquiryRequest { +public class BnplLimitInquiryRequest { private ApmType apmType; private Long merchantApmId; diff --git a/src/test/java/io/craftgate/sample/BnplPaymentSample.java b/src/test/java/io/craftgate/sample/BnplPaymentSample.java index 8e39102d..cf3bae73 100644 --- a/src/test/java/io/craftgate/sample/BnplPaymentSample.java +++ b/src/test/java/io/craftgate/sample/BnplPaymentSample.java @@ -6,7 +6,7 @@ import io.craftgate.model.Currency; import io.craftgate.model.PaymentGroup; import io.craftgate.request.BnplPaymentOfferRequest; -import io.craftgate.request.InitBnplLimitInquiryRequest; +import io.craftgate.request.BnplLimitInquiryRequest; import io.craftgate.request.InitBnplPaymentRequest; import io.craftgate.request.dto.BnplPaymentCartItem; import io.craftgate.request.dto.PaymentItem; @@ -113,7 +113,7 @@ void init_bnpl_payment() { @Test void init_bnpl_limit_inquiry() { - InitBnplLimitInquiryRequest request = InitBnplLimitInquiryRequest.builder() + BnplLimitInquiryRequest request = BnplLimitInquiryRequest.builder() .apmType(ApmType.ZIP) .additionalParams(new HashMap() {{ put("buyerPhoneNumber", "5320000000"); @@ -128,7 +128,7 @@ void init_bnpl_limit_inquiry() { @Test void complete_bnpl_limit_inquiry() { - InitBnplLimitInquiryRequest request = InitBnplLimitInquiryRequest.builder() + BnplLimitInquiryRequest request = BnplLimitInquiryRequest.builder() .apmType(ApmType.ZIP) .additionalParams(new HashMap() {{ put("buyerPhoneNumber", "5320000000"); From 1c0ba617718b01f6eea7011ebaad4b6d9f251597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Berat=20ALLAHVERD=C4=B0?= Date: Wed, 1 Apr 2026 14:50:13 +0300 Subject: [PATCH 4/4] update --- src/main/java/io/craftgate/adapter/PaymentAdapter.java | 8 ++++---- src/test/java/io/craftgate/sample/BnplPaymentSample.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/craftgate/adapter/PaymentAdapter.java b/src/main/java/io/craftgate/adapter/PaymentAdapter.java index cd9178c2..1f5e0c87 100644 --- a/src/main/java/io/craftgate/adapter/PaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/PaymentAdapter.java @@ -264,14 +264,14 @@ public BnplPaymentVerifyResponse verifyBnplPayment(Long paymentId) { return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BnplPaymentVerifyResponse.class); } - public BnplLimitInquiryResponse initBnplLimitInquiry(BnplLimitInquiryRequest initBnplLimitInquiry) { + public BnplLimitInquiryResponse bnplLimitInquiryInit(BnplLimitInquiryRequest bnplLimitInquiryRequest) { String path = "/payment/v1/bnpl-payments/limit-inquiry/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplLimitInquiry, path, requestOptions), BnplLimitInquiryResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestOptions), BnplLimitInquiryResponse.class); } - public BnplLimitInquiryResponse completeBnplLimitInquiry(BnplLimitInquiryRequest initBnplLimitInquiry) { + public BnplLimitInquiryResponse bnplLimitInquiry(BnplLimitInquiryRequest bnplLimitInquiryRequest) { String path = "/payment/v1/bnpl-payments/limit-inquiry"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplLimitInquiry, path, requestOptions), BnplLimitInquiryResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestOptions), BnplLimitInquiryResponse.class); } public InstantTransferBanksResponse retrieveActiveBanks() { diff --git a/src/test/java/io/craftgate/sample/BnplPaymentSample.java b/src/test/java/io/craftgate/sample/BnplPaymentSample.java index cf3bae73..e2ad9f7d 100644 --- a/src/test/java/io/craftgate/sample/BnplPaymentSample.java +++ b/src/test/java/io/craftgate/sample/BnplPaymentSample.java @@ -122,7 +122,7 @@ void init_bnpl_limit_inquiry() { }}) .build(); - BnplLimitInquiryResponse response = craftgate.payment().initBnplLimitInquiry(request); + BnplLimitInquiryResponse response = craftgate.payment().bnplLimitInquiryInit(request); assertNotNull(response); } @@ -136,7 +136,7 @@ void complete_bnpl_limit_inquiry() { }}) .build(); - BnplLimitInquiryResponse response = craftgate.payment().completeBnplLimitInquiry(request); + BnplLimitInquiryResponse response = craftgate.payment().bnplLimitInquiry(request); assertNotNull(response); }