Skip to content

Commit 7506236

Browse files
committed
Init multi payment endpoint and samples added
1 parent 0cb0e62 commit 7506236

4 files changed

Lines changed: 105 additions & 0 deletions

File tree

src/main/java/io/craftgate/adapter/PaymentAdapter.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,12 @@ public InstantTransferBanksResponse retrieveActiveBanks() {
270270
InstantTransferBanksResponse.class);
271271
}
272272

273+
public InitMultiPaymentResponse initMultiPayment(InitMultiPaymentRequest initMultiPaymentRequest) {
274+
String path = "/payment/v1/multi-payments/init";
275+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initMultiPaymentRequest, path, requestOptions),
276+
initMultiPaymentRequest, InitMultiPaymentResponse.class);
277+
}
278+
273279
public MultiPaymentResponse retrieveMultiPayment(String token) {
274280
String path = "/payment/v1/multi-payments/" + token;
275281
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MultiPaymentResponse.class);
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package io.craftgate.request;
2+
3+
import io.craftgate.model.*;
4+
import io.craftgate.request.dto.PaymentItem;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
8+
import java.math.BigDecimal;
9+
import java.util.List;
10+
import java.util.Map;
11+
12+
@Data
13+
@Builder
14+
public class InitMultiPaymentRequest {
15+
16+
private BigDecimal price;
17+
private BigDecimal paidPrice;
18+
private Currency currency;
19+
private PaymentGroup paymentGroup;
20+
private PaymentSource paymentSource;
21+
private String conversationId;
22+
private String externalId;
23+
private String callbackUrl;
24+
25+
@Builder.Default
26+
protected PaymentPhase paymentPhase = PaymentPhase.AUTH;
27+
private String paymentChannel;
28+
29+
private List<PaymentMethod> enabledPaymentMethods;
30+
31+
private String cardUserKey;
32+
33+
private Long buyerMemberId;
34+
private boolean allowOnlyCreditCard;
35+
private boolean forceAuthForNonCreditCards;
36+
private boolean allowOnlyStoredCards;
37+
private boolean allowInstallmentOnlyCommercialCards;
38+
private boolean alwaysStoreCardAfterPayment;
39+
private boolean disableStoreCard;
40+
private boolean forceThreeDS;
41+
42+
private String masterpassGsmNumber;
43+
private String masterpassUserId;
44+
private String apmUserIdentity;
45+
46+
private List<PaymentItem> items;
47+
48+
private Long ttl;
49+
private Integer maximumSplitPaymentCount;
50+
private Map<String, Object> additionalParams;
51+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.craftgate.response;
2+
3+
import lombok.Data;
4+
5+
import java.time.LocalDateTime;
6+
7+
@Data
8+
public class InitMultiPaymentResponse {
9+
10+
protected String token;
11+
protected String pageUrl;
12+
protected LocalDateTime tokenExpireDate;
13+
}

src/test/java/io/craftgate/sample/PaymentSample.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2188,6 +2188,41 @@ void update_payment_transaction() {
21882188
assertEquals(request.getSubMerchantMemberPrice().doubleValue(), response.getSubMerchantMemberPrice().doubleValue());
21892189
}
21902190

2191+
@Test
2192+
void init_multi_payment() {
2193+
List<PaymentItem> items = new ArrayList<>();
2194+
items.add(PaymentItem.builder()
2195+
.name("item 1")
2196+
.externalId(UUID.randomUUID().toString())
2197+
.price(BigDecimal.valueOf(30))
2198+
.build());
2199+
2200+
items.add(PaymentItem.builder()
2201+
.name("item 2")
2202+
.externalId(UUID.randomUUID().toString())
2203+
.price(BigDecimal.valueOf(70))
2204+
.build());
2205+
2206+
InitMultiPaymentRequest request = InitMultiPaymentRequest.builder()
2207+
.price(BigDecimal.valueOf(100))
2208+
.paidPrice(BigDecimal.valueOf(100))
2209+
.buyerMemberId(7L)
2210+
.callbackUrl("https://www.your-website.com/craftgate-multi-payment-callback")
2211+
.currency(Currency.TRY)
2212+
.conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5")
2213+
.externalId("external_id-123456789")
2214+
.paymentGroup(PaymentGroup.LISTING_OR_SUBSCRIPTION)
2215+
.paymentPhase(PaymentPhase.AUTH)
2216+
.items(items)
2217+
.build();
2218+
2219+
InitMultiPaymentResponse response = craftgate.payment().initMultiPayment(request);
2220+
2221+
assertNotNull(response);
2222+
assertNotNull(response.getPageUrl());
2223+
assertNotNull(response.getToken());
2224+
}
2225+
21912226
@Test
21922227
void retrieve_multi_payment() {
21932228
String token = "6d7e66b5-9b1c-4c1d-879a-2557b651096e";

0 commit comments

Comments
 (0)