From f806eb8a1c40aa7bc2d6a9136ffaff8311e9ac60 Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Wed, 22 Apr 2026 16:52:28 +0300 Subject: [PATCH 1/5] Add Card Tokenization Regenerate and Complete Implementations --- .../MealVoucherCardTokenizationAdapter.java | 16 +++++++++ .../request/InitApmPaymentRequest.java | 2 +- .../request/InitBkmExpressRequest.java | 8 ++--- ...oucherCardTokenizationCompleteRequest.java | 12 +++++++ ...ucherCardTokenizationCompleteResponse.java | 14 ++++++++ ...cherCardTokenizationRegenerateRequest.java | 13 +++++++ .../request/common/HashGenerator.java | 3 -- .../craftgate/request/dto/EncryptedCard.java | 2 -- .../dto/MealVoucherCardTokenizationData.java | 3 +- ...herCardTokenizationRegenerateResponse.java | 17 ++++++++++ .../craftgate/sample/BnplPaymentSample.java | 2 +- .../MealVoucherCardTokenizationSample.java | 34 ++++++++++++++++++- .../io/craftgate/sample/PaymentSample.java | 24 ++++++------- 13 files changed, 125 insertions(+), 25 deletions(-) create mode 100644 src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java create mode 100644 src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java create mode 100644 src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java create mode 100644 src/main/java/io/craftgate/response/MealVoucherCardTokenizationRegenerateResponse.java diff --git a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java index 68325fb9..9644a774 100644 --- a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java +++ b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java @@ -1,9 +1,13 @@ package io.craftgate.adapter; import io.craftgate.net.HttpClient; +import io.craftgate.request.MealVoucherCardTokenizationCompleteRequest; +import io.craftgate.request.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; +import io.craftgate.request.MealVoucherCardTokenizationRegenerateRequest; import io.craftgate.request.common.RequestOptions; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; +import io.craftgate.response.MealVoucherCardTokenizationRegenerateResponse; public class MealVoucherCardTokenizationAdapter extends BaseAdapter { @@ -16,4 +20,16 @@ public MealVoucherCardTokenizationInitResponse cardTokenizationInit(MealVoucherC return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(mealVoucherCardTokenizationInitRequest, path, requestOptions), mealVoucherCardTokenizationInitRequest, MealVoucherCardTokenizationInitResponse.class); } + + public MealVoucherCardTokenizationRegenerateResponse cardTokenizationRegenerate(String sessionId, MealVoucherCardTokenizationRegenerateRequest mealVoucherCardTokenizationRegenerateRequest) { + String path = "/payment/v1/meal-voucher/card-tokenizations/" + sessionId + "/regenerate"; + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(mealVoucherCardTokenizationRegenerateRequest, path, requestOptions), + mealVoucherCardTokenizationRegenerateRequest, MealVoucherCardTokenizationRegenerateResponse.class); + } + + public MealVoucherCardTokenizationCompleteResponse cardTokenizationComplete(String sessionId, MealVoucherCardTokenizationCompleteRequest request) { + String path = "/payment/v1/meal-voucher/card-tokenizations/" + sessionId + "/complete"; + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + request, MealVoucherCardTokenizationCompleteResponse.class); + } } \ No newline at end of file diff --git a/src/main/java/io/craftgate/request/InitApmPaymentRequest.java b/src/main/java/io/craftgate/request/InitApmPaymentRequest.java index 9c5aa487..c6128f29 100644 --- a/src/main/java/io/craftgate/request/InitApmPaymentRequest.java +++ b/src/main/java/io/craftgate/request/InitApmPaymentRequest.java @@ -31,7 +31,7 @@ public class InitApmPaymentRequest extends BaseRequest { private String callbackUrl; private String apmOrderId; private String apmUserIdentity; - private Map additionalParams; + private Map additionalParams; private String clientIp; private List items; } \ No newline at end of file diff --git a/src/main/java/io/craftgate/request/InitBkmExpressRequest.java b/src/main/java/io/craftgate/request/InitBkmExpressRequest.java index b532076f..7a9fcc84 100644 --- a/src/main/java/io/craftgate/request/InitBkmExpressRequest.java +++ b/src/main/java/io/craftgate/request/InitBkmExpressRequest.java @@ -3,14 +3,14 @@ import io.craftgate.model.Currency; import io.craftgate.model.PaymentGroup; import io.craftgate.model.PaymentPhase; +import io.craftgate.request.common.BaseRequest; import io.craftgate.request.dto.PaymentItem; -import lombok.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.SuperBuilder; import java.math.BigDecimal; import java.util.List; -import lombok.experimental.SuperBuilder; -import lombok.EqualsAndHashCode; -import io.craftgate.request.common.BaseRequest; @Data @SuperBuilder diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java new file mode 100644 index 00000000..559e4ab8 --- /dev/null +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java @@ -0,0 +1,12 @@ +package io.craftgate.request; + +import io.craftgate.request.common.BaseRequest; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class MealVoucherCardTokenizationCompleteRequest extends BaseRequest { + + private String validationCode; +} diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java new file mode 100644 index 00000000..cb8fadd2 --- /dev/null +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java @@ -0,0 +1,14 @@ +package io.craftgate.request; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class MealVoucherCardTokenizationCompleteResponse { + + private String sessionId; + private String maskedCardNumber; + private String fingerprint; + private BigDecimal balance; +} diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java new file mode 100644 index 00000000..c87a7582 --- /dev/null +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java @@ -0,0 +1,13 @@ +package io.craftgate.request; + +import io.craftgate.request.common.BaseRequest; +import io.craftgate.request.dto.MealVoucherCardTokenizationData; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class MealVoucherCardTokenizationRegenerateRequest extends BaseRequest { + + private MealVoucherCardTokenizationData mealVoucherCardTokenizationData; +} diff --git a/src/main/java/io/craftgate/request/common/HashGenerator.java b/src/main/java/io/craftgate/request/common/HashGenerator.java index 63089681..435081bb 100644 --- a/src/main/java/io/craftgate/request/common/HashGenerator.java +++ b/src/main/java/io/craftgate/request/common/HashGenerator.java @@ -1,15 +1,12 @@ package io.craftgate.request.common; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonDeserializer; import io.craftgate.exception.CraftgateException; import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.digest.DigestUtils; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; public final class HashGenerator { diff --git a/src/main/java/io/craftgate/request/dto/EncryptedCard.java b/src/main/java/io/craftgate/request/dto/EncryptedCard.java index 155ecd49..eaf19e65 100644 --- a/src/main/java/io/craftgate/request/dto/EncryptedCard.java +++ b/src/main/java/io/craftgate/request/dto/EncryptedCard.java @@ -1,10 +1,8 @@ package io.craftgate.request.dto; -import io.craftgate.model.TokenizedCardType; import lombok.Builder; import lombok.Data; -import java.util.Map; @Data @Builder public class EncryptedCard { diff --git a/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java b/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java index 9d190871..7b764214 100644 --- a/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java +++ b/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java @@ -31,10 +31,11 @@ public static MealVoucherCardTokenizationData buildForSetcard(String callbackUrl .build(); } - public static MealVoucherCardTokenizationData buildForMetropol(String userReferenceNumber, String cardNumber ){ + public static MealVoucherCardTokenizationData buildForMetropol(String userReferenceNumber, String cardNumber, String gsmNumber){ return MealVoucherCardTokenizationData.builder() .userReferenceNumber(userReferenceNumber) .cardNumber(cardNumber) + .gsmNumber(gsmNumber) .build(); } diff --git a/src/main/java/io/craftgate/response/MealVoucherCardTokenizationRegenerateResponse.java b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationRegenerateResponse.java new file mode 100644 index 00000000..6282d5e3 --- /dev/null +++ b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationRegenerateResponse.java @@ -0,0 +1,17 @@ +package io.craftgate.response; + +import io.craftgate.model.ApmAdditionalAction; +import lombok.*; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class MealVoucherCardTokenizationRegenerateResponse { + + private ApmAdditionalAction additionalAction; + private String sessionId; + private String htmlContent; + private String redirectUrl; +} diff --git a/src/test/java/io/craftgate/sample/BnplPaymentSample.java b/src/test/java/io/craftgate/sample/BnplPaymentSample.java index c990894e..1952346a 100644 --- a/src/test/java/io/craftgate/sample/BnplPaymentSample.java +++ b/src/test/java/io/craftgate/sample/BnplPaymentSample.java @@ -146,7 +146,7 @@ void complete_bnpl_limit_inquiry() { void init_tom_finance_bnpl_payment() { BigDecimal price = new BigDecimal("100"); - Map additionalParams = new HashMap<>(); + Map additionalParams = new HashMap<>(); additionalParams.put("buyerName", "John Doe"); additionalParams.put("buyerPhoneNumber", "5551112233"); diff --git a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java index 3b939484..36911b02 100644 --- a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java +++ b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java @@ -3,9 +3,13 @@ import io.craftgate.Craftgate; import io.craftgate.model.ApmAdditionalAction; import io.craftgate.model.ApmType; +import io.craftgate.request.MealVoucherCardTokenizationCompleteRequest; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; +import io.craftgate.request.MealVoucherCardTokenizationRegenerateRequest; +import io.craftgate.request.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.request.dto.MealVoucherCardTokenizationData; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; +import io.craftgate.response.MealVoucherCardTokenizationRegenerateResponse; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -13,7 +17,7 @@ public class MealVoucherCardTokenizationSample { - private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); + private final Craftgate craftgate = new Craftgate("api-key-2", "secret-key", "http://localhost:8000"); @Test void init_meal_voucher_card_tokenization() { @@ -28,4 +32,32 @@ void init_meal_voucher_card_tokenization() { assertNotNull(response.getSessionId()); assertEquals(ApmAdditionalAction.SHOW_HTML_CONTENT, response.getAdditionalAction()); } + + @Test + void regenerate_meal_voucher_card_tokenization() { + String sessionId = "session-id"; + MealVoucherCardTokenizationRegenerateRequest request = MealVoucherCardTokenizationRegenerateRequest.builder() + .mealVoucherCardTokenizationData(MealVoucherCardTokenizationData.buildForMetropol("6375780115068760", "5556667788")) + .build(); + + MealVoucherCardTokenizationRegenerateResponse response = craftgate.mealVoucherCardTokenizationAdapter().cardTokenizationRegenerate(sessionId, request); + + assertNotNull(response.getSessionId()); + assertEquals(ApmAdditionalAction.OTP_REQUIRED, response.getAdditionalAction()); + } + + @Test + void complete_meal_voucher_card_tokenization() { + String sessionId = "session-id"; + MealVoucherCardTokenizationCompleteRequest request = MealVoucherCardTokenizationCompleteRequest.builder() + .validationCode("123456") + .build(); + + MealVoucherCardTokenizationCompleteResponse response = craftgate.mealVoucherCardTokenizationAdapter().cardTokenizationComplete(sessionId, request); + + assertNotNull(response.getSessionId()); + assertNotNull(response.getMaskedCardNumber()); + assertNotNull(response.getFingerprint()); + assertNotNull(response.getBalance()); + } } diff --git a/src/test/java/io/craftgate/sample/PaymentSample.java b/src/test/java/io/craftgate/sample/PaymentSample.java index 32d1df09..c2e7f1dc 100644 --- a/src/test/java/io/craftgate/sample/PaymentSample.java +++ b/src/test/java/io/craftgate/sample/PaymentSample.java @@ -1105,7 +1105,7 @@ void init_sodexo_apm_payment() { .callbackUrl("https://www.your-website.com/craftgate-apm-callback") .apmUserIdentity("5555555555") .items(items) - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("sodexoCode", "843195"); }}) .build(); @@ -1192,7 +1192,7 @@ void init_tokenflex_apm_payment() { .conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5") .externalId("optional-externalId") .callbackUrl("https://www.your-website.com/craftgate-apm-callback") - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("paymentCode", "123456"); }}) .items(items) @@ -1244,7 +1244,7 @@ void init_tokenflex_gift_apm_payment() { .conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5") .externalId("optional-externalId") .callbackUrl("https://www.your-website.com/craftgate-apm-callback") - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("paymentCode", "123456"); }}) .items(items) @@ -1331,7 +1331,7 @@ void init_iwallet_apm_payment() { .conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5") .externalId("optional-externalId") .callbackUrl("https://www.your-website.com/craftgate-apm-callback") - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("cardNumber", "1111222233334444"); }}) .items(items) @@ -1374,7 +1374,7 @@ void init_klarna_apm_payment() { .price(BigDecimal.valueOf(0.40)) .build()); - Map additionalParams = new HashMap<>(); + Map additionalParams = new HashMap<>(); additionalParams.put("country", "de"); additionalParams.put("locale", "en-DE"); @@ -1452,7 +1452,7 @@ void init_metropol_apm_payment() { .conversationId("myConversationId") .externalId("optional-externalId") .items(items) - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("cardNumber", "6375780115068760"); }}) .build(); @@ -1541,7 +1541,7 @@ void init_tompay_apm_payment() { .externalId("externalId") .callbackUrl("https://www.your-website.com/craftgate-apm-callback") .items(items) - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("channel", "channel"); put("phone", "5001112233"); }}) @@ -1604,7 +1604,7 @@ void init_bizum_apm_payment() { .price(BigDecimal.valueOf(0.4)) .build()); - Map additionalParams = new HashMap<>(); + Map additionalParams = new HashMap<>(); additionalParams.put("buyerPhoneNumber", "34700000000"); InitApmPaymentRequest request = InitApmPaymentRequest.builder() @@ -1641,7 +1641,7 @@ void init_mbway_apm_payment() { .price(BigDecimal.valueOf(0.4)) .build()); - Map additionalParams = new HashMap<>(); + Map additionalParams = new HashMap<>(); additionalParams.put("buyerPhoneNumber", "34700000000"); InitApmPaymentRequest request = InitApmPaymentRequest.builder() @@ -1678,7 +1678,7 @@ void init_paycell_dcb_apm_payment() { .price(BigDecimal.valueOf(0.4)) .build()); - Map additionalParams = new HashMap<>(); + Map additionalParams = new HashMap<>(); additionalParams.put("paycellGsmNumber", "5305289290"); InitApmPaymentRequest request = InitApmPaymentRequest.builder() @@ -1721,7 +1721,7 @@ void init_paymob_apm_payment() { .externalId("externalId") .callbackUrl("https://www.your-website.com/craftgate-apm-callback") .items(items) - .additionalParams(new HashMap() {{ + .additionalParams(new HashMap() {{ put("integrationId", "11223344"); }}) .build(); @@ -1822,7 +1822,7 @@ void init_setcard_apm_payment() { .price(BigDecimal.valueOf(0.4)) .build()); - Map additionalParams = new HashMap<>(); + Map additionalParams = new HashMap<>(); additionalParams.put("cardNumber", "7599640961180814"); InitApmPaymentRequest request = InitApmPaymentRequest.builder() From 48f83401fbab0f82ea15c442d13b17352cb9acfe Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Thu, 6 Aug 2026 11:06:19 +0300 Subject: [PATCH 2/5] Add builder methods for various meal voucher card providers --- .../dto/MealVoucherCardTokenizationData.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java b/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java index 7b764214..c1ab5f04 100644 --- a/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java +++ b/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java @@ -25,6 +25,25 @@ public static MealVoucherCardTokenizationData buildForMultinet(String userRefere .build(); } + public static MealVoucherCardTokenizationData buildForMultinet(String callbackUrl) { + return MealVoucherCardTokenizationData.builder() + .callbackUrl(callbackUrl) + .build(); + } + + public static MealVoucherCardTokenizationData buildForEdenred(String userReferenceNumber, String callbackUrl) { + return MealVoucherCardTokenizationData.builder() + .userReferenceNumber(userReferenceNumber) + .callbackUrl(callbackUrl) + .build(); + } + + public static MealVoucherCardTokenizationData buildForEdenred(String callbackUrl) { + return MealVoucherCardTokenizationData.builder() + .callbackUrl(callbackUrl) + .build(); + } + public static MealVoucherCardTokenizationData buildForSetcard(String callbackUrl){ return MealVoucherCardTokenizationData.builder() .callbackUrl(callbackUrl) @@ -39,9 +58,23 @@ public static MealVoucherCardTokenizationData buildForMetropol(String userRefere .build(); } + public static MealVoucherCardTokenizationData buildForMetropol(String cardNumber, String gsmNumber) { + return MealVoucherCardTokenizationData.builder() + .cardNumber(cardNumber) + .gsmNumber(gsmNumber) + .build(); + } + public static MealVoucherCardTokenizationData buildForPluxee(String callbackUrl){ return MealVoucherCardTokenizationData.builder() .callbackUrl(callbackUrl) .build(); } + + public static MealVoucherCardTokenizationData buildForTokenflex(String callbackUrl) { + return MealVoucherCardTokenizationData.builder() + .callbackUrl(callbackUrl) + .build(); + } + } \ No newline at end of file From aedf7f9e43d5b0fa2b4c18d045e4497d0696c917 Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Thu, 6 Aug 2026 11:11:55 +0300 Subject: [PATCH 3/5] Refactor meal voucher card tokenization requests to use @SuperBuilder and improve class hierarchy with @EqualsAndHashCode --- .../request/MealVoucherCardTokenizationCompleteRequest.java | 6 ++++-- .../MealVoucherCardTokenizationRegenerateRequest.java | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java index 559e4ab8..4269c5b3 100644 --- a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteRequest.java @@ -1,11 +1,13 @@ package io.craftgate.request; import io.craftgate.request.common.BaseRequest; -import lombok.Builder; import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.SuperBuilder; @Data -@Builder +@EqualsAndHashCode(callSuper = false) +@SuperBuilder public class MealVoucherCardTokenizationCompleteRequest extends BaseRequest { private String validationCode; diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java index c87a7582..1c06fd5c 100644 --- a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationRegenerateRequest.java @@ -2,11 +2,13 @@ import io.craftgate.request.common.BaseRequest; import io.craftgate.request.dto.MealVoucherCardTokenizationData; -import lombok.Builder; import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.SuperBuilder; @Data -@Builder +@EqualsAndHashCode(callSuper = false) +@SuperBuilder public class MealVoucherCardTokenizationRegenerateRequest extends BaseRequest { private MealVoucherCardTokenizationData mealVoucherCardTokenizationData; From bf3655dc72b992eded4d360b0f19196135e57c40 Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Thu, 6 Aug 2026 11:17:27 +0300 Subject: [PATCH 4/5] Update MealVoucherCardTokenizationSample with sandbox API URL and fix import order --- .../craftgate/sample/MealVoucherCardTokenizationSample.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java index 36911b02..10885fe0 100644 --- a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java +++ b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java @@ -4,9 +4,9 @@ import io.craftgate.model.ApmAdditionalAction; import io.craftgate.model.ApmType; import io.craftgate.request.MealVoucherCardTokenizationCompleteRequest; +import io.craftgate.request.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; import io.craftgate.request.MealVoucherCardTokenizationRegenerateRequest; -import io.craftgate.request.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.request.dto.MealVoucherCardTokenizationData; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; import io.craftgate.response.MealVoucherCardTokenizationRegenerateResponse; @@ -17,7 +17,7 @@ public class MealVoucherCardTokenizationSample { - private final Craftgate craftgate = new Craftgate("api-key-2", "secret-key", "http://localhost:8000"); + private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); @Test void init_meal_voucher_card_tokenization() { From 4b26ca0db2152afcb73a95476d8982a5ca93fd6e Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Thu, 6 Aug 2026 11:30:46 +0300 Subject: [PATCH 5/5] Fix incorrect package declaration and update import paths for MealVoucherCardTokenizationCompleteResponse --- .../craftgate/adapter/MealVoucherCardTokenizationAdapter.java | 2 +- .../MealVoucherCardTokenizationCompleteResponse.java | 2 +- .../io/craftgate/sample/MealVoucherCardTokenizationSample.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename src/main/java/io/craftgate/{request => response}/MealVoucherCardTokenizationCompleteResponse.java (89%) diff --git a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java index 9644a774..dc3c55dd 100644 --- a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java +++ b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java @@ -2,10 +2,10 @@ import io.craftgate.net.HttpClient; import io.craftgate.request.MealVoucherCardTokenizationCompleteRequest; -import io.craftgate.request.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; import io.craftgate.request.MealVoucherCardTokenizationRegenerateRequest; import io.craftgate.request.common.RequestOptions; +import io.craftgate.response.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; import io.craftgate.response.MealVoucherCardTokenizationRegenerateResponse; diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationCompleteResponse.java similarity index 89% rename from src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java rename to src/main/java/io/craftgate/response/MealVoucherCardTokenizationCompleteResponse.java index cb8fadd2..987cfe98 100644 --- a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationCompleteResponse.java +++ b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationCompleteResponse.java @@ -1,4 +1,4 @@ -package io.craftgate.request; +package io.craftgate.response; import lombok.Data; diff --git a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java index 10885fe0..32470ce5 100644 --- a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java +++ b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java @@ -4,10 +4,10 @@ import io.craftgate.model.ApmAdditionalAction; import io.craftgate.model.ApmType; import io.craftgate.request.MealVoucherCardTokenizationCompleteRequest; -import io.craftgate.request.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; import io.craftgate.request.MealVoucherCardTokenizationRegenerateRequest; import io.craftgate.request.dto.MealVoucherCardTokenizationData; +import io.craftgate.response.MealVoucherCardTokenizationCompleteResponse; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; import io.craftgate.response.MealVoucherCardTokenizationRegenerateResponse; import org.junit.jupiter.api.Test;