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/FinancialAccount.java b/src/main/java/com/incognia/common/FinancialAccount.java new file mode 100644 index 00000000..89cf9e9f --- /dev/null +++ b/src/main/java/com/incognia/common/FinancialAccount.java @@ -0,0 +1,21 @@ +package com.incognia.common; + +import com.incognia.transaction.payment.PixKey; +import java.util.List; +import lombok.Builder; +import lombok.Value; + +@Value +@Builder +public class FinancialAccount { + String accountNumber; + String branchCode; + HolderTaxID holderTaxID; + String holderType; + String accountCheckDigit; + String accountPurpose; + String accountType; + String country; // ISO 3166-1 alpha-2 + String ispbCode; + List pixKeys; +} 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..ae673f02 --- /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 { + 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/feedback/FeedbackIdentifiers.java b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java index 9714b013..a47759e1 100644 --- a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java +++ b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java @@ -1,5 +1,6 @@ package com.incognia.feedback; +import com.incognia.common.FinancialAccount; import com.incognia.common.PersonID; import java.time.Instant; import lombok.Builder; @@ -18,4 +19,5 @@ public class FeedbackIdentifiers { String externalId; Instant expiresAt; PersonID personId; + FinancialAccount financialAccount; } diff --git a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java index 959673d9..5fcbd599 100644 --- a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java +++ b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java @@ -1,5 +1,6 @@ package com.incognia.feedback; +import com.incognia.common.FinancialAccount; import com.incognia.common.PersonID; import lombok.Builder; import lombok.Value; @@ -19,4 +20,5 @@ public class PostFeedbackRequestBody { String signupId; String expiresAt; PersonID personId; + FinancialAccount financialAccount; } diff --git a/src/test/java/com/incognia/api/IncogniaAPITest.java b/src/test/java/com/incognia/api/IncogniaAPITest.java index 5ef91761..2163bb16 100644 --- a/src/test/java/com/incognia/api/IncogniaAPITest.java +++ b/src/test/java/com/incognia/api/IncogniaAPITest.java @@ -13,6 +13,8 @@ import com.incognia.api.clients.TokenAwareDispatcher; import com.incognia.common.Address; import com.incognia.common.Coordinates; +import com.incognia.common.FinancialAccount; +import com.incognia.common.HolderTaxID; import com.incognia.common.Location; import com.incognia.common.PersonID; import com.incognia.common.Reason; @@ -983,6 +985,15 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) { String signupId = UUID.randomUUID().toString(); Instant timestamp = Instant.now(); PersonID personId = PersonID.ofCPF("12345678901"); + HolderTaxID holderTaxId = HolderTaxID.ofCNPJ("50100638000172"); + + FinancialAccount financialAccount = + FinancialAccount.builder() + .accountNumber("123456") + .branchCode("1234") + .holderTaxID(holderTaxId) + .holderType("individual") + .build(); dispatcher.setExpectedFeedbackRequestBody( PostFeedbackRequestBody.builder() @@ -993,6 +1004,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 +1016,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) { .externalId(externalId) .signupId(signupId) .personId(personId) + .financialAccount(financialAccount) .build(), dryRun); }