diff --git a/.gitignore b/.gitignore
index 453a1383..a8a68238 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ lib/*
*/target/
/target/
/.metadata/
+.metals/*
\ No newline at end of file
diff --git a/README.md b/README.md
index 6d5eaeab..bc794856 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
Riskified JAVA SDK
=================
-version: 6.0.1
+version: 6.1.0
------------------
See http://apiref.riskified.com for full API documentation
@@ -104,7 +104,7 @@ curl -H "Content-Type: application/json" -H "X-RISKIFIED-HMAC-SHA256: 071ef80d5
com.riskified
riskified-sdk
- 6.0.1
+ 6.1.0
```
diff --git a/riskified-sample/pom.xml b/riskified-sample/pom.xml
index 0d2f8790..e7fddf46 100644
--- a/riskified-sample/pom.xml
+++ b/riskified-sample/pom.xml
@@ -13,7 +13,7 @@
com.riskified
riskified-sdk
- 6.0.1
+ 6.1.0
diff --git a/riskified-sdk/pom.xml b/riskified-sdk/pom.xml
index dd2966d5..cba50966 100644
--- a/riskified-sdk/pom.xml
+++ b/riskified-sdk/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.riskified
riskified-sdk
- 6.0.1
+ 6.1.0
Riskified SDK
Riskified rest api SDK for java
https://www.riskified.com
diff --git a/riskified-sdk/src/main/java/com/riskified/RiskifiedClient.java b/riskified-sdk/src/main/java/com/riskified/RiskifiedClient.java
index b96ea49f..809e826b 100644
--- a/riskified-sdk/src/main/java/com/riskified/RiskifiedClient.java
+++ b/riskified-sdk/src/main/java/com/riskified/RiskifiedClient.java
@@ -1075,7 +1075,7 @@ private HttpPost createPostRequest(String url) {
postRequest.setHeader(HttpHeaders.ACCEPT, "application/vnd.riskified.com; version=2");
postRequest.setHeader(HttpHeaders.ACCEPT, "application/json");
postRequest.setHeader("X-RISKIFIED-SHOP-DOMAIN", shopUrl);
- postRequest.setHeader("User-Agent","riskified_java_sdk/6.0.1"); // TODO: take the version automatically
+ postRequest.setHeader("User-Agent","riskified_java_sdk/6.1.0"); // TODO: take the version automatically
postRequest.setHeader("Version",versionHeaderValue);
return postRequest;
}
diff --git a/riskified-sdk/src/main/java/com/riskified/models/BankWirePaymentDetails.java b/riskified-sdk/src/main/java/com/riskified/models/BankWirePaymentDetails.java
index 69652cbb..23e90baa 100644
--- a/riskified-sdk/src/main/java/com/riskified/models/BankWirePaymentDetails.java
+++ b/riskified-sdk/src/main/java/com/riskified/models/BankWirePaymentDetails.java
@@ -11,6 +11,12 @@ public class BankWirePaymentDetails implements IPaymentDetails {
private Date storedPaymentCreatedAt;
private Date storedPaymentUpdatedAt;
private PaymentType paymentType = PaymentType.BANK_TRANSFER;
+ private int daysSinceAccountOpening;
+ private int daysWithNegativeBalanceCount;
+ private boolean isSavingsOrMoneyMarketAccount;
+ private int nsfOverdraftTransactionsCount;
+ private int unauthorizedTransactionsCount;
+ private PlaidScores plaidScores;
public BankWirePaymentDetails(String accountNumber, String routingNumber) {
this.accountNumber = accountNumber;
@@ -59,10 +65,59 @@ public void setStoredPaymentUpdatedAt(Date storedPaymentUpdatedAt){
public PaymentType getPaymentType() { return paymentType; }
+ public int getDaysSinceAccountOpening() {
+ return daysSinceAccountOpening;
+ }
+
+ public void setDaysSinceAccountOpening(int daysSinceAccountOpening) {
+ this.daysSinceAccountOpening = daysSinceAccountOpening;
+ }
+
+ public int getDaysWithNegativeBalanceCount() {
+ return daysWithNegativeBalanceCount;
+ }
+
+ public void setDaysWithNegativeBalanceCount(int daysWithNegativeBalanceCount) {
+ this.daysWithNegativeBalanceCount = daysWithNegativeBalanceCount;
+ }
+
+ public boolean getIsSavingsOrMoneyMarketAccount() {
+ return isSavingsOrMoneyMarketAccount;
+ }
+
+ public void setIsSavingsOrMoneyMarketAccount(boolean isSavingsOrMoneyMarketAccount) {
+ this.isSavingsOrMoneyMarketAccount = isSavingsOrMoneyMarketAccount;
+ }
+
+ public int getNsfOverdraftTransactionsCount() {
+ return nsfOverdraftTransactionsCount;
+ }
+
+ public void setNsfOverdraftTransactionsCount(int nsfOverdraftTransactionsCount) {
+ this.nsfOverdraftTransactionsCount = nsfOverdraftTransactionsCount;
+ }
+
+ public int getUnauthorizedTransactionsCount() {
+ return unauthorizedTransactionsCount;
+ }
+
+ public void setUnauthorizedTransactionsCount(int unauthorizedTransactionsCount) {
+ this.unauthorizedTransactionsCount = unauthorizedTransactionsCount;
+ }
+
+ public PlaidScores getPlaidScores() {
+ return plaidScores;
+ }
+
+ public void setPlaidScores(PlaidScores plaidScores) {
+ this.plaidScores = plaidScores;
+ }
+
public void validate(Validation validationType) throws FieldBadFormatException {
if (validationType == Validation.ALL) {
Validate.notNullOrEmpty(this, this.accountNumber, "Bank Account Number");
Validate.notNullOrEmpty(this, this.routingNumber, "Bank Routing Number");
}
}
-}
+
+}
\ No newline at end of file
diff --git a/riskified-sdk/src/main/java/com/riskified/models/InitiatedReturnRisk.java b/riskified-sdk/src/main/java/com/riskified/models/InitiatedReturnRisk.java
new file mode 100644
index 00000000..95f179be
--- /dev/null
+++ b/riskified-sdk/src/main/java/com/riskified/models/InitiatedReturnRisk.java
@@ -0,0 +1,20 @@
+package com.riskified.models;
+
+public class InitiatedReturnRisk {
+ private int score;
+ private int riskTier;
+
+ public int getScore() {
+ return score;
+ }
+ public void setScore(int score) {
+ this.score = score;
+ }
+ public int getRiskTier() {
+ return riskTier;
+ }
+
+ public void setRiskTier(int riskTier) {
+ this.riskTier = riskTier;
+ }
+}
\ No newline at end of file
diff --git a/riskified-sdk/src/main/java/com/riskified/models/PlaidScores.java b/riskified-sdk/src/main/java/com/riskified/models/PlaidScores.java
new file mode 100644
index 00000000..0ce0d8ba
--- /dev/null
+++ b/riskified-sdk/src/main/java/com/riskified/models/PlaidScores.java
@@ -0,0 +1,22 @@
+package com.riskified.models;
+
+public class PlaidScores {
+ private InitiatedReturnRisk customerInitiatedReturnRisk;
+ private InitiatedReturnRisk bankInitiatedReturnRisk;
+
+ public InitiatedReturnRisk getCustomerInitiatedReturnRisk() {
+ return customerInitiatedReturnRisk;
+ }
+
+ public void setCustomerInitiatedReturnRisk(InitiatedReturnRisk customerInitiatedReturnRisk) {
+ this.customerInitiatedReturnRisk = customerInitiatedReturnRisk;
+ }
+
+ public InitiatedReturnRisk getBankInitiatedReturnRisk() {
+ return bankInitiatedReturnRisk;
+ }
+
+ public void setBankInitiatedReturnRisk(InitiatedReturnRisk bankInitiatedReturnRisk) {
+ this.bankInitiatedReturnRisk = bankInitiatedReturnRisk;
+ }
+}
\ No newline at end of file
diff --git a/riskified-sdk/src/test/java/com/riskified/models/PaymentDetailsTest.java b/riskified-sdk/src/test/java/com/riskified/models/PaymentDetailsTest.java
index 6b9250d6..c5b4504c 100644
--- a/riskified-sdk/src/test/java/com/riskified/models/PaymentDetailsTest.java
+++ b/riskified-sdk/src/test/java/com/riskified/models/PaymentDetailsTest.java
@@ -57,4 +57,81 @@ public void testBankWirePaymentTypeSerializesToBankTransfer() {
String json = gson.toJson(bankWire);
assertTrue(json.contains("\"payment_type\":\"bank_transfer\""));
}
+
+ @Test
+ public void testBankWirePlaidScalarFieldsSerializeWithCorrectKeys() {
+ BankWirePaymentDetails bankWire = new BankWirePaymentDetails("123456789", "021000021");
+ bankWire.setDaysSinceAccountOpening(90);
+ bankWire.setDaysWithNegativeBalanceCount(4);
+ bankWire.setIsSavingsOrMoneyMarketAccount(true);
+ bankWire.setNsfOverdraftTransactionsCount(31);
+ bankWire.setUnauthorizedTransactionsCount(2);
+
+ String json = gson.toJson(bankWire);
+
+ assertTrue(json.contains("\"days_since_account_opening\":90"));
+ assertTrue(json.contains("\"days_with_negative_balance_count\":4"));
+ assertTrue(json.contains("\"is_savings_or_money_market_account\":true"));
+ assertTrue(json.contains("\"nsf_overdraft_transactions_count\":31"));
+ assertTrue(json.contains("\"unauthorized_transactions_count\":2"));
+ }
+
+ @Test
+ public void testBankWirePlaidScoresGetterAndSetter() {
+ BankWirePaymentDetails bankWire = new BankWirePaymentDetails("123456789", "021000021");
+
+ InitiatedReturnRisk customerRisk = new InitiatedReturnRisk();
+ customerRisk.setScore(9);
+ customerRisk.setRiskTier(1);
+
+ InitiatedReturnRisk bankRisk = new InitiatedReturnRisk();
+ bankRisk.setScore(82);
+ bankRisk.setRiskTier(7);
+
+ PlaidScores plaidScores = new PlaidScores();
+ plaidScores.setCustomerInitiatedReturnRisk(customerRisk);
+ plaidScores.setBankInitiatedReturnRisk(bankRisk);
+
+ bankWire.setPlaidScores(plaidScores);
+
+ assertEquals(9, bankWire.getPlaidScores().getCustomerInitiatedReturnRisk().getScore());
+ assertEquals(1, bankWire.getPlaidScores().getCustomerInitiatedReturnRisk().getRiskTier());
+ assertEquals(82, bankWire.getPlaidScores().getBankInitiatedReturnRisk().getScore());
+ assertEquals(7, bankWire.getPlaidScores().getBankInitiatedReturnRisk().getRiskTier());
+ }
+
+ @Test
+ public void testBankWirePlaidScoresSerializeWithCorrectStructure() {
+ BankWirePaymentDetails bankWire = new BankWirePaymentDetails("123456789", "021000021");
+
+ InitiatedReturnRisk customerRisk = new InitiatedReturnRisk();
+ customerRisk.setScore(9);
+ customerRisk.setRiskTier(1);
+
+ InitiatedReturnRisk bankRisk = new InitiatedReturnRisk();
+ bankRisk.setScore(82);
+ bankRisk.setRiskTier(7);
+
+ PlaidScores plaidScores = new PlaidScores();
+ plaidScores.setCustomerInitiatedReturnRisk(customerRisk);
+ plaidScores.setBankInitiatedReturnRisk(bankRisk);
+
+ bankWire.setPlaidScores(plaidScores);
+
+ String json = gson.toJson(bankWire);
+
+ assertTrue(json.contains("\"plaid_scores\""));
+ assertTrue(json.contains("\"customer_initiated_return_risk\""));
+ assertTrue(json.contains("\"bank_initiated_return_risk\""));
+ assertTrue(json.contains("\"score\":9"));
+ assertTrue(json.contains("\"risk_tier\":1"));
+ assertTrue(json.contains("\"score\":82"));
+ assertTrue(json.contains("\"risk_tier\":7"));
+ }
+
+ @Test
+ public void testBankWirePlaidScoresNullByDefault() {
+ BankWirePaymentDetails bankWire = new BankWirePaymentDetails("123456789", "021000021");
+ assertNull(bankWire.getPlaidScores());
+ }
}