diff --git a/src/main/java/io/craftgate/model/ApmType.java b/src/main/java/io/craftgate/model/ApmType.java index e43a240..6921e7f 100644 --- a/src/main/java/io/craftgate/model/ApmType.java +++ b/src/main/java/io/craftgate/model/ApmType.java @@ -1,39 +1,47 @@ package io.craftgate.model; public enum ApmType { + // APM + AFTERPAY, + CHIPPIN, + KASPI, + KLARNA, + ISPAY, + IWALLET, PAPARA, + PAPEL, + PAYCELL, + PAYMOB, PAYONEER, - SODEXO, - SODEXO_GIFT, - EDENRED, - EDENRED_GIFT, PAYPAL, - KLARNA, - AFTERPAY, - KASPI, - INSTANT_TRANSFER, STRIPE, TOMPAY, - TOM_FINANCE, - MASLAK, - ALFABANK, - PAYCELL, - HASO, + CASH_ON_DELIVERY, + FUND_TRANSFER, + INSTANT_TRANSFER, + BIZUM, + PAYLANDS_MB_WAY, + + // FOOD & GIFT CARDS + EDENRED, + EDENRED_GIFT, METROPOL, MULTINET, MULTINET_GIFT, MULTINET_NEO_GIFT, - ISPAY, - ZIP, - VODAFONE_DCB, - CHIPPIN, - PAYMOB, - BIZUM, - PAYLANDS_MB_WAY, - PAYCELL_DCB, - IWALLET, - FUND_TRANSFER, + SODEXO, + SODEXO_GIFT, SETCARD, - PAPEL, - CASH_ON_DELIVERY + TOKENFLEX, + TOKENFLEX_GIFT, + + // BNPL + ALFABANK, + DKB, + MASLAK, + HASO, + PAYCELL_DCB, + TOM_FINANCE, + VODAFONE_DCB, + ZIP } diff --git a/src/main/java/io/craftgate/model/PaymentMethod.java b/src/main/java/io/craftgate/model/PaymentMethod.java index ff8a528..2468e96 100644 --- a/src/main/java/io/craftgate/model/PaymentMethod.java +++ b/src/main/java/io/craftgate/model/PaymentMethod.java @@ -10,6 +10,8 @@ public enum PaymentMethod { SODEXO_GIFT, EDENRED, EDENRED_GIFT, + TOKENFLEX, + TOKENFLEX_GIFT, ALIPAY, PAYPAL, KLARNA, diff --git a/src/main/java/io/craftgate/model/PaymentProvider.java b/src/main/java/io/craftgate/model/PaymentProvider.java index 39d3db9..fad838a 100644 --- a/src/main/java/io/craftgate/model/PaymentProvider.java +++ b/src/main/java/io/craftgate/model/PaymentProvider.java @@ -11,6 +11,7 @@ public enum PaymentProvider { PAYONEER, SODEXO, EDENRED, + TOKENFLEX, INSTANT_TRANSFER, ALIPAY, PAYPAL, diff --git a/src/test/java/io/craftgate/sample/PaymentSample.java b/src/test/java/io/craftgate/sample/PaymentSample.java index ccf6683..9d029de 100644 --- a/src/test/java/io/craftgate/sample/PaymentSample.java +++ b/src/test/java/io/craftgate/sample/PaymentSample.java @@ -1125,6 +1125,110 @@ void complete_edenred_apm_payment() { assertEquals(PaymentStatus.SUCCESS, response.getPaymentStatus()); } + @Test + void init_tokenflex_apm_payment() { + List items = new ArrayList<>(); + + items.add(PaymentItem.builder() + .name("item 1") + .externalId(UUID.randomUUID().toString()) + .price(BigDecimal.valueOf(0.60)) + .build()); + + items.add(PaymentItem.builder() + .name("item 2") + .externalId(UUID.randomUUID().toString()) + .price(BigDecimal.valueOf(0.40)) + .build()); + + InitApmPaymentRequest request = InitApmPaymentRequest.builder() + .apmType(ApmType.TOKENFLEX) + .price(BigDecimal.valueOf(1)) + .paidPrice(BigDecimal.valueOf(1)) + .currency(Currency.TRY) + .paymentGroup(PaymentGroup.LISTING_OR_SUBSCRIPTION) + .conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5") + .externalId("optional-externalId") + .callbackUrl("https://www.your-website.com/craftgate-apm-callback") + .additionalParams(new HashMap() {{ + put("paymentCode", "123456"); + }}) + .items(items) + .build(); + + ApmPaymentInitResponse response = craftgate.payment().initApmPayment(request); + assertNotNull(response.getPaymentId()); + assertNull(response.getRedirectUrl()); + assertEquals(PaymentStatus.WAITING, response.getPaymentStatus()); + assertEquals(ApmAdditionalAction.OTP_REQUIRED, response.getAdditionalAction()); + } + + @Test + void complete_tokenflex_apm_payment() { + CompleteApmPaymentRequest request = CompleteApmPaymentRequest.builder() + .paymentId(1L) + .additionalParams(new HashMap() {{ + put("otpCode", "784294"); + }}) + .build(); + + ApmPaymentCompleteResponse response = craftgate.payment().completeApmPayment(request); + assertNotNull(response.getPaymentId()); + assertEquals(PaymentStatus.SUCCESS, response.getPaymentStatus()); + } + + @Test + void init_tokenflex_gift_apm_payment() { + List items = new ArrayList<>(); + + items.add(PaymentItem.builder() + .name("item 1") + .externalId(UUID.randomUUID().toString()) + .price(BigDecimal.valueOf(0.60)) + .build()); + + items.add(PaymentItem.builder() + .name("item 2") + .externalId(UUID.randomUUID().toString()) + .price(BigDecimal.valueOf(0.40)) + .build()); + + InitApmPaymentRequest request = InitApmPaymentRequest.builder() + .apmType(ApmType.TOKENFLEX_GIFT) + .price(BigDecimal.valueOf(1)) + .paidPrice(BigDecimal.valueOf(1)) + .currency(Currency.TRY) + .paymentGroup(PaymentGroup.LISTING_OR_SUBSCRIPTION) + .conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5") + .externalId("optional-externalId") + .callbackUrl("https://www.your-website.com/craftgate-apm-callback") + .additionalParams(new HashMap() {{ + put("paymentCode", "123456"); + }}) + .items(items) + .build(); + + ApmPaymentInitResponse response = craftgate.payment().initApmPayment(request); + assertNotNull(response.getPaymentId()); + assertNull(response.getRedirectUrl()); + assertEquals(PaymentStatus.WAITING, response.getPaymentStatus()); + assertEquals(ApmAdditionalAction.OTP_REQUIRED, response.getAdditionalAction()); + } + + @Test + void complete_tokenflex_gift_apm_payment() { + CompleteApmPaymentRequest request = CompleteApmPaymentRequest.builder() + .paymentId(1L) + .additionalParams(new HashMap() {{ + put("otpCode", "784294"); + }}) + .build(); + + ApmPaymentCompleteResponse response = craftgate.payment().completeApmPayment(request); + assertNotNull(response.getPaymentId()); + assertEquals(PaymentStatus.SUCCESS, response.getPaymentStatus()); + } + @Test void init_paypal_apm_payment() { List items = new ArrayList<>();