Skip to content

Commit 8fd50ee

Browse files
committed
Add meal voucher card tokenization functionality
1 parent dcebf45 commit 8fd50ee

5 files changed

Lines changed: 92 additions & 0 deletions

File tree

src/main/java/io/craftgate/Craftgate.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class Craftgate {
2525
private final MerchantApmAdapter merchantApmAdapter;
2626
private final JuzdanPaymentAdapter juzdanPaymentAdapter;
2727
private final BkmExpressPaymentAdapter bkmExpressPaymentAdapter;
28+
private final MealVoucherCardTokenizationAdapter mealVoucherCardTokenizationAdapter;
2829

2930

3031
public Craftgate(String apiKey, String secretKey) {
@@ -61,6 +62,7 @@ public Craftgate(String apiKey, String secretKey, String baseUrl, String languag
6162
this.merchantApmAdapter = new MerchantApmAdapter(requestOptions);
6263
this.juzdanPaymentAdapter = new JuzdanPaymentAdapter(requestOptions);
6364
this.bkmExpressPaymentAdapter = new BkmExpressPaymentAdapter(requestOptions);
65+
this.mealVoucherCardTokenizationAdapter = new MealVoucherCardTokenizationAdapter(requestOptions);
6466
}
6567

6668
public PaymentAdapter payment() {
@@ -134,4 +136,8 @@ public JuzdanPaymentAdapter juzdan() {
134136
public BkmExpressPaymentAdapter bkmExpressPaymentAdapter() {
135137
return bkmExpressPaymentAdapter;
136138
}
139+
140+
public MealVoucherCardTokenizationAdapter mealVoucherCardTokenizationAdapter() {
141+
return mealVoucherCardTokenizationAdapter;
142+
}
137143
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.craftgate.adapter;
2+
3+
import io.craftgate.net.HttpClient;
4+
import io.craftgate.request.MealVoucherCardTokenizationInitRequest;
5+
import io.craftgate.request.common.RequestOptions;
6+
import io.craftgate.response.MealVoucherCardTokenizationInitResponse;
7+
8+
public class MealVoucherCardTokenizationAdapter extends BaseAdapter {
9+
10+
public MealVoucherCardTokenizationAdapter(RequestOptions requestOptions) {
11+
super(requestOptions);
12+
}
13+
14+
public MealVoucherCardTokenizationInitResponse cardTokenizationInit(MealVoucherCardTokenizationInitRequest mealVoucherCardTokenizationInitRequest) {
15+
String path = "/payment/v1/meal-voucher/card-tokenizations/init";
16+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(mealVoucherCardTokenizationInitRequest, path, requestOptions),
17+
mealVoucherCardTokenizationInitRequest, MealVoucherCardTokenizationInitResponse.class);
18+
}
19+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.craftgate.request;
2+
3+
import io.craftgate.model.ApmType;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
@Data
8+
@Builder
9+
public class MealVoucherCardTokenizationInitRequest {
10+
11+
private ApmType apmType;
12+
private String mealVoucherIdentifier;
13+
private String callbackUrl;
14+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.craftgate.response;
2+
3+
import io.craftgate.model.AdditionalAction;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
@Getter
11+
@Setter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
@Builder
15+
public class MealVoucherCardTokenizationInitResponse {
16+
17+
private AdditionalAction additionalAction;
18+
private String sessionId;
19+
private String htmlContent;
20+
private String redirectUrl;
21+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package io.craftgate.sample;
2+
3+
import io.craftgate.Craftgate;
4+
import io.craftgate.model.ApmType;
5+
import io.craftgate.request.MealVoucherCardTokenizationInitRequest;
6+
import io.craftgate.response.MealVoucherCardTokenizationInitResponse;
7+
import org.junit.jupiter.api.Test;
8+
9+
import java.util.UUID;
10+
11+
import static org.junit.jupiter.api.Assertions.assertNotNull;
12+
13+
public class MealVoucherCardTokenizationSample {
14+
15+
private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io");
16+
17+
@Test
18+
void init_meal_voucher_card_tokenization() {
19+
MealVoucherCardTokenizationInitRequest request = MealVoucherCardTokenizationInitRequest.builder()
20+
.apmType(ApmType.SETCARD)
21+
.mealVoucherIdentifier(UUID.randomUUID().toString())
22+
.callbackUrl("https://www.your-website.com/craftgate-mealvoucher-card-tokenization-callback")
23+
.build();
24+
25+
MealVoucherCardTokenizationInitResponse response = craftgate.mealVoucherCardTokenizationAdapter().cardTokenizationInit(request);
26+
27+
assertNotNull(response.getHtmlContent());
28+
assertNotNull(response.getSessionId());
29+
assertNotNull(response.getRedirectUrl());
30+
assertNotNull(response.getAdditionalAction());
31+
}
32+
}

0 commit comments

Comments
 (0)