Skip to content

Commit 0462fc0

Browse files
authored
Update fraud process for loyalty (#274)
1 parent a11cbd0 commit 0462fc0

File tree

7 files changed

+57
-6
lines changed

7 files changed

+57
-6
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.craftgate.model.FraudCheckStatus;
44
import io.craftgate.model.FraudValueType;
55
import io.craftgate.net.HttpClient;
6+
import io.craftgate.request.AddCardFingerprintFraudValueListRequest;
67
import io.craftgate.request.FraudValueListRequest;
78
import io.craftgate.request.SearchFraudChecksRequest;
89
import io.craftgate.request.UpdateFraudCheckRequest;
@@ -58,6 +59,12 @@ public void addValueToValueList(FraudValueListRequest fraudValueListRequest) {
5859
fraudValueListRequest, Void.class);
5960
}
6061

62+
public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName) {
63+
String path = "/fraud/v1/value-lists/"+ listName + "/card-fingerprints";
64+
HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions),
65+
request, Void.class);
66+
}
67+
6168
public void removeValueFromValueList(String listName, String valueId) {
6269
String path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId;
6370
HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions));
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package io.craftgate.model;
2+
3+
public enum FraudOperation {
4+
PAYMENT,
5+
LOYALTY
6+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package io.craftgate.model;
2+
3+
import lombok.Builder;
4+
import lombok.Data;
5+
6+
@Data
7+
@Builder
8+
public class FraudResult {
9+
private Long id;
10+
private Double score;
11+
private FraudAction action;
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.craftgate.request;
2+
3+
4+
import io.craftgate.model.FraudOperation;
5+
import lombok.Builder;
6+
import lombok.Data;
7+
8+
@Builder
9+
@Data
10+
public class AddCardFingerprintFraudValueListRequest {
11+
12+
String label;
13+
Integer durationInSeconds;
14+
FraudOperation operation = FraudOperation.PAYMENT;
15+
String operationId;
16+
}

src/main/java/io/craftgate/request/RetrieveLoyaltiesRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.craftgate.request;
22

3+
import io.craftgate.request.dto.FraudCheckParameters;
34
import lombok.Builder;
45
import lombok.Data;
56

@@ -13,4 +14,8 @@ public class RetrieveLoyaltiesRequest {
1314

1415
private String cardUserKey;
1516
private String cardToken;
17+
18+
private String clientIp;
19+
private String conversationId;
20+
private FraudCheckParameters fraudParams;
1621
}

src/main/java/io/craftgate/response/RetrieveLoyaltiesResponse.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.craftgate.response;
22

3+
import io.craftgate.model.FraudResult;
34
import io.craftgate.model.Loyalty;
45
import io.craftgate.response.dto.MerchantPos;
56
import lombok.Data;
@@ -13,5 +14,6 @@ public class RetrieveLoyaltiesResponse {
1314
private Long cardIssuerBankId;
1415
private Boolean force3ds;
1516
private MerchantPos pos;
17+
private FraudResult fraudResult;
1618
private List<Loyalty> loyalties;
1719
}

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

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import io.craftgate.Craftgate;
44
import io.craftgate.model.FraudAction;
55
import io.craftgate.model.FraudCheckStatus;
6+
import io.craftgate.model.FraudOperation;
67
import io.craftgate.model.FraudValueType;
8+
import io.craftgate.request.AddCardFingerprintFraudValueListRequest;
79
import io.craftgate.request.FraudValueListRequest;
810
import io.craftgate.request.SearchFraudChecksRequest;
911
import io.craftgate.response.FraudAllValueListsResponse;
@@ -12,6 +14,7 @@
1214
import org.junit.jupiter.api.Test;
1315

1416
import java.time.LocalDateTime;
17+
import java.util.UUID;
1518

1619
import static org.junit.jupiter.api.Assertions.assertEquals;
1720
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -92,13 +95,13 @@ void add_temporary_value_to_fraud_value_list() {
9295

9396
@Test
9497
void add_card_fingerprint_to_fraud_value_list() {
95-
FraudValueListRequest fraudValueListRequest = FraudValueListRequest.builder()
96-
.label("John Doe Card")
97-
.type(FraudValueType.CARD)
98-
.listName("cardList")
99-
.paymentId(11675L)
98+
AddCardFingerprintFraudValueListRequest request = AddCardFingerprintFraudValueListRequest.builder()
99+
.operation(FraudOperation.PAYMENT)
100+
.operationId(UUID.randomUUID().toString())
101+
.durationInSeconds(60)
102+
.label("label")
100103
.build();
101-
craftgate.fraud().addValueToValueList(fraudValueListRequest);
104+
craftgate.fraud().addCardFingerprint(request, "listName");
102105
}
103106

104107
@Test

0 commit comments

Comments
 (0)