Skip to content

Commit ba7af16

Browse files
[PAY-5294] - added deposit/withdrawal transaction fields support
1 parent 94562da commit ba7af16

File tree

3 files changed

+192
-1
lines changed

3 files changed

+192
-1
lines changed

CHANGES.MD

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
3.17.0 (2024-11-15)
22
=================
3-
- Added support for `$wager` event type
3+
- Added support for `$wager` event type in Events API
4+
- Added support for `$minimum_deposit_amount`, `$maximum_deposit_amount`,
5+
`$minimum_withdrawal_amount`, `$maximum_withdrawal_amount`, `$current_balance`,
6+
and `$new_balance` fields to `$transaction` events
47

58
3.16.0 (2024-09-26)
69
=================

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

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ public class TransactionFieldSet extends BaseAppBrowserSiteBrandFieldSet<Transac
3131
@Expose @SerializedName("$digital_orders") private List<DigitalOrder> digitalOrders;
3232
@Expose @SerializedName("$receiver_wallet_address") private String receiverWalletAddress;
3333
@Expose @SerializedName("$receiver_external_address") private Boolean receiverExternalAddress;
34+
@Expose @SerializedName("$minimum_deposit_amount") private Long minimumDepositAmount;
35+
@Expose @SerializedName("$maximum_deposit_amount") private Long maximumDepositAmount;
36+
@Expose @SerializedName("$minimum_withdrawal_amount") private Long minimumWithdrawalAmount;
37+
@Expose @SerializedName("$maximum_withdrawal_amount") private Long maximumWithdrawalAmount;
38+
@Expose @SerializedName("$current_balance") private Long currentBalance;
39+
@Expose @SerializedName("$new_balance") private Long newBalance;
3440

3541

