diff --git a/src/main/java/io/craftgate/Craftgate.java b/src/main/java/io/craftgate/Craftgate.java index fc72f60..9b54e08 100644 --- a/src/main/java/io/craftgate/Craftgate.java +++ b/src/main/java/io/craftgate/Craftgate.java @@ -25,6 +25,7 @@ public class Craftgate { private final MerchantApmAdapter merchantApmAdapter; private final JuzdanPaymentAdapter juzdanPaymentAdapter; private final BkmExpressPaymentAdapter bkmExpressPaymentAdapter; + private final MealVoucherCardTokenizationAdapter mealVoucherCardTokenizationAdapter; public Craftgate(String apiKey, String secretKey) { @@ -61,6 +62,7 @@ public Craftgate(String apiKey, String secretKey, String baseUrl, String languag this.merchantApmAdapter = new MerchantApmAdapter(requestOptions); this.juzdanPaymentAdapter = new JuzdanPaymentAdapter(requestOptions); this.bkmExpressPaymentAdapter = new BkmExpressPaymentAdapter(requestOptions); + this.mealVoucherCardTokenizationAdapter = new MealVoucherCardTokenizationAdapter(requestOptions); } public PaymentAdapter payment() { @@ -134,4 +136,8 @@ public JuzdanPaymentAdapter juzdan() { public BkmExpressPaymentAdapter bkmExpressPaymentAdapter() { return bkmExpressPaymentAdapter; } + + public MealVoucherCardTokenizationAdapter mealVoucherCardTokenizationAdapter() { + return mealVoucherCardTokenizationAdapter; + } } diff --git a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java new file mode 100644 index 0000000..68325fb --- /dev/null +++ b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java @@ -0,0 +1,19 @@ +package io.craftgate.adapter; + +import io.craftgate.net.HttpClient; +import io.craftgate.request.MealVoucherCardTokenizationInitRequest; +import io.craftgate.request.common.RequestOptions; +import io.craftgate.response.MealVoucherCardTokenizationInitResponse; + +public class MealVoucherCardTokenizationAdapter extends BaseAdapter { + + public MealVoucherCardTokenizationAdapter(RequestOptions requestOptions) { + super(requestOptions); + } + + public MealVoucherCardTokenizationInitResponse cardTokenizationInit(MealVoucherCardTokenizationInitRequest mealVoucherCardTokenizationInitRequest) { + String path = "/payment/v1/meal-voucher/card-tokenizations/init"; + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(mealVoucherCardTokenizationInitRequest, path, requestOptions), + mealVoucherCardTokenizationInitRequest, MealVoucherCardTokenizationInitResponse.class); + } +} \ No newline at end of file diff --git a/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java new file mode 100644 index 0000000..bae7126 --- /dev/null +++ b/src/main/java/io/craftgate/request/MealVoucherCardTokenizationInitRequest.java @@ -0,0 +1,14 @@ +package io.craftgate.request; + +import io.craftgate.model.ApmType; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class MealVoucherCardTokenizationInitRequest { + + private ApmType apmType; + private String mealVoucherIdentifier; + private String callbackUrl; +} diff --git a/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java new file mode 100644 index 0000000..3d06ee8 --- /dev/null +++ b/src/main/java/io/craftgate/response/MealVoucherCardTokenizationInitResponse.java @@ -0,0 +1,21 @@ +package io.craftgate.response; + +import io.craftgate.model.AdditionalAction; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class MealVoucherCardTokenizationInitResponse { + + private AdditionalAction 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 new file mode 100644 index 0000000..2604bdd --- /dev/null +++ b/src/test/java/io/craftgate/sample/MealVoucherCardTokenizationSample.java @@ -0,0 +1,32 @@ +package io.craftgate.sample; + +import io.craftgate.Craftgate; +import io.craftgate.model.ApmType; +import io.craftgate.request.MealVoucherCardTokenizationInitRequest; +import io.craftgate.response.MealVoucherCardTokenizationInitResponse; +import org.junit.jupiter.api.Test; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class MealVoucherCardTokenizationSample { + + private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); + + @Test + 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") + .build(); + + MealVoucherCardTokenizationInitResponse response = craftgate.mealVoucherCardTokenizationAdapter().cardTokenizationInit(request); + + assertNotNull(response.getHtmlContent()); + assertNotNull(response.getSessionId()); + assertNotNull(response.getRedirectUrl()); + assertNotNull(response.getAdditionalAction()); + } +}