From c6aa6ba6d3b8a3b396e5790729c4fe5a0b3c9b95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96zcan?= Date: Tue, 21 Oct 2025 15:17:40 +0300 Subject: [PATCH 1/3] Add Fraud Check for Loyalty Retrieve --- src/main/java/io/craftgate/model/FraudResult.java | 12 ++++++++++++ .../craftgate/request/RetrieveLoyaltiesRequest.java | 5 +++++ .../response/RetrieveLoyaltiesResponse.java | 2 ++ 3 files changed, 19 insertions(+) create mode 100644 src/main/java/io/craftgate/model/FraudResult.java diff --git a/src/main/java/io/craftgate/model/FraudResult.java b/src/main/java/io/craftgate/model/FraudResult.java new file mode 100644 index 00000000..d998e18f --- /dev/null +++ b/src/main/java/io/craftgate/model/FraudResult.java @@ -0,0 +1,12 @@ +package io.craftgate.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class FraudResult { + private Long id; + private Double score; + private FraudAction action; +} diff --git a/src/main/java/io/craftgate/request/RetrieveLoyaltiesRequest.java b/src/main/java/io/craftgate/request/RetrieveLoyaltiesRequest.java index ad8c2390..af3851f5 100644 --- a/src/main/java/io/craftgate/request/RetrieveLoyaltiesRequest.java +++ b/src/main/java/io/craftgate/request/RetrieveLoyaltiesRequest.java @@ -1,5 +1,6 @@ package io.craftgate.request; +import io.craftgate.request.dto.FraudCheckParameters; import lombok.Builder; import lombok.Data; @@ -13,4 +14,8 @@ public class RetrieveLoyaltiesRequest { private String cardUserKey; private String cardToken; + + private String clientIp; + private String conversationId; + private FraudCheckParameters fraudParams; } diff --git a/src/main/java/io/craftgate/response/RetrieveLoyaltiesResponse.java b/src/main/java/io/craftgate/response/RetrieveLoyaltiesResponse.java index 57a456aa..59a18aaa 100644 --- a/src/main/java/io/craftgate/response/RetrieveLoyaltiesResponse.java +++ b/src/main/java/io/craftgate/response/RetrieveLoyaltiesResponse.java @@ -1,5 +1,6 @@ package io.craftgate.response; +import io.craftgate.model.FraudResult; import io.craftgate.model.Loyalty; import io.craftgate.response.dto.MerchantPos; import lombok.Data; @@ -13,5 +14,6 @@ public class RetrieveLoyaltiesResponse { private Long cardIssuerBankId; private Boolean force3ds; private MerchantPos pos; + private FraudResult fraudResult; private List loyalties; } From d1821a93c9319a0036e3461a9beec3af9a88cfa6 Mon Sep 17 00:00:00 2001 From: deryacakmak <97deryacakmak@gmail.com> Date: Tue, 4 Nov 2025 01:13:49 +0300 Subject: [PATCH 2/3] addCardFingerprint added --- .../java/io/craftgate/adapter/FraudAdapter.java | 7 +++++++ .../java/io/craftgate/model/FraudOperation.java | 6 ++++++ .../AddCardFingerprintFraudValueListRequest.java | 16 ++++++++++++++++ .../java/io/craftgate/sample/FraudSample.java | 14 ++++++++++++++ 4 files changed, 43 insertions(+) create mode 100644 src/main/java/io/craftgate/model/FraudOperation.java create mode 100644 src/main/java/io/craftgate/request/AddCardFingerprintFraudValueListRequest.java diff --git a/src/main/java/io/craftgate/adapter/FraudAdapter.java b/src/main/java/io/craftgate/adapter/FraudAdapter.java index bfd93db2..d7b8b82f 100644 --- a/src/main/java/io/craftgate/adapter/FraudAdapter.java +++ b/src/main/java/io/craftgate/adapter/FraudAdapter.java @@ -3,6 +3,7 @@ import io.craftgate.model.FraudCheckStatus; import io.craftgate.model.FraudValueType; import io.craftgate.net.HttpClient; +import io.craftgate.request.AddCardFingerprintFraudValueListRequest; import io.craftgate.request.FraudValueListRequest; import io.craftgate.request.SearchFraudChecksRequest; import io.craftgate.request.UpdateFraudCheckRequest; @@ -58,6 +59,12 @@ public void addValueToValueList(FraudValueListRequest fraudValueListRequest) { fraudValueListRequest, Void.class); } + public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName) { + String path = "/fraud/v1/value-lists/"+ listName + "/card-fingerprints"; + HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + request, Void.class); + } + public void removeValueFromValueList(String listName, String valueId) { String path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId; HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); diff --git a/src/main/java/io/craftgate/model/FraudOperation.java b/src/main/java/io/craftgate/model/FraudOperation.java new file mode 100644 index 00000000..5b9dcd2c --- /dev/null +++ b/src/main/java/io/craftgate/model/FraudOperation.java @@ -0,0 +1,6 @@ +package io.craftgate.model; + +public enum FraudOperation { + PAYMENT, + LOYALTY +} \ No newline at end of file diff --git a/src/main/java/io/craftgate/request/AddCardFingerprintFraudValueListRequest.java b/src/main/java/io/craftgate/request/AddCardFingerprintFraudValueListRequest.java new file mode 100644 index 00000000..c884f194 --- /dev/null +++ b/src/main/java/io/craftgate/request/AddCardFingerprintFraudValueListRequest.java @@ -0,0 +1,16 @@ +package io.craftgate.request; + + +import io.craftgate.model.FraudOperation; +import lombok.Builder; +import lombok.Data; + +@Builder +@Data +public class AddCardFingerprintFraudValueListRequest { + + String label; + Integer durationInSeconds; + FraudOperation operation = FraudOperation.PAYMENT; + String operationId; +} \ No newline at end of file diff --git a/src/test/java/io/craftgate/sample/FraudSample.java b/src/test/java/io/craftgate/sample/FraudSample.java index 7b80a3c0..5053d0bc 100644 --- a/src/test/java/io/craftgate/sample/FraudSample.java +++ b/src/test/java/io/craftgate/sample/FraudSample.java @@ -3,7 +3,9 @@ import io.craftgate.Craftgate; import io.craftgate.model.FraudAction; import io.craftgate.model.FraudCheckStatus; +import io.craftgate.model.FraudOperation; import io.craftgate.model.FraudValueType; +import io.craftgate.request.AddCardFingerprintFraudValueListRequest; import io.craftgate.request.FraudValueListRequest; import io.craftgate.request.SearchFraudChecksRequest; import io.craftgate.response.FraudAllValueListsResponse; @@ -12,6 +14,7 @@ import org.junit.jupiter.api.Test; import java.time.LocalDateTime; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -78,6 +81,17 @@ void add_value_to_fraud_value_list() { craftgate.fraud().addValueToValueList(request); } + @Test + void add_cardFingerPrint_to_fraud_value_list() { + AddCardFingerprintFraudValueListRequest request = AddCardFingerprintFraudValueListRequest.builder() + .operation(FraudOperation.PAYMENT) + .operationId(UUID.randomUUID().toString()) + .durationInSeconds(60) + .label("label") + .build(); + craftgate.fraud().addCardFingerprint(request, "listName"); + } + @Test void add_temporary_value_to_fraud_value_list() { FraudValueListRequest fraudValueListRequest = FraudValueListRequest.builder() From d712c1e43755ba2d8691cb50234bc3d50e5af124 Mon Sep 17 00:00:00 2001 From: deryacakmak <97deryacakmak@gmail.com> Date: Tue, 4 Nov 2025 14:41:19 +0300 Subject: [PATCH 3/3] addCardFingerprint added --- .../java/io/craftgate/sample/FraudSample.java | 23 +++++-------------- 1 file changed, 6 insertions(+), 17 deletions(-) diff --git a/src/test/java/io/craftgate/sample/FraudSample.java b/src/test/java/io/craftgate/sample/FraudSample.java index 5053d0bc..a95578e9 100644 --- a/src/test/java/io/craftgate/sample/FraudSample.java +++ b/src/test/java/io/craftgate/sample/FraudSample.java @@ -81,17 +81,6 @@ void add_value_to_fraud_value_list() { craftgate.fraud().addValueToValueList(request); } - @Test - void add_cardFingerPrint_to_fraud_value_list() { - AddCardFingerprintFraudValueListRequest request = AddCardFingerprintFraudValueListRequest.builder() - .operation(FraudOperation.PAYMENT) - .operationId(UUID.randomUUID().toString()) - .durationInSeconds(60) - .label("label") - .build(); - craftgate.fraud().addCardFingerprint(request, "listName"); - } - @Test void add_temporary_value_to_fraud_value_list() { FraudValueListRequest fraudValueListRequest = FraudValueListRequest.builder() @@ -106,13 +95,13 @@ void add_temporary_value_to_fraud_value_list() { @Test void add_card_fingerprint_to_fraud_value_list() { - FraudValueListRequest fraudValueListRequest = FraudValueListRequest.builder() - .label("John Doe Card") - .type(FraudValueType.CARD) - .listName("cardList") - .paymentId(11675L) + AddCardFingerprintFraudValueListRequest request = AddCardFingerprintFraudValueListRequest.builder() + .operation(FraudOperation.PAYMENT) + .operationId(UUID.randomUUID().toString()) + .durationInSeconds(60) + .label("label") .build(); - craftgate.fraud().addValueToValueList(fraudValueListRequest); + craftgate.fraud().addCardFingerprint(request, "listName"); } @Test