diff --git a/README.md b/README.md index 5a6666ec..187ddf61 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,14 @@ And then add the artifact `incognia-api-client` **or** `incognia-api-client-shad com.incognia incognia-api-client - 3.14.0 + 3.15.0 ``` ```xml com.incognia incognia-api-client-shaded - 3.14.0 + 3.15.0 ``` @@ -47,13 +47,13 @@ repositories { And then add the dependency ```gradle dependencies { - implementation 'com.incognia:incognia-api-client:3.14.0' + implementation 'com.incognia:incognia-api-client:3.15.0' } ``` OR ```gradle dependencies { - implementation 'com.incognia:incognia-api-client-shaded:3.14.0' + implementation 'com.incognia:incognia-api-client-shaded:3.15.0' } ``` diff --git a/build.gradle b/build.gradle index 4833104d..f81a0367 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group = "com.incognia" -version = "3.14.0" +version = "3.15.0" task createProjectVersionFile { def projectVersionDir = "$projectDir/src/main/java/com/incognia/api" diff --git a/src/main/java/com/incognia/api/IncogniaAPI.java b/src/main/java/com/incognia/api/IncogniaAPI.java index beaf3490..df950a8a 100644 --- a/src/main/java/com/incognia/api/IncogniaAPI.java +++ b/src/main/java/com/incognia/api/IncogniaAPI.java @@ -543,6 +543,7 @@ public void registerFeedback( .externalId(identifiers.getExternalId()) .requestToken(identifiers.getRequestToken()) .personId(identifiers.getPersonId()) + .financialAccount(identifiers.getFinancialAccount()) .expiresAt( Optional.ofNullable(identifiers.getExpiresAt()).map(Instant::toString).orElse(null)) .build(); diff --git a/src/main/java/com/incognia/common/HolderTaxID.java b/src/main/java/com/incognia/common/HolderTaxID.java new file mode 100644 index 00000000..467e3af0 --- /dev/null +++ b/src/main/java/com/incognia/common/HolderTaxID.java @@ -0,0 +1,27 @@ +package com.incognia.common; + +import lombok.Builder; +import lombok.Value; + +@Value +@Builder +public class HolderTaxID implements TypedValue { + String type; + String value; + + public static HolderTaxID ofCPF(String cpfValue) { + return HolderTaxID.builder().type("cpf").value(cpfValue).build(); + } + + public static HolderTaxID ofSSN(String ssnValue) { + return HolderTaxID.builder().type("ssn").value(ssnValue).build(); + } + + public static HolderTaxID ofEIN(String einValue) { + return HolderTaxID.builder().type("ein").value(einValue).build(); + } + + public static HolderTaxID ofCNPJ(String cnpjValue) { + return HolderTaxID.builder().type("cnpj").value(cnpjValue).build(); + } +} diff --git a/src/main/java/com/incognia/common/PersonID.java b/src/main/java/com/incognia/common/PersonID.java index 095c40f3..712ca90d 100644 --- a/src/main/java/com/incognia/common/PersonID.java +++ b/src/main/java/com/incognia/common/PersonID.java @@ -5,7 +5,7 @@ @Value @Builder -public class PersonID { +public class PersonID implements TypedValue { String type; String value; diff --git a/src/main/java/com/incognia/common/TypedValue.java b/src/main/java/com/incognia/common/TypedValue.java new file mode 100644 index 00000000..331847bc --- /dev/null +++ b/src/main/java/com/incognia/common/TypedValue.java @@ -0,0 +1,7 @@ +package com.incognia.common; + +public interface TypedValue { + String getType(); + + String getValue(); +} diff --git a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java index 9714b013..4dc44a3b 100644 --- a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java +++ b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java @@ -1,6 +1,7 @@ package com.incognia.feedback; import com.incognia.common.PersonID; +import com.incognia.transaction.payment.BankAccountInfo; import java.time.Instant; import lombok.Builder; import lombok.Value; @@ -18,4 +19,5 @@ public class FeedbackIdentifiers { String externalId; Instant expiresAt; PersonID personId; + BankAccountInfo financialAccount; } diff --git a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java index 959673d9..01f5134b 100644 --- a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java +++ b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java @@ -1,6 +1,7 @@ package com.incognia.feedback; import com.incognia.common.PersonID; +import com.incognia.transaction.payment.BankAccountInfo; import lombok.Builder; import lombok.Value; @@ -19,4 +20,5 @@ public class PostFeedbackRequestBody { String signupId; String expiresAt; PersonID personId; + BankAccountInfo financialAccount; } diff --git a/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java b/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java index a83f923e..72bc2ea7 100644 --- a/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java +++ b/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java @@ -1,6 +1,6 @@ package com.incognia.transaction.payment; -import com.incognia.common.PersonID; +import com.incognia.common.HolderTaxID; import java.util.Collections; import java.util.List; import lombok.Builder; @@ -12,7 +12,7 @@ public class BankAccountInfo { String accountType; String accountPurpose; String holderType; - PersonID holderTaxId; + HolderTaxID holderTaxId; String country; String ispbCode; String branchCode; diff --git a/src/test/java/com/incognia/api/IncogniaAPITest.java b/src/test/java/com/incognia/api/IncogniaAPITest.java index 5ef91761..81b8e7b0 100644 --- a/src/test/java/com/incognia/api/IncogniaAPITest.java +++ b/src/test/java/com/incognia/api/IncogniaAPITest.java @@ -13,6 +13,7 @@ import com.incognia.api.clients.TokenAwareDispatcher; import com.incognia.common.Address; import com.incognia.common.Coordinates; +import com.incognia.common.HolderTaxID; import com.incognia.common.Location; import com.incognia.common.PersonID; import com.incognia.common.Reason; @@ -835,7 +836,7 @@ void testRegisterPayment_whenDataIsValid(Boolean eval) { .accountType("checking") .accountPurpose("general") .holderType("individual") - .holderTaxId(PersonID.builder().type("cpf").value("12345678901").build()) + .holderTaxId(HolderTaxID.builder().type("cpf").value("12345678901").build()) .country("BR") .ispbCode("12345678") .branchCode("0000") @@ -983,6 +984,14 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) { String signupId = UUID.randomUUID().toString(); Instant timestamp = Instant.now(); PersonID personId = PersonID.ofCPF("12345678901"); + HolderTaxID holderTaxID = HolderTaxID.ofCPF("12345678901"); + BankAccountInfo financialAccount = + BankAccountInfo.builder() + .accountNumber("123456") + .branchCode("1234") + .holderTaxId(holderTaxID) + .holderType("individual") + .build(); dispatcher.setExpectedFeedbackRequestBody( PostFeedbackRequestBody.builder() @@ -993,6 +1002,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) { .event(FeedbackEvent.ACCOUNT_TAKEOVER) .timestamp(timestamp.toEpochMilli()) .personId(personId) + .financialAccount(financialAccount) .build()); mockServer.setDispatcher(dispatcher); client.registerFeedback( @@ -1004,6 +1014,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) { .externalId(externalId) .signupId(signupId) .personId(personId) + .financialAccount(financialAccount) .build(), dryRun); }