Skip to content

Commit 5ac332e

Browse files
authored
Merge branch 'master' into add_enabled-delete-card
2 parents 2864417 + fa051b7 commit 5ac332e

69 files changed

Lines changed: 907 additions & 40 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Craftgate Java Client
22

33
[![Build Status](https://github.com/craftgate/craftgate-java-client/actions/workflows/craftgate-build.yml/badge.svg?branch=master)](https://github.com/craftgate/craftgate-java-client/actions?query=branch%3Amaster)
4-
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.craftgate/craftgate/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.craftgate/craftgate)
4+
[![Maven Central](https://img.shields.io/maven-central/v/io.craftgate/craftgate)](https://central.sonatype.com/artifact/io.craftgate/craftgate)
55
[![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/craftgate/craftgate-java-client)
66

77
This repo contains the Java client for Craftgate API.
@@ -17,16 +17,16 @@ Apache Maven:
1717
<dependency>
1818
<groupId>io.craftgate</groupId>
1919
<artifactId>craftgate</artifactId>
20-
<version>1.0.72</version>
20+
<version>1.0.77</version>
2121
</dependency>
2222
```
2323
Gradle Groovy DSL
2424
```
25-
implementation 'io.craftgate:craftgate:1.0.72'
25+
implementation 'io.craftgate:craftgate:1.0.77'
2626
```
2727
Gradle Kotlin DSL
2828
```
29-
implementation("io.craftgate:craftgate:1.0.72")
29+
implementation("io.craftgate:craftgate:1.0.77")
3030
```
3131

3232
## Usage

bin/.DS_Store

6 KB
Binary file not shown.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ private static Map<String, String> createHttpHeaders(Object request, String path
4040
headers.put(API_KEY_HEADER_NAME, options.getApiKey());
4141
headers.put(RANDOM_HEADER_NAME, randomString);
4242
headers.put(AUTH_VERSION_HEADER_NAME, API_VERSION_HEADER_VALUE);
43-
headers.put(CLIENT_VERSION_HEADER_NAME, CLIENT_VERSION_HEADER_VALUE + ":1.0.72");
43+
headers.put(CLIENT_VERSION_HEADER_NAME, CLIENT_VERSION_HEADER_VALUE + ":1.0.77");
4444
headers.put(SIGNATURE_HEADER_NAME, prepareAuthorizationString(request, path, randomString, options));
4545
if (Objects.nonNull(options.getLanguage())) {
4646
headers.put(LANGUAGE_HEADER_NAME, options.getLanguage());

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package io.craftgate.adapter;
22

33
import io.craftgate.net.HttpClient;
4+
import io.craftgate.request.CreateReportRequest;
45
import io.craftgate.request.RetrieveDailyPaymentReportRequest;
56
import io.craftgate.request.RetrieveDailyTransactionReportRequest;
7+
import io.craftgate.request.RetrieveReportRequest;
68
import io.craftgate.request.common.RequestOptions;
79
import io.craftgate.request.common.RequestQueryParamsBuilder;
10+
import io.craftgate.response.ReportDemandResponse;
811

912
import java.util.Map;
1013

@@ -32,4 +35,21 @@ public byte[] retrieveDailyPaymentReport(RetrieveDailyPaymentReportRequest retri
3235
headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM);
3336
return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class);
3437
}
38+
39+
public ReportDemandResponse createReport(CreateReportRequest request) {
40+
String path = "/file-reporting/v1/report-demands";
41+
Map<String, String> headers = createHeaders(request, path, requestOptions);
42+
return HttpClient.post(requestOptions.getBaseUrl() + path,
43+
headers,
44+
request,
45+
ReportDemandResponse.class);
46+
}
47+
48+
public byte[] retrieveReport(RetrieveReportRequest retrieveReportRequest, Long reportId) {
49+
String query = RequestQueryParamsBuilder.buildQueryParam(retrieveReportRequest);
50+
String path = "/file-reporting/v1/reports/" + reportId + query;
51+
Map<String, String> headers = createHeaders(path, requestOptions);
52+
headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM);
53+
return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class);
54+
}
3555
}

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

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@
33
import io.craftgate.model.FraudCheckStatus;
44
import io.craftgate.model.FraudValueType;
55
import io.craftgate.net.HttpClient;
6-
import io.craftgate.request.FraudValueListRequest;
7-
import io.craftgate.request.SearchFraudChecksRequest;
8-
import io.craftgate.request.UpdateFraudCheckRequest;
6+
import io.craftgate.request.*;
97
import io.craftgate.request.common.RequestOptions;
108
import io.craftgate.request.common.RequestQueryParamsBuilder;
119
import io.craftgate.response.FraudAllValueListsResponse;
1210
import io.craftgate.response.FraudCheckListResponse;
11+
import io.craftgate.response.FraudRuleListResponse;
1312
import io.craftgate.response.FraudValueListResponse;
1413

1514
public class FraudAdapter extends BaseAdapter {
@@ -58,8 +57,20 @@ public void addValueToValueList(FraudValueListRequest fraudValueListRequest) {
5857
fraudValueListRequest, Void.class);
5958
}
6059

60+
public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName) {
61+
String path = "/fraud/v1/value-lists/"+ listName + "/card-fingerprints";
62+
HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions),
63+
request, Void.class);
64+
}
65+
6166
public void removeValueFromValueList(String listName, String valueId) {
6267
String path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId;
6368
HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions));
6469
}
70+
71+
public FraudRuleListResponse searchRules(SearchFraudRuleRequest searchFraudRuleRequest) {
72+
String query = RequestQueryParamsBuilder.buildQueryParam(searchFraudRuleRequest);
73+
String path = "/fraud/v1/rules" + query;
74+
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudRuleListResponse.class);
75+
}
6576
}

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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,17 @@ public InitCheckoutPaymentResponse initCheckoutPayment(InitCheckoutPaymentReques
5050
initCheckoutPaymentRequest, InitCheckoutPaymentResponse.class);
5151
}
5252

53+
public InitCheckoutCardVerifyResponse initCheckoutCardVerify(InitCheckoutCardVerifyRequest initCheckoutCardVerifyRequest) {
54+
String path = "/payment/v1/checkout-card-verify/init";
55+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initCheckoutCardVerifyRequest, path, requestOptions),
56+
initCheckoutCardVerifyRequest, InitCheckoutCardVerifyResponse.class);
57+
}
58+
59+
public RetrieveCheckoutCardVerifyResponse retrieveCheckoutCardVerify(String token) {
60+
String path = "/payment/v1/checkout-card-verify/" + token;
61+
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), RetrieveCheckoutCardVerifyResponse.class);
62+
}
63+
5364
public PaymentResponse retrieveCheckoutPayment(String token) {
5465
String path = "/payment/v1/checkout-payments/" + token;
5566
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class);
@@ -160,6 +171,12 @@ public PaymentRefundResponse refundPayment(RefundPaymentRequest refundPaymentReq
160171
refundPaymentRequest, PaymentRefundResponse.class);
161172
}
162173

174+
public RefundWaitingPaymentResponse refundWaitingPayment(RefundWaitingPaymentRequest refundWaitingPaymentRequest) {
175+
String path = "/payment/v1/refunds/refund-waiting-payment";
176+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundWaitingPaymentRequest, path, requestOptions),
177+
refundWaitingPaymentRequest, RefundWaitingPaymentResponse.class);
178+
}
179+
163180
public PaymentRefundResponse retrievePaymentRefund(Long id) {
164181
String path = "/payment/v1/refunds/" + id;
165182
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentRefundResponse.class);
@@ -195,6 +212,12 @@ public void deleteStoredCard(DeleteStoredCardRequest deleteStoredCardRequest) {
195212
deleteStoredCardRequest, Void.class);
196213
}
197214

215+
public VerifyCardResponse verifyCard(VerifyCardRequest verifyCardRequest) {
216+
String path = "/payment/v1/cards/verify";
217+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(verifyCardRequest, path, requestOptions),
218+
verifyCardRequest, VerifyCardResponse.class);
219+
}
220+
198221
public PaymentTransactionApprovalListResponse approvePaymentTransactions(ApprovePaymentTransactionsRequest approvePaymentTransactionsRequest) {
199222
String path = "/payment/v1/payment-transactions/approve";
200223
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(approvePaymentTransactionsRequest, path, requestOptions),
@@ -241,12 +264,28 @@ public BnplPaymentVerifyResponse verifyBnplPayment(Long paymentId) {
241264
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BnplPaymentVerifyResponse.class);
242265
}
243266

267+
public BnplLimitInquiryResponse bnplLimitInquiryInit(BnplLimitInquiryRequest bnplLimitInquiryRequest) {
268+
String path = "/payment/v1/bnpl-payments/limit-inquiry/init";
269+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestOptions), BnplLimitInquiryResponse.class);
270+
}
271+
272+
public BnplLimitInquiryResponse bnplLimitInquiry(BnplLimitInquiryRequest bnplLimitInquiryRequest) {
273+
String path = "/payment/v1/bnpl-payments/limit-inquiry";
274+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestOptions), BnplLimitInquiryResponse.class);
275+
}
276+
244277
public InstantTransferBanksResponse retrieveActiveBanks() {
245278
String path = "/payment/v1/instant-transfer-banks";
246279
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions),
247280
InstantTransferBanksResponse.class);
248281
}
249282

283+
public InitMultiPaymentResponse initMultiPayment(InitMultiPaymentRequest initMultiPaymentRequest) {
284+
String path = "/payment/v1/multi-payments/init";
285+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initMultiPaymentRequest, path, requestOptions),
286+
initMultiPaymentRequest, InitMultiPaymentResponse.class);
287+
}
288+
250289
public MultiPaymentResponse retrieveMultiPayment(String token) {
251290
String path = "/payment/v1/multi-payments/" + token;
252291
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MultiPaymentResponse.class);
@@ -258,6 +297,12 @@ public StoredCardListResponse retrieveProviderCards(RetrieveProviderCardRequest
258297
return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), StoredCardListResponse.class);
259298
}
260299

300+
public CreateDepositToCardPaymentResponse depositToCard(CreateDepositToCardRequest createDepositToCardRequest) {
301+
String path = "/payment/v1/card-payments/deposit-to-card";
302+
return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositToCardRequest, path, requestOptions),
303+
createDepositToCardRequest, CreateDepositToCardPaymentResponse.class);
304+
}
305+
261306
public boolean is3DSecureCallbackVerified(String threeDSecureCallbackKey, Map<String, String> params) {
262307
String hash = params.get("hash");
263308
String hashString = threeDSecureCallbackKey +

src/main/java/io/craftgate/exception/CraftgateException.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,43 @@ public class CraftgateException extends RuntimeException {
1414
private final String errorCode;
1515
private final String errorDescription;
1616
private final String errorGroup;
17+
private final String providerErrorCode;
18+
private final String providerErrorDescription;
1719

1820
public CraftgateException() {
1921
super(GENERAL_ERROR_DESCRIPTION);
2022
this.errorCode = GENERAL_ERROR_CODE;
2123
this.errorDescription = GENERAL_ERROR_DESCRIPTION;
2224
this.errorGroup = GENERAL_ERROR_GROUP;
25+
this.providerErrorCode = null;
26+
this.providerErrorDescription = null;
2327
}
2428

2529
public CraftgateException(String errorCode, String errorDescription, String errorGroup) {
2630
super(errorDescription);
2731
this.errorCode = errorCode;
2832
this.errorDescription = errorDescription;
2933
this.errorGroup = errorGroup;
34+
this.providerErrorCode = null;
35+
this.providerErrorDescription = null;
36+
}
37+
38+
public CraftgateException(String errorCode, String errorDescription, String errorGroup,
39+
String providerErrorCode, String providerErrorDescription) {
40+
super(errorDescription);
41+
this.errorCode = errorCode;
42+
this.errorDescription = errorDescription;
43+
this.errorGroup = errorGroup;
44+
this.providerErrorCode = providerErrorCode;
45+
this.providerErrorDescription = providerErrorDescription;
3046
}
3147

3248
public CraftgateException(Throwable cause) {
3349
super(cause.getMessage(), cause);
3450
this.errorCode = GENERAL_ERROR_CODE;
3551
this.errorDescription = GENERAL_ERROR_DESCRIPTION;
3652
this.errorGroup = GENERAL_ERROR_GROUP;
53+
this.providerErrorCode = null;
54+
this.providerErrorDescription = null;
3755
}
3856
}

src/main/java/io/craftgate/model/ApmType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,6 @@ public enum ApmType {
3535
FUND_TRANSFER,
3636
SETCARD,
3737
PAPEL,
38+
ALBARAKA,
3839
CASH_ON_DELIVERY
3940
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.craftgate.model;
2+
3+
public enum CardVerificationAuthType {
4+
5+
NON_THREE_DS,
6+
THREE_DS,
7+
NONE
8+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.craftgate.model;
2+
3+
public enum CardVerifyStatus {
4+
5+
SUCCESS,
6+
FAILURE,
7+
THREE_DS_PENDING
8+
}

0 commit comments

Comments
 (0)