From 733c94822794ec170e2cb168295b6ec6e4b3987e Mon Sep 17 00:00:00 2001 From: yaphet17 Date: Thu, 1 Jun 2023 16:40:39 +0300 Subject: [PATCH 1/8] Add return_url field to PostData --- pom.xml | 2 +- src/main/java/com/yaphet/chapa/Chapa.java | 5 +++++ src/main/java/com/yaphet/chapa/model/PostData.java | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 323f963..0db8479 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.yaphet17 Chapa - 1.2.1 + 1.2.2-SNAPSHOT jar Chapa diff --git a/src/main/java/com/yaphet/chapa/Chapa.java b/src/main/java/com/yaphet/chapa/Chapa.java index 2976bd8..2dd8a8e 100644 --- a/src/main/java/com/yaphet/chapa/Chapa.java +++ b/src/main/java/com/yaphet/chapa/Chapa.java @@ -61,6 +61,7 @@ public InitializeResponseData initialize(PostData postData) throws Throwable { / Customization customization = postData.getCustomization(); String callbackUrl = postData.getCallbackUrl(); + String returnUrl = postData.getReturnUrl(); String subAccountId = postData.getSubAccountId(); if (Util.notNullAndEmpty(subAccountId)) { @@ -71,6 +72,10 @@ public InitializeResponseData initialize(PostData postData) throws Throwable { / fields.put("callback_url", callbackUrl); } + if (Util.notNullAndEmpty(returnUrl)) { + fields.put("return_url", returnUrl); + } + if (customization != null) { // TODO: consider directly adding all values to fields map if (Util.notNullAndEmpty(customization.getTitle())) { diff --git a/src/main/java/com/yaphet/chapa/model/PostData.java b/src/main/java/com/yaphet/chapa/model/PostData.java index f997295..fddacca 100644 --- a/src/main/java/com/yaphet/chapa/model/PostData.java +++ b/src/main/java/com/yaphet/chapa/model/PostData.java @@ -21,6 +21,8 @@ public class PostData { private String txRef; @SerializedName("callback_url") private String callbackUrl; + @SerializedName("return_url") + private String returnUrl; @SerializedName("subaccounts[id]") private String subAccountId; private Customization customization; @@ -88,6 +90,15 @@ public PostData setCallbackUrl(String callbackUrl) { return this; } + public String getReturnUrl() { + return returnUrl; + } + + public PostData setReturnUrl(String returnUrl) { + this.returnUrl = returnUrl; + return this; + } + public String getSubAccountId() { return subAccountId; } From 1fe71df82220d3276b603feaba100182bbadc72b Mon Sep 17 00:00:00 2001 From: yaphet17 Date: Thu, 1 Jun 2023 18:45:06 +0300 Subject: [PATCH 2/8] Create ChapaException class to handle 4XX and 5XX response codes --- src/main/java/com/yaphet/chapa/Chapa.java | 25 +++++++++++++++++++ .../chapa/exception/ChapaException.java | 19 ++++++++++++++ .../java/com/yaphet/chapa/utility/Util.java | 4 +++ src/test/java/com/yaphet/chapa/ChapaTest.java | 7 ++++-- 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/yaphet/chapa/exception/ChapaException.java diff --git a/src/main/java/com/yaphet/chapa/Chapa.java b/src/main/java/com/yaphet/chapa/Chapa.java index 2dd8a8e..eeb04ef 100644 --- a/src/main/java/com/yaphet/chapa/Chapa.java +++ b/src/main/java/com/yaphet/chapa/Chapa.java @@ -2,6 +2,7 @@ import com.yaphet.chapa.client.ChapaClient; import com.yaphet.chapa.client.ChapaClientImpl; +import com.yaphet.chapa.exception.ChapaException; import com.yaphet.chapa.model.*; import com.yaphet.chapa.utility.Util; @@ -94,6 +95,10 @@ public InitializeResponseData initialize(PostData postData) throws Throwable { / responseBody = chapaClient.post(BASE_URL + "/transaction/initialize", fields, SECRETE_KEY); statusCode = chapaClient.getStatusCode(); + if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) { + throw new ChapaException(responseBody); + } + InitializeResponseData initializeResponseData = Util.jsonToInitializeResponseData(responseBody) .setRawJson(responseBody) .setStatusCode(statusCode); @@ -115,6 +120,10 @@ public InitializeResponseData initialize(String jsonData) throws Throwable { responseBody = chapaClient.post(BASE_URL + "/transaction/initialize", jsonData, SECRETE_KEY); statusCode = chapaClient.getStatusCode(); + if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) { + throw new ChapaException(responseBody); + } + InitializeResponseData initializeResponseData = Util.jsonToInitializeResponseData(responseBody) .setRawJson(responseBody) .setStatusCode(statusCode); @@ -137,6 +146,10 @@ public VerifyResponseData verify(String transactionRef) throws Throwable { responseBody = chapaClient.get(BASE_URL + "/transaction/verify/" + transactionRef, SECRETE_KEY); statusCode = chapaClient.getStatusCode(); + if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) { + throw new ChapaException(responseBody); + } + VerifyResponseData verifyResponseData = Util.jsonToVerifyResponseData(responseBody) .setRawJson(responseBody) .setStatusCode(statusCode); @@ -152,6 +165,10 @@ public List banks() throws Throwable { responseBody = chapaClient.get(BASE_URL + "/banks", SECRETE_KEY); statusCode = chapaClient.getStatusCode(); + if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) { + throw new ChapaException(responseBody); + } + return Util.extractBanks(responseBody); } @@ -176,6 +193,10 @@ public SubAccountResponseData createSubAccount(SubAccount subAccount) throws Thr responseBody = chapaClient.post(BASE_URL + "/subaccount", fields, SECRETE_KEY); statusCode = chapaClient.getStatusCode(); + if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) { + throw new ChapaException(responseBody); + } + SubAccountResponseData subAccountResponseData = Util.jsonToSubAccountResponseData(responseBody) .setRawJson(responseBody) .setStatusCode(statusCode); @@ -196,6 +217,10 @@ public SubAccountResponseData createSubAccount(String jsonData) throws Throwable responseBody = chapaClient.post(BASE_URL + "/subaccount", jsonData, SECRETE_KEY); statusCode = chapaClient.getStatusCode(); + if(!Util.is2xxSuccessful(chapaClient.getStatusCode())) { + throw new ChapaException(responseBody); + } + SubAccountResponseData subAccountResponseData = Util.jsonToSubAccountResponseData(responseBody) .setRawJson(responseBody) .setStatusCode(statusCode); diff --git a/src/main/java/com/yaphet/chapa/exception/ChapaException.java b/src/main/java/com/yaphet/chapa/exception/ChapaException.java new file mode 100644 index 0000000..52b3a17 --- /dev/null +++ b/src/main/java/com/yaphet/chapa/exception/ChapaException.java @@ -0,0 +1,19 @@ +package com.yaphet.chapa.exception; + +/** + * A ChapaException is thrown to signal a problem during SDK execution. + */ +public class ChapaException extends Exception { + + public ChapaException(String message) { + super(message); + } + + public ChapaException(Throwable cause) { + super(cause); + } + + public ChapaException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/yaphet/chapa/utility/Util.java b/src/main/java/com/yaphet/chapa/utility/Util.java index 59ad89f..c972235 100644 --- a/src/main/java/com/yaphet/chapa/utility/Util.java +++ b/src/main/java/com/yaphet/chapa/utility/Util.java @@ -124,4 +124,8 @@ public static String generateToken() { public static boolean notNullAndEmpty(String value) { return value != null && !value.isEmpty(); } + + public static boolean is2xxSuccessful(int statucCode) { + return (statucCode / 100) == 2; + } } diff --git a/src/test/java/com/yaphet/chapa/ChapaTest.java b/src/test/java/com/yaphet/chapa/ChapaTest.java index 744f0c1..2402537 100644 --- a/src/test/java/com/yaphet/chapa/ChapaTest.java +++ b/src/test/java/com/yaphet/chapa/ChapaTest.java @@ -47,6 +47,7 @@ void setUp() { .setEmail("abebe@bikila.com") .setTxRef(Util.generateToken()) .setCallbackUrl("https://chapa.co") + .setReturnUrl("https://chapa.co") .setSubAccountId("testSubAccountId") .setCustomization(customization); postDataString = " { " + @@ -57,6 +58,7 @@ void setUp() { "'last_name': 'Bikila'," + "'tx_ref': 'tx-myecommerce12345'," + "'callback_url': 'https://chapa.co'," + + "'return_url': 'https://chapa.co'," + "'subaccount[id]': 'testSubAccountId'," + "'customizations':{'customization[title]':'E-commerce','customization[description]':'It is time to pay','customization[logo]':'https://mylogo.com/log.png'}" + " }"; @@ -220,7 +222,7 @@ public void shouldCreateSubAccount_asResponseData() throws Throwable { // This should not run in the pipeline @Test - @Disabled +// @Disabled public void testDefault() throws Throwable { // given Customization customization = new Customization() @@ -232,9 +234,10 @@ public void testDefault() throws Throwable { .setCurrency("ETB") .setFirstName("Abebe") .setLastName("Bikila") - .setEmail("abebe@bikila.com") + .setEmail("abebe@bikila") .setTxRef(Util.generateToken()) .setCallbackUrl("https://chapa.co") + .setReturnUrl("https://chapa.co") .setSubAccountId("testSubAccountId") .setCustomization(customization); subAccount = new SubAccount() From c44bf780e6d3eb142fb581c78550f4cd54775803 Mon Sep 17 00:00:00 2001 From: yaphet17 Date: Thu, 1 Jun 2023 18:46:07 +0300 Subject: [PATCH 3/8] Prepare 1.2.2 release --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0db8479..39f575a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.github.yaphet17 Chapa - 1.2.2-SNAPSHOT + 1.2.2 jar Chapa From 526365bedcf773dd3bf339673e961b54b8eae6fc Mon Sep 17 00:00:00 2001 From: yaphet17 Date: Thu, 1 Jun 2023 18:49:24 +0300 Subject: [PATCH 4/8] Prepare 1.2.2 release --- docs/allclasses-frame.html | 5 +- docs/allclasses-noframe.html | 5 +- docs/com/yaphet/chapa/Chapa.html | 4 +- docs/com/yaphet/chapa/client/ChapaClient.html | 4 +- .../yaphet/chapa/client/ChapaClientImpl.html | 4 +- .../yaphet/chapa/client/package-frame.html | 4 +- .../yaphet/chapa/client/package-summary.html | 8 +- .../com/yaphet/chapa/client/package-tree.html | 8 +- .../chapa/exception/ChapaException.html | 287 ++++++++++++++++++ .../yaphet/chapa/exception/package-frame.html | 20 ++ .../chapa/exception/package-summary.html | 142 +++++++++ .../yaphet/chapa/exception/package-tree.html | 143 +++++++++ docs/com/yaphet/chapa/model/Bank.html | 4 +- .../com/yaphet/chapa/model/Customization.html | 4 +- .../model/InitializeResponseData.Data.html | 4 +- .../chapa/model/InitializeResponseData.html | 4 +- docs/com/yaphet/chapa/model/PostData.html | 52 +++- docs/com/yaphet/chapa/model/ResponseData.html | 4 +- docs/com/yaphet/chapa/model/SplitType.html | 4 +- docs/com/yaphet/chapa/model/SubAccount.html | 4 +- .../model/SubAccountResponseData.Data.html | 4 +- .../chapa/model/SubAccountResponseData.html | 4 +- .../chapa/model/VerifyResponseData.Data.html | 4 +- .../chapa/model/VerifyResponseData.html | 4 +- .../com/yaphet/chapa/model/package-frame.html | 4 +- .../yaphet/chapa/model/package-summary.html | 8 +- docs/com/yaphet/chapa/model/package-tree.html | 8 +- docs/com/yaphet/chapa/package-frame.html | 4 +- docs/com/yaphet/chapa/package-summary.html | 4 +- docs/com/yaphet/chapa/package-tree.html | 4 +- .../utility/LocalDateTimeDeserializer.html | 4 +- docs/com/yaphet/chapa/utility/Util.html | 33 +- .../yaphet/chapa/utility/package-frame.html | 4 +- .../yaphet/chapa/utility/package-summary.html | 4 +- .../yaphet/chapa/utility/package-tree.html | 4 +- docs/constant-values.html | 4 +- docs/deprecated-list.html | 4 +- docs/help-doc.html | 4 +- docs/index-files/index-1.html | 4 +- docs/index-files/index-10.html | 4 +- docs/index-files/index-11.html | 4 +- docs/index-files/index-12.html | 4 +- docs/index-files/index-13.html | 6 +- docs/index-files/index-14.html | 4 +- docs/index-files/index-15.html | 4 +- docs/index-files/index-2.html | 4 +- docs/index-files/index-3.html | 16 +- docs/index-files/index-4.html | 4 +- docs/index-files/index-5.html | 4 +- docs/index-files/index-6.html | 6 +- docs/index-files/index-7.html | 6 +- docs/index-files/index-8.html | 4 +- docs/index-files/index-9.html | 4 +- docs/index.html | 2 +- docs/overview-frame.html | 5 +- docs/overview-summary.html | 10 +- docs/overview-tree.html | 14 +- docs/package-list | 1 + docs/serialized-form.html | 135 ++++++++ 59 files changed, 935 insertions(+), 133 deletions(-) create mode 100644 docs/com/yaphet/chapa/exception/ChapaException.html create mode 100644 docs/com/yaphet/chapa/exception/package-frame.html create mode 100644 docs/com/yaphet/chapa/exception/package-summary.html create mode 100644 docs/com/yaphet/chapa/exception/package-tree.html create mode 100644 docs/serialized-form.html diff --git a/docs/allclasses-frame.html b/docs/allclasses-frame.html index 674f56e..40e3f09 100644 --- a/docs/allclasses-frame.html +++ b/docs/allclasses-frame.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -16,6 +16,7 @@

All Classes

  • Chapa
  • ChapaClient
  • ChapaClientImpl
  • +
  • ChapaException
  • Customization
  • InitializeResponseData
  • InitializeResponseData.Data
  • diff --git a/docs/allclasses-noframe.html b/docs/allclasses-noframe.html index 73cf682..fe29bc4 100644 --- a/docs/allclasses-noframe.html +++ b/docs/allclasses-noframe.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -16,6 +16,7 @@

    All Classes

  • Chapa
  • ChapaClient
  • ChapaClientImpl
  • +
  • ChapaException
  • Customization
  • InitializeResponseData
  • InitializeResponseData.Data
  • diff --git a/docs/com/yaphet/chapa/Chapa.html b/docs/com/yaphet/chapa/Chapa.html index 6fb1637..8b3439e 100644 --- a/docs/com/yaphet/chapa/Chapa.html +++ b/docs/com/yaphet/chapa/Chapa.html @@ -2,9 +2,9 @@ - + Chapa - + diff --git a/docs/com/yaphet/chapa/client/ChapaClient.html b/docs/com/yaphet/chapa/client/ChapaClient.html index a0a2182..96443a2 100644 --- a/docs/com/yaphet/chapa/client/ChapaClient.html +++ b/docs/com/yaphet/chapa/client/ChapaClient.html @@ -2,9 +2,9 @@ - + ChapaClient - + diff --git a/docs/com/yaphet/chapa/client/ChapaClientImpl.html b/docs/com/yaphet/chapa/client/ChapaClientImpl.html index a1f929a..1e72059 100644 --- a/docs/com/yaphet/chapa/client/ChapaClientImpl.html +++ b/docs/com/yaphet/chapa/client/ChapaClientImpl.html @@ -2,9 +2,9 @@ - + ChapaClientImpl - + diff --git a/docs/com/yaphet/chapa/client/package-frame.html b/docs/com/yaphet/chapa/client/package-frame.html index d00a156..d6b651f 100644 --- a/docs/com/yaphet/chapa/client/package-frame.html +++ b/docs/com/yaphet/chapa/client/package-frame.html @@ -2,9 +2,9 @@ - + com.yaphet.chapa.client - + diff --git a/docs/com/yaphet/chapa/client/package-summary.html b/docs/com/yaphet/chapa/client/package-summary.html index 63132c3..96945ad 100644 --- a/docs/com/yaphet/chapa/client/package-summary.html +++ b/docs/com/yaphet/chapa/client/package-summary.html @@ -2,9 +2,9 @@ - + com.yaphet.chapa.client - + @@ -43,7 +43,7 @@