3642
@Override
@@ -258,4 +264,58 @@ public TransactionFieldSet setReceiverExternalAddress(Boolean receiverExternalAd
258264
this.receiverExternalAddress = receiverExternalAddress;
259265
return this;
260266
}
267+
268+
public Long getMinimumDepositAmount() {
269+
return minimumDepositAmount;
270+
}
271+
272+
public TransactionFieldSet setMinimumDepositAmount(Long minimumDepositAmount) {
273+
this.minimumDepositAmount = minimumDepositAmount;
274+
return this;
275+
}
276+
277+
public Long getMaximumDepositAmount() {
278+
return maximumDepositAmount;
279+
}
280+
281+
public TransactionFieldSet setMaximumDepositAmount(Long maximumDepositAmount) {
282+
this.maximumDepositAmount = maximumDepositAmount;
283+
return this;
284+
}
285+
286+
public Long getMinimumWithdrawalAmount() {
287+
return minimumWithdrawalAmount;
288+
}
289+
290+
public TransactionFieldSet setMinimumWithdrawalAmount(Long minimumWithdrawalAmount) {
291+
this.minimumWithdrawalAmount = minimumWithdrawalAmount;
292+
return this;
293+
}
294+
295+
public Long getMaximumWithdrawalAmount() {
296+
return maximumWithdrawalAmount;
297+
}
298+
299+
public TransactionFieldSet setMaximumWithdrawalAmount(Long maximumWithdrawalAmount) {
300+
this.maximumWithdrawalAmount = maximumWithdrawalAmount;
301+
return this;
302+
}
303+
304+
public Long getCurrentBalance() {
305+
return currentBalance;
306+
}
307+
308+
public TransactionFieldSet setCurrentBalance(Long currentBalance) {
309+
this.currentBalance = currentBalance;
310+
return this;
311+
}
312+
313+
public Long getNewBalance() {
314+
return newBalance;
315+
}
316+
317+
public TransactionFieldSet setNewBalance(Long newBalance) {
318+
this.newBalance = newBalance;
319+
return this;
320+
}
261321
}

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

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,4 +666,132 @@ public void testTransactionEventWithCryptoFields() throws Exception {
666666

667667
server.shutdown();
668668
}
669+
670+
@Test
671+
public void testTransactionEventWithExtraDepositFields() throws Exception {
672+
String expectedRequestBody = "{\n" +
673+
" \"$type\" : \"$transaction\",\n" +
674+
" \"$api_key\" : \"YOUR_API_KEY\",\n" +
675+
" \"$user_id\" : \"billy_jones_301\",\n" +
676+
" \"$amount\" : 500000,\n" +
677+
" \"$currency_code\" : \"USD\",\n" +
678+
" \"$transaction_type\" : \"$deposit\",\n" +
679+
" \"$transaction_id\" : \"719637215\",\n" +
680+
" \"$minimum_deposit_amount\" : 5000,\n" +
681+
" \"$maximum_deposit_amount\" : 100000000,\n" +
682+
" \"$current_balance\" : 500000,\n" +
683+
" \"$new_balance\" : 1000000,\n" +
684+
"}";
685+
686+
// Start a new mock server and enqueue a mock response.
687+
MockWebServer server = new MockWebServer();
688+
MockResponse response = new MockResponse();
689+
response.setResponseCode(HTTP_OK);
690+
response.setBody("{\n" +
691+
" \"status\" : 0,\n" +
692+
" \"error_message\" : \"OK\",\n" +
693+
" \"time\" : 1327604222,\n" +
694+
" \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
695+
"}");
696+
server.enqueue(response);
697+
server.start();
698+
699+
// Create a new client and link it to the mock server.
700+
SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
701+
new OkHttpClient.Builder()
702+
.addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
703+
.build());
704+
705+
// Build and execute the request against the mock server.
706+
EventRequest request = client.buildRequest(new TransactionFieldSet()
707+
.setUserId("billy_jones_301")
708+
.setAmount(500000L)
709+
.setCurrencyCode("USD")
710+
.setTransactionType("$deposit")
711+
.setTransactionId("719637215")
712+
.setMinimumDepositAmount(5000L)
713+
.setMaximumDepositAmount(100000000L)
714+
.setCurrentBalance(500000L)
715+
.setNewBalance(1000000L));
716+
717+
EventResponse siftResponse = request.send();
718+
719+
// Verify the request.
720+
RecordedRequest request1 = server.takeRequest();
721+
Assert.assertEquals("POST", request1.getMethod());
722+
Assert.assertEquals("/v205/events", request1.getPath());
723+
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
724+
725+
// Verify the response.
726+
Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
727+
Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
728+
JSONAssert.assertEquals(response.getBody().readUtf8(),
729+
siftResponse.getBody().toJson(), true);
730+
731+
server.shutdown();
732+
}
733+
734+
@Test
735+
public void testTransactionEventWithExtraWithdrawalFields() throws Exception {
736+
String expectedRequestBody = "{\n" +
737+
" \"$type\" : \"$transaction\",\n" +
738+
" \"$api_key\" : \"YOUR_API_KEY\",\n" +
739+
" \"$user_id\" : \"billy_jones_301\",\n" +
740+
" \"$amount\" : 500000,\n" +
741+
" \"$currency_code\" : \"USD\",\n" +
742+
" \"$transaction_type\" : \"$withdrawal\",\n" +
743+
" \"$transaction_id\" : \"719637215\",\n" +
744+
" \"$minimum_withdrawal_amount\" : 5000,\n" +
745+
" \"$maximum_withdrawal_amount\" : 100000000,\n" +
746+
" \"$current_balance\" : 1000000,\n" +
747+
" \"$new_balance\" : 500000,\n" +
748+
"}";
749+
750+
// Start a new mock server and enqueue a mock response.
751+
MockWebServer server = new MockWebServer();
752+
MockResponse response = new MockResponse();
753+
response.setResponseCode(HTTP_OK);
754+
response.setBody("{\n" +
755+
" \"status\" : 0,\n" +
756+
" \"error_message\" : \"OK\",\n" +
757+
" \"time\" : 1327604222,\n" +
758+
" \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
759+
"}");
760+
server.enqueue(response);
761+
server.start();
762+
763+
// Create a new client and link it to the mock server.
764+
SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
765+
new OkHttpClient.Builder()
766+
.addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
767+
.build());
768+
769+
// Build and execute the request against the mock server.
770+
EventRequest request = client.buildRequest(new TransactionFieldSet()
771+
.setUserId("billy_jones_301")
772+
.setAmount(500000L)
773+
.setCurrencyCode("USD")
774+
.setTransactionType("$withdrawal")
775+
.setTransactionId("719637215")
776+
.setMinimumWithdrawalAmount(5000L)
777+
.setMaximumWithdrawalAmount(100000000L)
778+
.setCurrentBalance(1000000L)
779+
.setNewBalance(500000L));
780+
781+
EventResponse siftResponse = request.send();
782+
783+
// Verify the request.
784+
RecordedRequest request1 = server.takeRequest();
785+
Assert.assertEquals("POST", request1.getMethod());
786+
Assert.assertEquals("/v205/events", request1.getPath());
787+
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
788+
789+
// Verify the response.
790+
Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
791+
Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
792+
JSONAssert.assertEquals(response.getBody().readUtf8(),
793+
siftResponse.getBody().toJson(), true);
794+
795+
server.shutdown();
796+
}
669797
}

0 commit comments

Comments
 (0)