Skip to content

Commit 41618a8

Browse files
adding new fields to transaction event to support new payment use-cases
1 parent 7562168 commit 41618a8

2 files changed

Lines changed: 165 additions & 0 deletions

File tree

src/main/java/com/siftscience/model/TransactionFieldSet.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ public class TransactionFieldSet extends BaseAppBrowserSiteBrandFieldSet<Transac
1818
@Expose @SerializedName("$transfer_recipient_user_id") private String transferRecipientUserId;
1919
@Expose @SerializedName("$ordered_from") private OrderedFrom orderedFrom;
2020
@Expose @SerializedName("$decline_category") private String declineCategory;
21+
@Expose @SerializedName("$sender_address") private Address senderAddress;
22+
@Expose @SerializedName("$receiver_address") private Address receiverAddress;
23+
@Expose @SerializedName("$status_3ds") private String status3Ds;
24+
@Expose @SerializedName("$triggered_3ds") private Boolean triggered3Ds;
25+
@Expose @SerializedName("$processor_3ds_requested") private Boolean processor3DsRequested;
26+
@Expose @SerializedName("$merchant_initiated_transaction")
27+
private Boolean merchantInitiatedTransaction;
2128

2229
@Override
2330
public String getEventType() {
@@ -153,4 +160,59 @@ public TransactionFieldSet setDeclineCategory(String declineCategory) {
153160
this.declineCategory = declineCategory;
154161
return this;
155162
}
163+
164+
public Address getSenderAddress() {
165+
return senderAddress;
166+
}
167+
168+
public TransactionFieldSet setSenderAddress(Address senderAddress) {
169+
this.senderAddress = senderAddress;
170+
return this;
171+
}
172+
173+
public Address getReceiverAddress() {
174+
return receiverAddress;
175+
}
176+
177+
public TransactionFieldSet setReceiverAddress(Address receiverAddress) {
178+
this.receiverAddress = receiverAddress;
179+
return this;
180+
}
181+
182+
public String getStatus3Ds() {
183+
return status3Ds;
184+
}
185+
186+
public TransactionFieldSet setStatus3Ds(String status3Ds) {
187+
this.status3Ds = status3Ds;
188+
return this;
189+
}
190+
191+
public Boolean getTriggered3Ds() {
192+
return triggered3Ds;
193+
}
194+
195+
public TransactionFieldSet setTriggered3Ds(Boolean triggered3Ds) {
196+
this.triggered3Ds = triggered3Ds;
197+
return this;
198+
}
199+
200+
public Boolean getProcessor3DsRequested() {
201+
return processor3DsRequested;
202+
}
203+
204+
public TransactionFieldSet setProcessor3DsRequested(Boolean processor3DsRequested) {
205+
this.processor3DsRequested = processor3DsRequested;
206+
return this;
207+
}
208+
209+
public Boolean getMerchantInitiatedTransaction() {
210+
return merchantInitiatedTransaction;
211+
}
212+
213+
public TransactionFieldSet setMerchantInitiatedTransaction(
214+
Boolean merchantInitiatedTransaction) {
215+
this.merchantInitiatedTransaction = merchantInitiatedTransaction;
216+
return this;
217+
}
156218
}

src/test/java/com/siftscience/TransactionEventTest.java

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,4 +342,107 @@ public void testTransactionEventWithAch() throws Exception {
342342
server.shutdown();
343343
}
344344

