diff --git a/CHANGES.MD b/CHANGES.MD
index 5eed857c..62b5f706 100644
--- a/CHANGES.MD
+++ b/CHANGES.MD
@@ -1,3 +1,8 @@
+3.5.0 (2021-08-24)
+=================
+- V206 adds fintech fields.
+- Add support for `$ach` complex field to `$payment_method` complex field
+
3.4.0 (2020-05-05)
=================
- Add support for `$decline_category` field to `$transaction` event
diff --git a/README.md b/README.md
index c98de53a..21d6fdd2 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
[](https://circleci.com/gh/SiftScience/sift-java)
-The official Java bindings for the latest version (v205) of the [Sift API](https://sift.com/developers/docs/java/apis-overview).
+The official Java bindings for the latest version (v206) of the [Sift API](https://sift.com/developers/docs/java/apis-overview).
## Requirements
Java 1.7 or later.
@@ -13,13 +13,13 @@ Java 1.7 or later.
com.siftscience
sift-java
- 3.4.0
+ 3.5.0
```
### Gradle
```
dependencies {
- compile 'com.siftscience:sift-java:3.4.0'
+ compile 'com.siftscience:sift-java:3.5.0'
}
```
### Other
diff --git a/build.gradle b/build.gradle
index 169cc895..f0b37a6b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,11 +1,10 @@
-
apply plugin: 'java'
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'java-library-distribution'
group = 'com.siftscience'
-version = '3.4.0'
+version = '3.5.0'
repositories {
mavenCentral()
diff --git a/src/main/java/com/siftscience/EventRequest.java b/src/main/java/com/siftscience/EventRequest.java
index 0e5f5cfe..ddbc8ad3 100644
--- a/src/main/java/com/siftscience/EventRequest.java
+++ b/src/main/java/com/siftscience/EventRequest.java
@@ -32,7 +32,7 @@ EventResponse buildResponse(Response response, FieldSet requestFields)
@Override
protected HttpUrl path(HttpUrl baseUrl) {
HttpUrl.Builder builder = baseUrl.newBuilder()
- .addPathSegment("v205").addPathSegment("events");
+ .addPathSegment("v206").addPathSegment("events");
if (isWorkflowStatus) {
builder.addQueryParameter("return_workflow_status", "true");
diff --git a/src/main/java/com/siftscience/LabelRequest.java b/src/main/java/com/siftscience/LabelRequest.java
index bc44e562..82572c37 100644
--- a/src/main/java/com/siftscience/LabelRequest.java
+++ b/src/main/java/com/siftscience/LabelRequest.java
@@ -19,7 +19,7 @@ public class LabelRequest extends SiftRequest {
@Override
protected HttpUrl path(HttpUrl baseUrl) {
return baseUrl.newBuilder()
- .addPathSegment("v205")
+ .addPathSegment("v206")
.addPathSegment("users")
.addPathSegment(((LabelFieldSet)fieldSet).getUserId())
.addPathSegment("labels")
diff --git a/src/main/java/com/siftscience/ScoreRequest.java b/src/main/java/com/siftscience/ScoreRequest.java
index 1c716358..1517e347 100644
--- a/src/main/java/com/siftscience/ScoreRequest.java
+++ b/src/main/java/com/siftscience/ScoreRequest.java
@@ -38,7 +38,7 @@ ScoreResponse buildResponse(Response response, FieldSet requestFields)
@Override
protected HttpUrl path(HttpUrl baseUrl) {
ScoreFieldSet scoreFieldSet = (ScoreFieldSet)fieldSet;
- HttpUrl.Builder builder = baseUrl.newBuilder().addPathSegment("v205");
+ HttpUrl.Builder builder = baseUrl.newBuilder().addPathSegment("v206");
builder.addPathSegment("score").addPathSegment(scoreFieldSet.getUserId())
.addQueryParameter("api_key", scoreFieldSet.getApiKey());
if (scoreFieldSet.getAbuseTypes() != null && scoreFieldSet.getAbuseTypes().size() > 0) {
diff --git a/src/main/java/com/siftscience/UnlabelRequest.java b/src/main/java/com/siftscience/UnlabelRequest.java
index bf273ce1..42c2cfda 100644
--- a/src/main/java/com/siftscience/UnlabelRequest.java
+++ b/src/main/java/com/siftscience/UnlabelRequest.java
@@ -23,7 +23,7 @@ public class UnlabelRequest extends SiftRequest {
protected HttpUrl path(HttpUrl baseUrl) {
UnlabelFieldSet unlabelFields = (UnlabelFieldSet)fieldSet;
HttpUrl.Builder builder = baseUrl.newBuilder()
- .addPathSegment("v205")
+ .addPathSegment("v206")
.addPathSegment("users")
.addPathSegment(unlabelFields.getUserId())
.addPathSegment("labels");
diff --git a/src/main/java/com/siftscience/UserScoreRequest.java b/src/main/java/com/siftscience/UserScoreRequest.java
index 8ef5f60d..4c754259 100644
--- a/src/main/java/com/siftscience/UserScoreRequest.java
+++ b/src/main/java/com/siftscience/UserScoreRequest.java
@@ -48,7 +48,7 @@ EntityScoreResponse buildResponse(Response response, FieldSet requestFields)
@Override
protected HttpUrl path(HttpUrl baseUrl) {
UserScoreFieldSet userScoreFieldSet = (UserScoreFieldSet)fieldSet;
- HttpUrl.Builder builder = baseUrl.newBuilder().addPathSegment("v205");
+ HttpUrl.Builder builder = baseUrl.newBuilder().addPathSegment("v206");
builder.addPathSegment("users")
.addPathSegment(userScoreFieldSet.getUserId())
.addPathSegment("score")
diff --git a/src/main/java/com/siftscience/model/Ach.java b/src/main/java/com/siftscience/model/Ach.java
new file mode 100644
index 00000000..35edcfb5
--- /dev/null
+++ b/src/main/java/com/siftscience/model/Ach.java
@@ -0,0 +1,48 @@
+package com.siftscience.model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class Ach {
+ @Expose @SerializedName("$ach_type") private String achType;
+ @Expose @SerializedName("$routing_number") private String routingNumber;
+ @Expose @SerializedName("$account_number") private String accountNumber;
+ @Expose @SerializedName("$account_holder_name") private String accountHolderName;
+
+ public String getAchType() {
+ return achType;
+ }
+
+ public Ach setAchType(String achType) {
+ this.achType = achType;
+ return this;
+ }
+
+ public String getRoutingNumber() {
+ return routingNumber;
+ }
+
+ public Ach setRoutingNumber(String routingNumber) {
+ this.routingNumber = routingNumber;
+ return this;
+ }
+
+ public String getAccountNumber() {
+ return accountNumber;
+ }
+
+ public Ach setAccountNumber(String accountNumber) {
+ this.accountNumber = accountNumber;
+ return this;
+ }
+
+ public String getAccountHolderName() {
+ return accountHolderName;
+ }
+
+ public Ach setAccountHolderName(String accountHolderName) {
+ this.accountHolderName = accountHolderName;
+ return this;
+ }
+
+}
diff --git a/src/main/java/com/siftscience/model/PaymentMethod.java b/src/main/java/com/siftscience/model/PaymentMethod.java
index e95e87eb..17859ec3 100644
--- a/src/main/java/com/siftscience/model/PaymentMethod.java
+++ b/src/main/java/com/siftscience/model/PaymentMethod.java
@@ -26,6 +26,8 @@ public class PaymentMethod {
@Expose @SerializedName("$stripe_address_zip_check") private String stripeAddressZipCheck;
@Expose @SerializedName("$stripe_funding") private String stripeFunding;
@Expose @SerializedName("$stripe_brand") private String stripeBrand;
+ @Expose @SerializedName("$ach") private Ach ach;
+ @Expose @SerializedName("$sepa") private Sepa sepa;
public String getPaymentType() {
return paymentType;
@@ -215,4 +217,22 @@ public PaymentMethod setStripeBrand(String stripeBrand) {
this.stripeBrand = stripeBrand;
return this;
}
+
+ public Ach getAch() {
+ return ach;
+ }
+
+ public PaymentMethod setAch(Ach ach) {
+ this.ach = ach;
+ return this;
+ }
+
+ public Sepa getSepa() {
+ return sepa;
+ }
+
+ public PaymentMethod setSepa(Sepa sepa) {
+ this.sepa = sepa;
+ return this;
+ }
}
diff --git a/src/main/java/com/siftscience/model/Sepa.java b/src/main/java/com/siftscience/model/Sepa.java
new file mode 100644
index 00000000..5639b40e
--- /dev/null
+++ b/src/main/java/com/siftscience/model/Sepa.java
@@ -0,0 +1,58 @@
+package com.siftscience.model;
+
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+public class Sepa {
+
+ @Expose @SerializedName("$sepa_type") private String sepaType;
+ @Expose @SerializedName("$account_holder_name") private String accountHolderName;
+ @Expose @SerializedName("$shortened_iban") private String shortenedIban;
+ @Expose @SerializedName("$bic") private String bic;
+ @Expose @SerializedName("$mandate_id") private String mandateId;
+
+ public String getSepaType() {
+ return sepaType;
+ }
+
+ public Sepa setSepaType(String sepaType) {
+ this.sepaType = sepaType;
+ return this;
+ }
+
+ public String getAccountHolderName() {
+ return accountHolderName;
+ }
+
+ public Sepa setAccountHolderName(String accountHolderName) {
+ this.accountHolderName = accountHolderName;
+ return this;
+ }
+
+ public String getShortenedIban() {
+ return shortenedIban;
+ }
+
+ public Sepa setShortenedIban(String iban) {
+ this.shortenedIban = iban;
+ return this;
+ }
+
+ public String getBic() {
+ return bic;
+ }
+
+ public Sepa setBic(String bic) {
+ this.bic = bic;
+ return this;
+ }
+
+ public String getMandateId() {
+ return mandateId;
+ }
+
+ public Sepa setMandateId(String mandateId) {
+ this.mandateId = mandateId;
+ return this;
+ }
+}
diff --git a/src/main/java/com/siftscience/model/TransactionFieldSet.java b/src/main/java/com/siftscience/model/TransactionFieldSet.java
index 9951411e..8bedcbb1 100644
--- a/src/main/java/com/siftscience/model/TransactionFieldSet.java
+++ b/src/main/java/com/siftscience/model/TransactionFieldSet.java
@@ -18,6 +18,13 @@ public class TransactionFieldSet extends BaseAppBrowserSiteBrandFieldSet sampleTags1() {
List tags = new ArrayList<>();
tags.add("Popcorn");
@@ -222,4 +239,13 @@ static List sampleCategories() {
categories.add("2 Bedrooms");
return categories;
}
+
+ static Sepa sampleSepa() {
+ return new Sepa()
+ .setSepaType("$instant_credit")
+ .setAccountHolderName("John Doe")
+ .setShortenedIban("FR76300060")
+ .setBic("testtest1")
+ .setMandateId("mandate_id");
+ }
}
diff --git a/src/test/java/com/siftscience/TransactionEventTest.java b/src/test/java/com/siftscience/TransactionEventTest.java
index 4b05234b..6ae77b33 100644
--- a/src/test/java/com/siftscience/TransactionEventTest.java
+++ b/src/test/java/com/siftscience/TransactionEventTest.java
@@ -128,7 +128,209 @@ public void testTransactionEvent() throws Exception {
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
+ JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
+
+ // Verify the response.
+ Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
+ Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
+ JSONAssert.assertEquals(response.getBody().readUtf8(),
+ siftResponse.getBody().toJson(), true);
+ server.shutdown();
+ }
+
+ @Test
+ public void testTransactionEventWithSepaPaymentMethod() throws Exception {
+ String expectedRequestBody = "{\n" +
+ " \"$type\" : \"$transaction\",\n" +
+ " \"$api_key\" : \"YOUR_API_KEY\",\n" +
+ " \"$user_id\" : \"billy_jones_301\",\n" +
+ " \"$amount\" : 506790000,\n" +
+ " \"$currency_code\" : \"USD\",\n" +
+ "\n" +
+ " \"$user_email\" : \"bill@gmail.com\",\n" +
+ " \"$transaction_type\" : \"$sale\",\n" +
+ " \"$transaction_status\" : \"$success\",\n" +
+ " \"$order_id\" : \"ORDER-123124124\",\n" +
+ " \"$transaction_id\" : \"719637215\",\n" +
+ "\n" +
+ " \"$payment_method\" : {\n" +
+ " \"$sepa\" : {\n" +
+ " \"$sepa_type\" : \"$instant_credit\",\n" +
+ " \"$account_holder_name\" : \"John Doe\",\n" +
+ " \"$shortened_iban\" : \"FR76300060\",\n" +
+ " \"$bic\" : \"testtest1\",\n" +
+ " \"$mandate_id\" : \"mandate_id\",\n" +
+ " }\n" +
+ " },\n" +
+ "}";
+
+ // Start a new mock server and enqueue a mock response.
+ MockWebServer server = new MockWebServer();
+ MockResponse response = new MockResponse();
+ response.setResponseCode(HTTP_OK);
+ response.setBody("{\n" +
+ " \"status\" : 0,\n" +
+ " \"error_message\" : \"OK\",\n" +
+ " \"time\" : 1327604222,\n" +
+ " \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
+ "}");
+ server.enqueue(response);
+ server.start();
+
+ // Create a new client and link it to the mock server.
+ SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
+ new OkHttpClient.Builder()
+ .addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
+ .build());
+
+ // Build and execute the request against the mock server.
+ EventRequest request = client.buildRequest(new TransactionFieldSet()
+ .setUserId("billy_jones_301")
+ .setAmount(506790000L)
+ .setCurrencyCode("USD")
+ .setUserEmail("bill@gmail.com")
+ .setTransactionType("$sale")
+ .setTransactionStatus("$success")
+ .setOrderId("ORDER-123124124")
+ .setTransactionId("719637215")
+ .setPaymentMethod(TestUtils.samplePaymentMethodWithSepa()));
+ EventResponse siftResponse = request.send();
+
+ // Verify the request.
+ RecordedRequest request1 = server.takeRequest();
+ Assert.assertEquals("POST", request1.getMethod());
+ Assert.assertEquals("/v206/events", request1.getPath());
+ JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
+
+ // Verify the response.
+ Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
+ Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
+ JSONAssert.assertEquals(response.getBody().readUtf8(),
+ siftResponse.getBody().toJson(), true);
+
+ server.shutdown();
+ }
+
+ @Test
+ public void testTransactionEventWithAch() throws Exception {
+ String expectedRequestBody = "{\n" +
+ " \"$type\" : \"$transaction\",\n" +
+ " \"$api_key\" : \"YOUR_API_KEY\",\n" +
+ " \"$user_id\" : \"billy_jones_301\",\n" +
+ " \"$amount\" : 506790000,\n" +
+ " \"$currency_code\" : \"USD\",\n" +
+ "\n" +
+ " \"$user_email\" : \"bill@gmail.com\",\n" +
+ " \"$transaction_type\" : \"$sale\",\n" +
+ " \"$transaction_status\" : \"$failure\",\n" +
+ " \"$order_id\" : \"ORDER-123124124\",\n" +
+ " \"$transaction_id\" : \"719637215\",\n" +
+ " \"$decline_category\" : \"$lost\",\n" +
+ " \"$site_country\": \"US\",\n" +
+ " \"$site_domain\": \"sift.com\",\n" +
+ " \"$brand_name\": \"sift\",\n" +
+ " \"$ordered_from\" : {\n" +
+ " \"$store_id\" : \"123\",\n" +
+ " \"$store_address\" : {\n" +
+ " \"$address_1\" : \"2100 Main Street\",\n" +
+ " \"$address_2\" : \"Apt 3B\",\n" +
+ " \"$city\" : \"New London\",\n" +
+ " \"$country\" : \"US\",\n" +
+ " \"$name\" : \"Bill Jones\",\n" +
+ " \"$phone\" : \"1-415-555-6040\",\n" +
+ " \"$region\" : \"New Hampshire\",\n" +
+ " \"$zipcode\" : \"03257\"\n" +
+ " }\n" +
+ " },\n" +
+ "\n" +
+ " \"$billing_address\" : {\n" +
+ " \"$name\" : \"Bill Jones\",\n" +
+ " \"$phone\" : \"1-415-555-6041\",\n" +
+ " \"$address_1\" : \"2100 Main Street\",\n" +
+ " \"$address_2\" : \"Apt 3B\",\n" +
+ " \"$city\" : \"New London\",\n" +
+ " \"$region\" : \"New Hampshire\",\n" +
+ " \"$country\" : \"US\",\n" +
+ " \"$zipcode\" : \"03257\"\n" +
+ " },\n" +
+ " \"$payment_method\" : {\n" +
+ " \"$ach\" : {\n" +
+ " \"$ach_type\" : \"$credit\",\n" +
+ " \"$routing_number\" : \"072403005\",\n" +
+ " \"$account_number\" : \"12345\",\n" +
+ " \"$account_holder_name\" : \"Jane Doe\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"$shipping_address\" : {\n" +
+ " \"$name\" : \"Bill Jones\",\n" +
+ " \"$phone\" : \"1-415-555-6041\",\n" +
+ " \"$address_1\" : \"2100 Main Street\",\n" +
+ " \"$address_2\" : \"Apt 3B\",\n" +
+ " \"$city\" : \"New London\",\n" +
+ " \"$region\" : \"New Hampshire\",\n" +
+ " \"$country\" : \"US\",\n" +
+ " \"$zipcode\" : \"03257\"\n" +
+ " },\n" +
+ " \"$session_id\" : \"gigtleqddo84l8cm15qe4il\",\n" +
+ "\n" +
+ " \"$seller_user_id\" : \"slinkys_emporium\",\n" +
+ "\n" +
+ " \"digital_wallet\" : \"apple_pay\",\n" +
+ " \"coupon_code\" : \"dollarMadness\",\n" +
+ " \"shipping_choice\" : \"FedEx Ground Courier\",\n" +
+ " \"is_first_time_buyer\" : false\n" +
+ "}";
+
+ // Start a new mock server and enqueue a mock response.
+ MockWebServer server = new MockWebServer();
+ MockResponse response = new MockResponse();
+ response.setResponseCode(HTTP_OK);
+ response.setBody("{\n" +
+ " \"status\" : 0,\n" +
+ " \"error_message\" : \"OK\",\n" +
+ " \"time\" : 1327604222,\n" +
+ " \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
+ "}");
+ server.enqueue(response);
+ server.start();
+
+ // Create a new client and link it to the mock server.
+ SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
+ new OkHttpClient.Builder()
+ .addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
+ .build());
+
+ // Build and execute the request against the mock server.
+ EventRequest request = client.buildRequest(new TransactionFieldSet()
+ .setUserId("billy_jones_301")
+ .setAmount(506790000L)
+ .setCurrencyCode("USD")
+ .setUserEmail("bill@gmail.com")
+ .setTransactionType("$sale")
+ .setTransactionStatus("$failure")
+ .setDeclineCategory("$lost")
+ .setSiteCountry("US")
+ .setSiteDomain("sift.com")
+ .setBrandName("sift")
+ .setOrderId("ORDER-123124124")
+ .setTransactionId("719637215")
+ .setBillingAddress(TestUtils.sampleAddress2())
+ .setPaymentMethod(TestUtils.samplePaymentMethod3())
+ .setShippingAddress(TestUtils.sampleAddress2())
+ .setOrderedFrom(TestUtils.sampleOrderedFrom())
+ .setSessionId("gigtleqddo84l8cm15qe4il")
+ .setSellerUserId("slinkys_emporium")
+ .setCustomField("digital_wallet", "apple_pay")
+ .setCustomField("coupon_code", "dollarMadness")
+ .setCustomField("shipping_choice", "FedEx Ground Courier")
+ .setCustomField("is_first_time_buyer", false));
+ EventResponse siftResponse = request.send();
+
+ // Verify the request.
+ RecordedRequest request1 = server.takeRequest();
+ Assert.assertEquals("POST", request1.getMethod());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
@@ -136,11 +338,111 @@ public void testTransactionEvent() throws Exception {
Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
JSONAssert.assertEquals(response.getBody().readUtf8(),
siftResponse.getBody().toJson(), true);
-// EventResponseBody ff = siftResponse.getBody();
-// siftResponse.getRequestBody()
-// siftResponse.getBody().getApiErrorMessage();
-// siftResponse.getApiErrorMessage();
server.shutdown();
}
+
+ @Test
+ public void testTransactionEventWithSenderReceiverAddressesAnd3dsFields() throws Exception {
+ String expectedRequestBody = "{\n" +
+ " \"$type\" : \"$transaction\",\n" +
+ " \"$api_key\" : \"YOUR_API_KEY\",\n" +
+ " \"$user_id\" : \"billy_jones_301\",\n" +
+ " \"$amount\" : 506790000,\n" +
+ " \"$currency_code\" : \"USD\",\n" +
+ "\n" +
+ " \"$user_email\" : \"bill@gmail.com\",\n" +
+ " \"$transaction_type\" : \"$sale\",\n" +
+ " \"$transaction_status\" : \"$failure\",\n" +
+ " \"$order_id\" : \"ORDER-123124124\",\n" +
+ " \"$transaction_id\" : \"719637215\",\n" +
+ " \"$decline_category\" : \"$lost\",\n" +
+ " \"$status_3ds\" : \"$authentication_successful\",\n" +
+ " \"$triggered_3ds\" : true,\n" +
+ " \"$processor_3ds_requested\" : false,\n" +
+ " \"$merchant_initiated_transaction\" : true,\n" +
+ " \"$sender_address\" : {\n" +
+ " \"$name\" : \"Bill Jones\",\n" +
+ " \"$phone\" : \"1-415-555-6041\",\n" +
+ " \"$address_1\" : \"2100 Main Street\",\n" +
+ " \"$address_2\" : \"Apt 3B\",\n" +
+ " \"$city\" : \"New London\",\n" +
+ " \"$region\" : \"New Hampshire\",\n" +
+ " \"$country\" : \"US\",\n" +
+ " \"$zipcode\" : \"03257\"\n" +
+ " },\n" +
+ " \"$receiver_address\" : {\n" +
+ " \"$name\" : \"Bill Jones\",\n" +
+ " \"$phone\" : \"1-415-555-6041\",\n" +
+ " \"$address_1\" : \"2100 Main Street\",\n" +
+ " \"$address_2\" : \"Apt 3B\",\n" +
+ " \"$city\" : \"New London\",\n" +
+ " \"$region\" : \"New Hampshire\",\n" +
+ " \"$country\" : \"US\",\n" +
+ " \"$zipcode\" : \"03257\"\n" +
+ " },\n" +
+ " \"$payment_method\" : {\n" +
+ " \"$ach\" : {\n" +
+ " \"$ach_type\" : \"$credit\",\n" +
+ " \"$routing_number\" : \"072403005\",\n" +
+ " \"$account_number\" : \"12345\",\n" +
+ " \"$account_holder_name\" : \"Jane Doe\"\n" +
+ " }\n" +
+ " },\n" +
+ "}";
+
+ // Start a new mock server and enqueue a mock response.
+ MockWebServer server = new MockWebServer();
+ MockResponse response = new MockResponse();
+ response.setResponseCode(HTTP_OK);
+ response.setBody("{\n" +
+ " \"status\" : 0,\n" +
+ " \"error_message\" : \"OK\",\n" +
+ " \"time\" : 1327604222,\n" +
+ " \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
+ "}");
+ server.enqueue(response);
+ server.start();
+
+ // Create a new client and link it to the mock server.
+ SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
+ new OkHttpClient.Builder()
+ .addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
+ .build());
+
+ // Build and execute the request against the mock server.
+ EventRequest request = client.buildRequest(new TransactionFieldSet()
+ .setUserId("billy_jones_301")
+ .setAmount(506790000L)
+ .setCurrencyCode("USD")
+ .setUserEmail("bill@gmail.com")
+ .setTransactionType("$sale")
+ .setTransactionStatus("$failure")
+ .setDeclineCategory("$lost")
+ .setOrderId("ORDER-123124124")
+ .setTransactionId("719637215")
+ .setStatus3Ds("$authentication_successful")
+ .setTriggered3Ds(true)
+ .setProcessor3DsRequested(false)
+ .setMerchantInitiatedTransaction(true)
+ .setSenderAddress(TestUtils.sampleAddress2())
+ .setReceiverAddress(TestUtils.sampleAddress2())
+ .setPaymentMethod(TestUtils.samplePaymentMethod3()));
+ EventResponse siftResponse = request.send();
+
+ // Verify the request.
+ RecordedRequest request1 = server.takeRequest();
+ Assert.assertEquals("POST", request1.getMethod());
+ Assert.assertEquals("/v206/events", request1.getPath());
+ JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
+
+ // Verify the response.
+ Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
+ Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
+ JSONAssert.assertEquals(response.getBody().readUtf8(),
+ siftResponse.getBody().toJson(), true);
+
+ server.shutdown();
+ }
+
}
diff --git a/src/test/java/com/siftscience/UnlabelTest.java b/src/test/java/com/siftscience/UnlabelTest.java
index c3831ec2..661f3004 100644
--- a/src/test/java/com/siftscience/UnlabelTest.java
+++ b/src/test/java/com/siftscience/UnlabelTest.java
@@ -36,7 +36,7 @@ public void testUnlabel() throws Exception {
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("DELETE", request1.getMethod());
- Assert.assertEquals("/v205/users/billy_jones_301/labels?api_key=YOUR_API_KEY" +
+ Assert.assertEquals("/v206/users/billy_jones_301/labels?api_key=YOUR_API_KEY" +
"&abuse_type=payment_abuse", request1.getPath());
// Verify the response.
@@ -70,7 +70,7 @@ public void testUnlabelAllAbuseTypes() throws Exception {
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("DELETE", request1.getMethod());
- Assert.assertEquals("/v205/users/billy_jones_301/labels?api_key=YOUR_API_KEY",
+ Assert.assertEquals("/v206/users/billy_jones_301/labels?api_key=YOUR_API_KEY",
request1.getPath());
// Verify the response.
diff --git a/src/test/java/com/siftscience/UpdateAccountEventTest.java b/src/test/java/com/siftscience/UpdateAccountEventTest.java
index 41f7ea2c..19291f9e 100644
--- a/src/test/java/com/siftscience/UpdateAccountEventTest.java
+++ b/src/test/java/com/siftscience/UpdateAccountEventTest.java
@@ -106,7 +106,7 @@ public void testUpdateAccount() throws Exception {
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
diff --git a/src/test/java/com/siftscience/UpdateOrderEventWithBookingsTest.java b/src/test/java/com/siftscience/UpdateOrderEventWithBookingsTest.java
index 4850abed..1cf18c57 100644
--- a/src/test/java/com/siftscience/UpdateOrderEventWithBookingsTest.java
+++ b/src/test/java/com/siftscience/UpdateOrderEventWithBookingsTest.java
@@ -205,7 +205,7 @@ public void testUpdateOrderEvent() throws JSONException, IOException, Interrupte
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
diff --git a/src/test/java/com/siftscience/UpdateOrderEventWithItemsTest.java b/src/test/java/com/siftscience/UpdateOrderEventWithItemsTest.java
index 3e5299c4..c2403d84 100644
--- a/src/test/java/com/siftscience/UpdateOrderEventWithItemsTest.java
+++ b/src/test/java/com/siftscience/UpdateOrderEventWithItemsTest.java
@@ -174,7 +174,7 @@ public void testUpdateOrderEvent() throws JSONException, IOException, Interrupte
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
diff --git a/src/test/java/com/siftscience/UpdateOrderEventWithSiteBrandOrderedFromFieldsTest.java b/src/test/java/com/siftscience/UpdateOrderEventWithSiteBrandOrderedFromFieldsTest.java
index 5f52ded0..6ea1c167 100644
--- a/src/test/java/com/siftscience/UpdateOrderEventWithSiteBrandOrderedFromFieldsTest.java
+++ b/src/test/java/com/siftscience/UpdateOrderEventWithSiteBrandOrderedFromFieldsTest.java
@@ -127,7 +127,7 @@ public void testUpdateOrderEvent() throws JSONException, IOException,
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
diff --git a/src/test/java/com/siftscience/UpdatePasswordEventTest.java b/src/test/java/com/siftscience/UpdatePasswordEventTest.java
index 71bbeff0..26cd4a7d 100644
--- a/src/test/java/com/siftscience/UpdatePasswordEventTest.java
+++ b/src/test/java/com/siftscience/UpdatePasswordEventTest.java
@@ -76,7 +76,7 @@ public void testUpdatePassword() throws Exception {
//Verify the request
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
diff --git a/src/test/java/com/siftscience/UserScoreTest.java b/src/test/java/com/siftscience/UserScoreTest.java
index 6a7bfebb..349f457a 100644
--- a/src/test/java/com/siftscience/UserScoreTest.java
+++ b/src/test/java/com/siftscience/UserScoreTest.java
@@ -80,7 +80,7 @@ public void testGetUserScoreAPI() throws IOException, InterruptedException,
.setRescoreUser(false);
testUserScore(userScoreFieldSet,
- "/v205/users/billy_jones_301/score?api_key=YOUR_API_KEY");
+ "/v206/users/billy_jones_301/score?api_key=YOUR_API_KEY");
}
@Test
@@ -96,7 +96,7 @@ public void testGetUserScoreAPIWithAbuseTypes() throws IOException, InterruptedE
.setRescoreUser(false);
testUserScore(userScoreFieldSet,
- "/v205/users/billy_jones_301/score?api_key=YOUR_API_KEY&" +
+ "/v206/users/billy_jones_301/score?api_key=YOUR_API_KEY&" +
"abuse_types=payment_abuse,promotion_abuse");
}
@@ -109,7 +109,7 @@ public void testRescoreUserScoreAPI() throws IOException, InterruptedException,
.setRescoreUser(true);
testUserScore(userScoreFieldSet,
- "/v205/users/billy_jones_301/score?api_key=YOUR_API_KEY");
+ "/v206/users/billy_jones_301/score?api_key=YOUR_API_KEY");
}
@Test
@@ -125,7 +125,7 @@ public void testRescoreUserScoreAPIWithAbuseTypes() throws IOException, Interrup
.setRescoreUser(true);
testUserScore(userScoreFieldSet,
- "/v205/users/billy_jones_301/score?api_key=YOUR_API_KEY&" +
+ "/v206/users/billy_jones_301/score?api_key=YOUR_API_KEY&" +
"abuse_types=payment_abuse,promotion_abuse");
}
diff --git a/src/test/java/com/siftscience/VerificationEventTest.java b/src/test/java/com/siftscience/VerificationEventTest.java
index 5b07b9f1..9b7d949d 100644
--- a/src/test/java/com/siftscience/VerificationEventTest.java
+++ b/src/test/java/com/siftscience/VerificationEventTest.java
@@ -87,7 +87,7 @@ public void testVerification() throws Exception {
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events", request1.getPath());
+ Assert.assertEquals("/v206/events", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
// Verify the response.
diff --git a/src/test/java/com/siftscience/WorkflowStatusTest.java b/src/test/java/com/siftscience/WorkflowStatusTest.java
index d7e0ea5e..f836fb58 100644
--- a/src/test/java/com/siftscience/WorkflowStatusTest.java
+++ b/src/test/java/com/siftscience/WorkflowStatusTest.java
@@ -136,7 +136,7 @@ public void testSynchronousWorkflowStatus() throws Exception {
// Verify the request.
RecordedRequest request1 = server.takeRequest();
Assert.assertEquals("POST", request1.getMethod());
- Assert.assertEquals("/v205/events?return_workflow_status=true&abuse_types=" +
+ Assert.assertEquals("/v206/events?return_workflow_status=true&abuse_types=" +
"payment_abuse,promotion_abuse", request1.getPath());
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);