From 2264102cb24c579fcccb63f140f539eeeadb2c72 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Mon, 2 Sep 2024 02:40:30 +0700 Subject: [PATCH 1/9] Add missing request params --- build.gradle | 2 +- .../java/co/omise/models/BankAccount.java | 10 +++++++ src/main/java/co/omise/models/Card.java | 8 ++++++ src/main/java/co/omise/models/Charge.java | 28 +++++++++++++++++++ src/main/java/co/omise/models/Customer.java | 14 ++++++++++ src/main/java/co/omise/models/Source.java | 16 ++++++++++- .../co/omise/requests/ChargeRequestTest.java | 4 +-- 7 files changed, 78 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index ca5a44dd..8ccf782b 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ buildscript { dependencies { classpath "io.github.goooler.shadow:shadow-gradle-plugin:8.1.8" - classpath 'com.github.ben-manes:gradle-versions-plugin:0.15.0' + classpath 'com.github.ben-manes:gradle-versions-plugin:0.42.0' classpath("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:5.1.0.4882") } } diff --git a/src/main/java/co/omise/models/BankAccount.java b/src/main/java/co/omise/models/BankAccount.java index b0bb7920..7a7be650 100644 --- a/src/main/java/co/omise/models/BankAccount.java +++ b/src/main/java/co/omise/models/BankAccount.java @@ -18,6 +18,8 @@ public class BankAccount extends Model { private String name; @JsonProperty("type") private String accountType; + @JsonProperty("account_number") + private String accountNumber; public String getBankCode() { return this.bankCode; @@ -67,6 +69,14 @@ public void setAccountType(String accountType) { this.accountType = accountType; } + public String getAccountNumber() { + return this.accountNumber; + } + + public void setAccountNumber(String accountNumber) { + this.accountNumber = accountNumber; + } + public static class Params extends co.omise.models.Params { @JsonProperty("bank_code") private String bankCode; diff --git a/src/main/java/co/omise/models/Card.java b/src/main/java/co/omise/models/Card.java index 43bd06ce..6d399d53 100644 --- a/src/main/java/co/omise/models/Card.java +++ b/src/main/java/co/omise/models/Card.java @@ -230,6 +230,9 @@ public static class Create extends co.omise.models.Params { @JsonProperty private String street2; + @JsonProperty + private String email; + public Create city(String city) { this.city = city; return this; @@ -290,6 +293,11 @@ public Create street2(String street2) { return this; } + public Create email(String email) { + this.email = email; + return this; + } + public Create expiration(YearMonth expiration) { return expirationMonth(expiration.getMonthValue()) .expirationYear(expiration.getYear()); diff --git a/src/main/java/co/omise/models/Charge.java b/src/main/java/co/omise/models/Charge.java index ccc28146..3c10a703 100644 --- a/src/main/java/co/omise/models/Charge.java +++ b/src/main/java/co/omise/models/Charge.java @@ -569,6 +569,14 @@ public static class CreateRequestBuilder extends RequestBuilder { private AuthorizationType authorizationType; @JsonProperty("webhook_endpoints") private List webhookEndpoints; + @JsonProperty("first_charge") + private String firstCharge; + @JsonProperty("linked_account") + private String linkedAccount; + @JsonProperty("recurring_reason") + private String recurringReason; + @JsonProperty("transaction_indicator") + private String transactionIndicator; @Override protected String method() { @@ -665,6 +673,26 @@ public CreateRequestBuilder webhookEndpoints(List webhookEndpoints) { return this; } + public CreateRequestBuilder firstCharge(String firstCharge) { + this.firstCharge = firstCharge; + return this; + } + + public CreateRequestBuilder linkedAccount(String linkedAccount) { + this.linkedAccount = linkedAccount; + return this; + } + + public CreateRequestBuilder recurringReason(String recurringReason) { + this.recurringReason = recurringReason; + return this; + } + + public CreateRequestBuilder transactionIndicator(String transactionIndicator) { + this.transactionIndicator = transactionIndicator; + return this; + } + @Override protected RequestBody payload() throws IOException { return serialize(); diff --git a/src/main/java/co/omise/models/Customer.java b/src/main/java/co/omise/models/Customer.java index 22dc34ea..35d6bbff 100644 --- a/src/main/java/co/omise/models/Customer.java +++ b/src/main/java/co/omise/models/Customer.java @@ -129,6 +129,8 @@ public static class UpdateRequestBuilder extends RequestBuilder { private String email; @JsonProperty private Map metadata; + @JsonProperty("linked_account") + private String linkedAccount; public UpdateRequestBuilder(String customerId) { this.customerId = customerId; } @@ -173,6 +175,11 @@ public UpdateRequestBuilder metadata(Map metadata) { return this; } + public UpdateRequestBuilder linkedAccount(String linkedAccount) { + this.linkedAccount = linkedAccount; + return this; + } + @Override protected RequestBody payload() throws IOException { return serialize(); @@ -225,6 +232,8 @@ public static class CreateRequestBuilder extends RequestBuilder { private String email; @JsonProperty private Map metadata; + @JsonProperty("linked_account") + private String linkedAccount; @Override protected String method() { @@ -261,6 +270,11 @@ public CreateRequestBuilder metadata(Map metadata) { return this; } + public CreateRequestBuilder linkedAccount(String linkedAccount) { + this.linkedAccount = linkedAccount; + return this; + } + @Override protected RequestBody payload() throws IOException { return serialize(); diff --git a/src/main/java/co/omise/models/Source.java b/src/main/java/co/omise/models/Source.java index 6c055124..57cac3a2 100644 --- a/src/main/java/co/omise/models/Source.java +++ b/src/main/java/co/omise/models/Source.java @@ -252,7 +252,11 @@ public static class CreateRequestBuilder extends RequestBuilder { private String phoneNumber; @JsonProperty("items") private List items; - + @JsonProperty + private Shipping billing; + @JsonProperty("promotion_code") + private String promotionCode; + @Override protected String method() { return POST; @@ -361,6 +365,16 @@ public CreateRequestBuilder platformType(PlatformType platformType) { return this; } + public CreateRequestBuilder billing(Shipping billing) { + this.billing = billing; + return this; + } + + public CreateRequestBuilder promotionCode(String promotionCode) { + this.promotionCode = promotionCode; + return this; + } + @Override protected RequestBody payload() throws IOException { return serialize(); diff --git a/src/test/java/co/omise/requests/ChargeRequestTest.java b/src/test/java/co/omise/requests/ChargeRequestTest.java index f9378eca..3c223683 100644 --- a/src/test/java/co/omise/requests/ChargeRequestTest.java +++ b/src/test/java/co/omise/requests/ChargeRequestTest.java @@ -59,7 +59,7 @@ public void testCreateWithWebhooks() throws IOException, OmiseException { Charge charge = getTestRequester().sendRequest(createChargeRequest); assertRequested("POST", "/charges", 200); - assertRequestBody("{\"amount\":100000,\"capture\":false,\"card\":null,\"currency\":\"thb\",\"customer\":null,\"description\":null,\"ip\":null,\"metadata\":null,\"reference\":null,\"source\":null,\"zero_interest_installments\":false,\"expires_at\":null,\"platform_fee\":null,\"return_uri\":null,\"authorization_type\":null,\"webhook_endpoints\":[\"https://webhook.site/123\"]}"); + assertRequestBody("{\"amount\":100000,\"capture\":false,\"card\":null,\"currency\":\"thb\",\"customer\":null,\"description\":null,\"ip\":null,\"metadata\":null,\"reference\":null,\"source\":null,\"zero_interest_installments\":false,\"expires_at\":null,\"platform_fee\":null,\"return_uri\":null,\"authorization_type\":null,\"webhook_endpoints\":[\"https://webhook.site/123\"],\"first_charge\":null,\"linked_account\":null,\"recurring_reason\":null,\"transaction_indicator\":null}"); assertNotNull(charge); } @@ -98,7 +98,7 @@ public void testCreatePartialCaptureCharge() throws IOException, OmiseException Charge charge = getTestRequester().sendRequest(createChargeRequest); assertRequested("POST", "/charges", 200); - assertRequestBody("{\"amount\":100000,\"capture\":false,\"card\":null,\"currency\":\"thb\",\"customer\":null,\"description\":null,\"ip\":null,\"metadata\":null,\"reference\":null,\"source\":null,\"zero_interest_installments\":false,\"expires_at\":null,\"platform_fee\":null,\"return_uri\":\"http://example.com/orders/345678/complete\",\"authorization_type\":\"pre_auth\",\"webhook_endpoints\":null}"); + assertRequestBody("{\"amount\":100000,\"capture\":false,\"card\":null,\"currency\":\"thb\",\"customer\":null,\"description\":null,\"ip\":null,\"metadata\":null,\"reference\":null,\"source\":null,\"zero_interest_installments\":false,\"expires_at\":null,\"platform_fee\":null,\"return_uri\":\"http://example.com/orders/345678/complete\",\"authorization_type\":\"pre_auth\",\"webhook_endpoints\":null,\"first_charge\":null,\"linked_account\":null,\"recurring_reason\":null,\"transaction_indicator\":null}"); assertNotNull(charge); } From 36312412f17682d276d56e398a85ed3657cce66e Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Mon, 2 Sep 2024 02:42:57 +0700 Subject: [PATCH 2/9] Restore old sonar organization --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8ccf782b..f4a484d5 100644 --- a/build.gradle +++ b/build.gradle @@ -175,7 +175,7 @@ dependencies { sonar { properties { property 'sonar.host.url', 'https://sonarcloud.io' - property 'sonar.organization', 'omise-1' + property 'sonar.organization', 'omise' property 'sonar.projectName', 'omise-java' property 'sonar.projectKey', 'omise_omise-java' property 'sonar.coverage.jacoco.xmlReportPaths', "${project.buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml" From bbf5fe7ca4c40bc5a8e80cea587b4219a7ac3a86 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Wed, 4 Sep 2024 09:49:31 +0700 Subject: [PATCH 3/9] Revert "Restore old sonar organization" This reverts commit 36312412f17682d276d56e398a85ed3657cce66e. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f4a484d5..8ccf782b 100644 --- a/build.gradle +++ b/build.gradle @@ -175,7 +175,7 @@ dependencies { sonar { properties { property 'sonar.host.url', 'https://sonarcloud.io' - property 'sonar.organization', 'omise' + property 'sonar.organization', 'omise-1' property 'sonar.projectName', 'omise-java' property 'sonar.projectKey', 'omise_omise-java' property 'sonar.coverage.jacoco.xmlReportPaths', "${project.buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml" From 1be0d679e1f79eae16e238e4f4fc018542d6fc79 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Thu, 5 Sep 2024 14:44:48 +0700 Subject: [PATCH 4/9] Revert "Revert "Restore old sonar organization"" This reverts commit bbf5fe7ca4c40bc5a8e80cea587b4219a7ac3a86. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8ccf782b..f4a484d5 100644 --- a/build.gradle +++ b/build.gradle @@ -175,7 +175,7 @@ dependencies { sonar { properties { property 'sonar.host.url', 'https://sonarcloud.io' - property 'sonar.organization', 'omise-1' + property 'sonar.organization', 'omise' property 'sonar.projectName', 'omise-java' property 'sonar.projectKey', 'omise_omise-java' property 'sonar.coverage.jacoco.xmlReportPaths', "${project.buildDir}/reports/jacoco/jacocoTestReport/jacocoTestReport.xml" From 5d102daa45422c61ff3f039f13fee3b1171f449b Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Thu, 5 Sep 2024 16:38:28 +0700 Subject: [PATCH 5/9] Update Card test --- src/test/java/co/omise/requests/TokenRequestTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/co/omise/requests/TokenRequestTest.java b/src/test/java/co/omise/requests/TokenRequestTest.java index eb3ae3a0..26e6d8c5 100644 --- a/src/test/java/co/omise/requests/TokenRequestTest.java +++ b/src/test/java/co/omise/requests/TokenRequestTest.java @@ -35,13 +35,16 @@ public void testCreate() throws IOException, OmiseException { .expiration(YearMonth.now().plusYears(1)) .securityCode("123") .city("Bangkok") - .postalCode("10240")) + .postalCode("10240") + .email("email@opn.ooo") + ) .build(); Token token = getTestRequester().sendRequest(request); assertRequested("POST", "/tokens", 200); assertVaultRequest(); + assertRequestBody("{\"card\":{\"city\":\"Bangkok\",\"country\":null,\"name\":\"JOHN DOE\",\"number\":\"4242424242424242\",\"state\":null,\"street1\":null,\"street2\":null,\"email\":\"email@opn.ooo\",\"expiration_month\":9,\"expiration_year\":2025,\"phone_number\":null,\"postal_code\":\"10240\",\"security_code\":\"123\"}}"); assertEquals(TOKEN_ID, token.getId()); assertFalse(token.isLiveMode()); From c49ade60009e689091a20615d30c425c78259aa7 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Thu, 5 Sep 2024 17:12:30 +0700 Subject: [PATCH 6/9] Update charge request test --- src/test/java/co/omise/requests/ChargeRequestTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/java/co/omise/requests/ChargeRequestTest.java b/src/test/java/co/omise/requests/ChargeRequestTest.java index 3c223683..6722f382 100644 --- a/src/test/java/co/omise/requests/ChargeRequestTest.java +++ b/src/test/java/co/omise/requests/ChargeRequestTest.java @@ -93,12 +93,16 @@ public void testCreatePartialCaptureCharge() throws IOException, OmiseException .capture(false) .authorizationType(AuthorizationType.PreAuth) .returnUri("http://example.com/orders/345678/complete") + .firstCharge(CHARGE_ID) + .linkedAccount("acc_id") + .recurringReason("reason") + .transactionIndicator("trans_id") .build(); Charge charge = getTestRequester().sendRequest(createChargeRequest); assertRequested("POST", "/charges", 200); - assertRequestBody("{\"amount\":100000,\"capture\":false,\"card\":null,\"currency\":\"thb\",\"customer\":null,\"description\":null,\"ip\":null,\"metadata\":null,\"reference\":null,\"source\":null,\"zero_interest_installments\":false,\"expires_at\":null,\"platform_fee\":null,\"return_uri\":\"http://example.com/orders/345678/complete\",\"authorization_type\":\"pre_auth\",\"webhook_endpoints\":null,\"first_charge\":null,\"linked_account\":null,\"recurring_reason\":null,\"transaction_indicator\":null}"); + assertRequestBody("{\"amount\":100000,\"capture\":false,\"card\":null,\"currency\":\"thb\",\"customer\":null,\"description\":null,\"ip\":null,\"metadata\":null,\"reference\":null,\"source\":null,\"zero_interest_installments\":false,\"expires_at\":null,\"platform_fee\":null,\"return_uri\":\"http://example.com/orders/345678/complete\",\"authorization_type\":\"pre_auth\",\"webhook_endpoints\":null,\"first_charge\":\"chrg_test_4yq7duw15p9hdrjp8oq\",\"linked_account\":\"acc_id\",\"recurring_reason\":\"reason\",\"transaction_indicator\":\"trans_id\"}"); assertNotNull(charge); } From 5f331ef3b714bf6f4bd887f4a624b2be58b8fde3 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Thu, 5 Sep 2024 17:12:39 +0700 Subject: [PATCH 7/9] Update customer tests --- src/test/java/co/omise/requests/CustomerRequestTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/co/omise/requests/CustomerRequestTest.java b/src/test/java/co/omise/requests/CustomerRequestTest.java index 4d8116b6..3e16052b 100644 --- a/src/test/java/co/omise/requests/CustomerRequestTest.java +++ b/src/test/java/co/omise/requests/CustomerRequestTest.java @@ -15,11 +15,14 @@ public void testCreate() throws IOException, OmiseException { Request request = new Customer.CreateRequestBuilder() .email("john.doe@example.com") .description("John Doe (id: 30)") + .linkedAccount("acc_id") .build(); Customer customer = getTestRequester().sendRequest(request); assertRequested("POST", "/customers", 200); + assertRequestBody("{\"card\":null,\"description\":\"John Doe (id: 30)\",\"email\":\"john.doe@example.com\",\"metadata\":null,\"linked_account\":\"acc_id\"}"); + assertEquals("customer", customer.getObject()); assertEquals(CUSTOMER_ID, customer.getId()); @@ -44,10 +47,12 @@ public void testGet() throws IOException, OmiseException { public void testUpdate() throws IOException, OmiseException { Request request = new Customer.UpdateRequestBuilder(CUSTOMER_ID) .email("john.doe.the.second@example.com") + .linkedAccount("acc_id") .build(); Customer customer = getTestRequester().sendRequest(request); assertRequested("PATCH", "/customers/" + CUSTOMER_ID, 200); + assertRequestBody("{\"email\":\"john.doe.the.second@example.com\",\"linked_account\":\"acc_id\"}"); assertEquals(CUSTOMER_ID, customer.getId()); assertEquals("john.doe.the.second@example.com", customer.getEmail()); From 71e6d125803521b648a93e0f3f7e2c9ef93e41b7 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Thu, 5 Sep 2024 17:13:13 +0700 Subject: [PATCH 8/9] Update recipient tests --- .../api.omise.co/recipients-post.json | 23 +++++++++++++++++++ .../omise/requests/RecipientRequestTest.java | 1 + .../api.omise.co/recipients-post.json | 3 ++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 bin/test/testdata/fixtures/api.omise.co/recipients-post.json diff --git a/bin/test/testdata/fixtures/api.omise.co/recipients-post.json b/bin/test/testdata/fixtures/api.omise.co/recipients-post.json new file mode 100644 index 00000000..22db2583 --- /dev/null +++ b/bin/test/testdata/fixtures/api.omise.co/recipients-post.json @@ -0,0 +1,23 @@ +{ + "object": "recipient", + "id": "recp_test_50894vc13y8z4v51iuc", + "livemode": false, + "location": "/recipients/recp_test_50894vc13y8z4v51iuc", + "verified": true, + "active": true, + "name": "john.doe@example.com", + "email": "john.doe@example.com", + "description": "Default recipient", + "type": "individual", + "tax_id": null, + "bank_account": { + "object": "bank_account", + "brand": "test", + "last_digits": "6789", + "name": "JOHN DOE", + "created_at": "2015-06-02T09:26:59Z", + "account_number": "1111" + }, + "failure_code": null, + "created_at": "2015-06-02T09:26:59Z" +} diff --git a/src/test/java/co/omise/requests/RecipientRequestTest.java b/src/test/java/co/omise/requests/RecipientRequestTest.java index aab06c80..f1ebd25d 100644 --- a/src/test/java/co/omise/requests/RecipientRequestTest.java +++ b/src/test/java/co/omise/requests/RecipientRequestTest.java @@ -24,6 +24,7 @@ public void testCreate() throws IOException, OmiseException { assertEquals(RECIPIENT_ID, recipient.getId()); assertEquals("john.doe@example.com", recipient.getEmail()); assertEquals("6789", recipient.getBankAccount().getLastDigits()); + assertEquals("1111", recipient.getBankAccount().getAccountNumber()); assertEquals("Default recipient", recipient.getDescription()); } diff --git a/src/test/resources/testdata/fixtures/api.omise.co/recipients-post.json b/src/test/resources/testdata/fixtures/api.omise.co/recipients-post.json index 8955b0ba..22db2583 100644 --- a/src/test/resources/testdata/fixtures/api.omise.co/recipients-post.json +++ b/src/test/resources/testdata/fixtures/api.omise.co/recipients-post.json @@ -15,7 +15,8 @@ "brand": "test", "last_digits": "6789", "name": "JOHN DOE", - "created_at": "2015-06-02T09:26:59Z" + "created_at": "2015-06-02T09:26:59Z", + "account_number": "1111" }, "failure_code": null, "created_at": "2015-06-02T09:26:59Z" From 28893b4cc298917c1f33294d66eb3fa7f9c969a0 Mon Sep 17 00:00:00 2001 From: AnasNaouchi Date: Thu, 5 Sep 2024 17:13:24 +0700 Subject: [PATCH 9/9] Update source test --- src/test/java/co/omise/requests/SourceRequestTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/test/java/co/omise/requests/SourceRequestTest.java b/src/test/java/co/omise/requests/SourceRequestTest.java index 9cd3652b..a167d16a 100644 --- a/src/test/java/co/omise/requests/SourceRequestTest.java +++ b/src/test/java/co/omise/requests/SourceRequestTest.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import co.omise.models.OmiseException; +import co.omise.models.Shipping; import co.omise.models.Source; import co.omise.models.SourceType; import co.omise.testutils.TestSourceRequestBuilder; @@ -15,13 +16,22 @@ public class SourceRequestTest extends RequestTest { @Test public void testCreate() throws IOException, OmiseException { + + Shipping shipping = new Shipping(); + shipping.country = "TH"; + shipping.postalCode = "000000"; + shipping.street1 = "Street"; + Request request = new Source.CreateRequestBuilder() .amount(100000) .currency("thb") .type(SourceType.Alipay) + .billing(shipping) + .promotionCode("code") .build(); Source source = getTestRequester().sendRequest(request); + assertRequestBody("{\"amount\":100000,\"bank\":null,\"barcode\":null,\"currency\":\"thb\",\"email\":null,\"ip\":null,\"name\":null,\"type\":\"alipay\",\"shipping\":null,\"billing\":{\"street1\":\"Street\",\"street2\":null,\"city\":null,\"state\":null,\"country\":\"TH\",\"postal_code\":\"000000\"},\"installment_term\":0,\"mobile_number\":null,\"store_id\":null,\"store_name\":null,\"terminal_id\":null,\"zero_interest_installments\":false,\"platform_type\":null,\"phone_number\":null,\"items\":null,\"promotion_code\":\"code\"}"); assertRequested("POST", "/sources", 200); assertEquals(100000L, source.getAmount());