345+
@Test
346+
public void testTransactionEventWithSenderReceiverAddressesAnd3dsFields() throws Exception {
347+
String expectedRequestBody = "{\n" +
348+
" \"$type\" : \"$transaction\",\n" +
349+
" \"$api_key\" : \"YOUR_API_KEY\",\n" +
350+
" \"$user_id\" : \"billy_jones_301\",\n" +
351+
" \"$amount\" : 506790000,\n" +
352+
" \"$currency_code\" : \"USD\",\n" +
353+
"\n" +
354+
" \"$user_email\" : \"bill@gmail.com\",\n" +
355+
" \"$transaction_type\" : \"$sale\",\n" +
356+
" \"$transaction_status\" : \"$failure\",\n" +
357+
" \"$order_id\" : \"ORDER-123124124\",\n" +
358+
" \"$transaction_id\" : \"719637215\",\n" +
359+
" \"$decline_category\" : \"$lost\",\n" +
360+
" \"$status_3ds\" : \"$authentication_successful\",\n" +
361+
" \"$triggered_3ds\" : true,\n" +
362+
" \"$processor_3ds_requested\" : false,\n" +
363+
" \"$merchant_initiated_transaction\" : true,\n" +
364+
" \"$sender_address\" : {\n" +
365+
" \"$name\" : \"Bill Jones\",\n" +
366+
" \"$phone\" : \"1-415-555-6041\",\n" +
367+
" \"$address_1\" : \"2100 Main Street\",\n" +
368+
" \"$address_2\" : \"Apt 3B\",\n" +
369+
" \"$city\" : \"New London\",\n" +
370+
" \"$region\" : \"New Hampshire\",\n" +
371+
" \"$country\" : \"US\",\n" +
372+
" \"$zipcode\" : \"03257\"\n" +
373+
" },\n" +
374+
" \"$receiver_address\" : {\n" +
375+
" \"$name\" : \"Bill Jones\",\n" +
376+
" \"$phone\" : \"1-415-555-6041\",\n" +
377+
" \"$address_1\" : \"2100 Main Street\",\n" +
378+
" \"$address_2\" : \"Apt 3B\",\n" +
379+
" \"$city\" : \"New London\",\n" +
380+
" \"$region\" : \"New Hampshire\",\n" +
381+
" \"$country\" : \"US\",\n" +
382+
" \"$zipcode\" : \"03257\"\n" +
383+
" },\n" +
384+
" \"$payment_method\" : {\n" +
385+
" \"$ach\" : {\n" +
386+
" \"$ach_type\" : \"$credit\",\n" +
387+
" \"$routing_number\" : \"072403005\",\n" +
388+
" \"$account_number\" : \"12345\",\n" +
389+
" \"$account_holder_name\" : \"Jane Doe\"\n" +
390+
" }\n" +
391+
" },\n" +
392+
"}";
393+
394+
// Start a new mock server and enqueue a mock response.
395+
MockWebServer server = new MockWebServer();
396+
MockResponse response = new MockResponse();
397+
response.setResponseCode(HTTP_OK);
398+
response.setBody("{\n" +
399+
" \"status\" : 0,\n" +
400+
" \"error_message\" : \"OK\",\n" +
401+
" \"time\" : 1327604222,\n" +
402+
" \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
403+
"}");
404+
server.enqueue(response);
405+
server.start();
406+
407+
// Create a new client and link it to the mock server.
408+
SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
409+
new OkHttpClient.Builder()
410+
.addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
411+
.build());
412+
413+
// Build and execute the request against the mock server.
414+
EventRequest request = client.buildRequest(new TransactionFieldSet()
415+
.setUserId("billy_jones_301")
416+
.setAmount(506790000L)
417+
.setCurrencyCode("USD")
418+
.setUserEmail("bill@gmail.com")
419+
.setTransactionType("$sale")
420+
.setTransactionStatus("$failure")
421+
.setDeclineCategory("$lost")
422+
.setOrderId("ORDER-123124124")
423+
.setTransactionId("719637215")
424+
.setStatus3Ds("$authentication_successful")
425+
.setTriggered3Ds(true)
426+
.setProcessor3DsRequested(false)
427+
.setMerchantInitiatedTransaction(true)
428+
.setSenderAddress(TestUtils.sampleAddress2())
429+
.setReceiverAddress(TestUtils.sampleAddress2())
430+
.setPaymentMethod(TestUtils.samplePaymentMethod3()));
431+
EventResponse siftResponse = request.send();
432+
433+
// Verify the request.
434+
RecordedRequest request1 = server.takeRequest();
435+
Assert.assertEquals("POST", request1.getMethod());
436+
Assert.assertEquals("/v206/events", request1.getPath());
437+
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
438+
439+
// Verify the response.
440+
Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
441+
Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
442+
JSONAssert.assertEquals(response.getBody().readUtf8(),
443+
siftResponse.getBody().toJson(), true);
444+
445+
server.shutdown();
446+
}
447+
345448
}

0 commit comments

Comments
 (0)