From 36ae0457b888e4d895ed6d93152086400977bfe7 Mon Sep 17 00:00:00 2001 From: Serhat Tunca Date: Mon, 20 Apr 2026 17:03:15 +0300 Subject: [PATCH] Refactor meal voucher card tokenization to use MealVoucherCardTokenizationData class --- ...ealVoucherCardTokenizationInitRequest.java | 4 +- .../dto/MealVoucherCardTokenizationData.java | 46 +++++++++++++++++++ ...alVoucherCardTokenizationInitResponse.java | 10 ++-- .../MealVoucherCardTokenizationSample.java | 11 ++--- 4 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java index bae7126..c7e6eb9 100644 --- a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java @@ -1,6 +1,7 @@ package io.craftgate.request; import io.craftgate.model.ApmType; +import io.craftgate.request.dto.MealVoucherCardTokenizationData; import lombok.Builder; import lombok.Data; @@ -9,6 +10,5 @@ public class MealVoucherCardTokenizationInitRequest { private ApmType apmType; - private String mealVoucherIdentifier; - private String callbackUrl; + private MealVoucherCardTokenizationData mealVoucherCardTokenizationData; } diff --git a/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java b/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java new file mode 100644 index 0000000..9d19087 --- /dev/null +++ b/src/main/java/io/craftgate/request/dto/MealVoucherCardTokenizationData.java @@ -0,0 +1,46 @@ +package io.craftgate.request.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +@AllArgsConstructor +public class MealVoucherCardTokenizationData { + + private String cardNumber; + + private String userReferenceNumber; + + private String gsmNumber; + + private String callbackUrl; + + + public static MealVoucherCardTokenizationData buildForMultinet(String userReferenceNumber, String callbackUrl){ + return MealVoucherCardTokenizationData.builder() + .userReferenceNumber(userReferenceNumber) + .callbackUrl(callbackUrl) + .build(); + } + + public static MealVoucherCardTokenizationData buildForSetcard(String callbackUrl){ + return MealVoucherCardTokenizationData.builder() + .callbackUrl(callbackUrl) + .build(); + } + + public static MealVoucherCardTokenizationData buildForMetropol(String userReferenceNumber, String cardNumber ){ + return MealVoucherCardTokenizationData.builder() + .userReferenceNumber(userReferenceNumber) + .cardNumber(cardNumber) + .build(); + } + + public static MealVoucherCardTokenizationData buildForPluxee(String callbackUrl){ + return MealVoucherCardTokenizationData.builder() + .callbackUrl(callbackUrl) + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java index 3d06ee8..10f9dc7 100644 --- a/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java +++ b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java @@ -1,11 +1,7 @@ package io.craftgate.response; -import io.craftgate.model.AdditionalAction; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import io.craftgate.model.ApmAdditionalAction; +import lombok.*; @Getter @Setter @@ -14,7 +10,7 @@ @Builder public class MealVoucherCardTokenizationInitResponse { - private AdditionalAction additionalAction; + private ApmAdditionalAction additionalAction; private String sessionId; private String htmlContent; private String redirectUrl; diff --git a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java index 2604bdd..3b93948 100644 --- a/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java +++ b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java @@ -1,13 +1,14 @@ package io.craftgate.sample; import io.craftgate.Craftgate; +import io.craftgate.model.ApmAdditionalAction; import io.craftgate.model.ApmType; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; +import io.craftgate.request.dto.MealVoucherCardTokenizationData; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; import org.junit.jupiter.api.Test; -import java.util.UUID; - +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; public class MealVoucherCardTokenizationSample { @@ -18,15 +19,13 @@ public class MealVoucherCardTokenizationSample { void init_meal_voucher_card_tokenization() { MealVoucherCardTokenizationInitRequest request = MealVoucherCardTokenizationInitRequest.builder() .apmType(ApmType.SETCARD) - .mealVoucherIdentifier(UUID.randomUUID().toString()) - .callbackUrl("https://www.your-website.com/craftgate-mealvoucher-card-tokenization-callback") + .mealVoucherCardTokenizationData(MealVoucherCardTokenizationData.buildForSetcard("https://www.your-website.com/craftgate-mealvoucher-card-tokenization-callback")) .build(); MealVoucherCardTokenizationInitResponse response = craftgate.mealVoucherCardTokenizationAdapter().cardTokenizationInit(request); assertNotNull(response.getHtmlContent()); assertNotNull(response.getSessionId()); - assertNotNull(response.getRedirectUrl()); - assertNotNull(response.getAdditionalAction()); + assertEquals(ApmAdditionalAction.SHOW_HTML_CONTENT, response.getAdditionalAction()); } }