Skip to content

Commit a704a7e

Browse files
committed
1.18.2
1 parent b1e2e97 commit a704a7e

7 files changed

Lines changed: 72 additions & 14 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ cd genesis_java
3131
<dependency>
3232
<groupId>com.emerchantpay.gateway</groupId>
3333
<artifactId>genesis-java</artifactId>
34-
<version>1.18.1</version>
34+
<version>1.18.2</version>
3535
</dependency>
3636
```
3737

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.emerchantpay.gateway</groupId>
55
<artifactId>genesis-java</artifactId>
6-
<version>1.18.1</version>
6+
<version>1.18.2</version>
77
<name>Genesis Gateway Java Client Library</name>
88
<description>Java Client Library for Genesis Gateway</description>
99
<url>https://www.emerchantpay.com</url>
@@ -32,7 +32,7 @@
3232
<developerConnection>
3333
${scmConnection}
3434
</developerConnection>
35-
<tag>1.18.1</tag>
35+
<tag>1.18.2</tag>
3636
</scm>
3737

3838
<distributionManagement>

src/main/java/com/emerchantpay/gateway/api/interfaces/financial/TokenizationAttributes.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ default RequestBuilder buildTokenizationParams() {
8282
return getTokenizationAttrRequestBuilder();
8383
}
8484

85-
default HashMap<String, String> getTokenizationConditionalRequiredParams(String customerEmail, String cardNumber){
85+
default HashMap<String, String> getTokenizationConditionalRequiredParams(String customerEmail, String cardNumber,
86+
boolean isSubsequentRec){
8687
HashMap<String, String> requiredParams = new HashMap<String, String>();
8788
if(getToken() != null && !getToken().isEmpty()){
8889
requiredParams.put(RequiredParameters.customerEmail, customerEmail);
@@ -97,16 +98,20 @@ default HashMap<String, String> getTokenizationConditionalRequiredParams(String
9798
}
9899

99100
List<String> tokenAndCardNumberParams = Arrays.asList(new String[]{RequiredParameters.cardNumber, RequiredParameters.token});
100-
if((cardNumber == null || cardNumber.isEmpty()) && (getToken() == null || getToken().isEmpty())){
101+
if((cardNumber == null || cardNumber.isEmpty()) && (getToken() == null || getToken().isEmpty()) && !isSubsequentRec){
101102
throw new RequiredParamsException(ErrorMessages.AT_LEAST_ONE_PARAMETER_REQUIRED + tokenAndCardNumberParams);
102103
}
103104

104105
if(getToken() != null && !getToken().isEmpty() && cardNumber != null && !cardNumber.isEmpty()){
105-
throw new RequiredParamsException(ErrorMessages.ONLY_ONE_PARAMETER_ALLOWED + tokenAndCardNumberParams.toString());
106+
throw new RequiredParamsException(ErrorMessages.ONLY_ONE_PARAMETER_ALLOWED + tokenAndCardNumberParams);
106107
}
107108
return requiredParams;
108109
}
109110

111+
default HashMap<String, String> getTokenizationConditionalRequiredParams(String customerEmail, String cardNumber){
112+
return getTokenizationConditionalRequiredParams(customerEmail, cardNumber, false);
113+
}
114+
110115
RequestBuilder getTokenizationAttrRequestBuilder();
111116

112117
HashMap<String, String> getTokenizationAttrParamsMap();

src/main/java/com/emerchantpay/gateway/api/requests/financial/card/AuthorizeRequest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,17 @@ public String toQueryString(String root) {
132132

133133
protected RequestBuilder buildRequest(String root) {
134134

135+
boolean isSubsequentRecurringType = "subsequent".equalsIgnoreCase(getRecurringType());
136+
135137
// Set required params
136138
requiredParams.put(RequiredParameters.transactionId, getTransactionId());
137-
requiredParams.put(RequiredParameters.amount, getAmount().toString());
139+
requiredParams.put(RequiredParameters.amount, getAmount() != null ? getAmount().toString() : null);
138140
requiredParams.put(RequiredParameters.currency, getCurrency());
139-
requiredParams.put(RequiredParameters.cardHolder, getCardHolder());
140141
requiredParams.putAll(getCreditCardConditionalRequiredParams(getToken()));
141-
requiredParams.putAll(getTokenizationConditionalRequiredParams(getCustomerEmail(), getCardNumber()));
142+
requiredParams.putAll(getTokenizationConditionalRequiredParams(getCustomerEmail(), getCardNumber(), isSubsequentRecurringType));
143+
if (!isSubsequentRecurringType) {
144+
requiredParams.put(RequiredParameters.cardHolder, getCardHolder());
145+
}
142146

143147
// Validate request
144148
validator.isValidRequest(requiredParams);

src/main/java/com/emerchantpay/gateway/api/requests/financial/card/SaleRequest.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,17 @@ public String toQueryString(String root) {
129129

130130
protected RequestBuilder buildRequest(String root) {
131131

132+
boolean isSubsequentRecurringType = "subsequent".equalsIgnoreCase(getRecurringType());
133+
132134
// Set required params
133135
requiredParams.put(RequiredParameters.transactionId, getTransactionId());
134-
requiredParams.put(RequiredParameters.amount, getAmount().toString());
136+
requiredParams.put(RequiredParameters.amount, getAmount() != null ? getAmount().toString() : null);
135137
requiredParams.put(RequiredParameters.currency, getCurrency());
136-
requiredParams.put(RequiredParameters.cardHolder, getCardHolder());
137138
requiredParams.putAll(getCreditCardConditionalRequiredParams(getToken()));
138-
requiredParams.putAll(getTokenizationConditionalRequiredParams(getCustomerEmail(), getCardNumber()));
139+
requiredParams.putAll(getTokenizationConditionalRequiredParams(getCustomerEmail(), getCardNumber(), isSubsequentRecurringType));
140+
if (!isSubsequentRecurringType) {
141+
requiredParams.put(RequiredParameters.cardHolder, getCardHolder());
142+
}
139143

140144
// Validate request
141145
validator.isValidRequest(requiredParams);

src/test/java/com/emerchantpay/gateway/card/AuthorizeRequestTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.emerchantpay.gateway.api.exceptions.ApiException;
77
import com.emerchantpay.gateway.api.exceptions.InvalidParamException;
88
import com.emerchantpay.gateway.api.exceptions.RegexException;
9+
import com.emerchantpay.gateway.api.exceptions.RequiredParamsException;
910
import com.emerchantpay.gateway.api.requests.financial.card.AuthorizeRequest;
1011
import com.emerchantpay.gateway.util.Currency;
1112
import com.emerchantpay.gateway.util.StringUtils;
@@ -34,11 +35,16 @@ public void createAuthorize() {
3435
authorize = mock(AuthorizeRequest.class);
3536
}
3637

37-
private AuthorizeRequest prepareObject() {
38+
private AuthorizeRequest prepareObjectWithoutCardData() {
3839
AuthorizeRequest authorize = new AuthorizeRequest();
3940
authorize.setTransactionId(uniqueId);
4041
authorize.setCurrency(Currency.USD.getCurrency());
4142
authorize.setAmount(new BigDecimal("12.00"));
43+
return authorize;
44+
}
45+
46+
private AuthorizeRequest prepareObject() {
47+
AuthorizeRequest authorize = prepareObjectWithoutCardData();
4248
authorize.setCardNumber("4200000000000000");
4349
authorize.setCardHolder("PLAMEN PETROV");
4450
authorize.setExpirationMonth("02");
@@ -167,13 +173,29 @@ public void testRecurrency_ShouldSuccess_WhenProvidedReferenceId(){
167173
authorize.toXML();
168174
}
169175

176+
@Test
177+
public void testRecurrency_ShouldSuccess_WhenMissedCardData(){
178+
AuthorizeRequest authorize = prepareObjectWithoutCardData();
179+
authorize.setRecurringType("subsequent");
180+
authorize.setReferenceId("1234");
181+
authorize.toXML();
182+
}
183+
170184
@Test (expected = InvalidParamException.class)
171185
public void testRecurrency_ThrowException_WhenMissedReferenceId(){
172186
AuthorizeRequest authorize = prepareObject();
173187
authorize.setRecurringType("subsequent");
174188
authorize.toXML();
175189
}
176190

191+
@Test (expected = RequiredParamsException.class)
192+
public void testRecurrency_ThrowException_WhenMissedAmount(){
193+
AuthorizeRequest authorize = prepareObject();
194+
authorize.setRecurringType("subsequent");
195+
authorize.setAmount(null);
196+
authorize.toXML();
197+
}
198+
177199
@Test(expected = InvalidParamException.class)
178200
public void testRecurrencyError(){
179201
AuthorizeRequest authorize = prepareObject();

src/test/java/com/emerchantpay/gateway/card/SaleRequestTest.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.emerchantpay.gateway.api.exceptions.ApiException;
77
import com.emerchantpay.gateway.api.exceptions.InvalidParamException;
88
import com.emerchantpay.gateway.api.exceptions.RegexException;
9+
import com.emerchantpay.gateway.api.exceptions.RequiredParamsException;
10+
import com.emerchantpay.gateway.api.requests.financial.card.AuthorizeRequest;
911
import com.emerchantpay.gateway.api.requests.financial.card.SaleRequest;
1012
import com.emerchantpay.gateway.util.Currency;
1113
import com.emerchantpay.gateway.util.StringUtils;
@@ -34,11 +36,16 @@ public void createSale() {
3436
sale = mock(SaleRequest.class);
3537
}
3638

37-
private SaleRequest prepareObject() {
39+
private SaleRequest prepareObjectWithoutCardData() {
3840
SaleRequest sale = new SaleRequest();
3941
sale.setTransactionId(uniqueId);
4042
sale.setCurrency(Currency.USD.getCurrency());
4143
sale.setAmount(new BigDecimal("12.00"));
44+
return sale;
45+
}
46+
47+
private SaleRequest prepareObject() {
48+
SaleRequest sale = prepareObjectWithoutCardData();
4249
sale.setCardNumber("4200000000000000");
4350
sale.setCardHolder("PLAMEN PETROV");
4451
sale.setExpirationMonth("02");
@@ -170,13 +177,29 @@ public void testRecurrency_ShouldSuccess_WhenProvidedReferenceId(){
170177
sale.toXML();
171178
}
172179

180+
@Test
181+
public void testRecurrency_ShouldSuccess_WhenMissedCardData(){
182+
SaleRequest sale = prepareObjectWithoutCardData();
183+
sale.setRecurringType("subsequent");
184+
sale.setReferenceId("1234");
185+
sale.toXML();
186+
}
187+
173188
@Test(expected = InvalidParamException.class)
174189
public void testRecurrency_ThrowException_WhenMissedReferenceId() {
175190
SaleRequest sale = prepareObject();
176191
sale.setRecurringType("subsequent");
177192
sale.toXML();
178193
}
179194

195+
@Test(expected = RequiredParamsException.class)
196+
public void testRecurrency_ThrowException_WhenMissedAmount() {
197+
SaleRequest authorize = prepareObject();
198+
authorize.setRecurringType("subsequent");
199+
authorize.setAmount(null);
200+
authorize.toXML();
201+
}
202+
180203
@Test(expected = InvalidParamException.class)
181204
public void testRecurrencyError(){
182205
SaleRequest sale = new SaleRequest();

0 commit comments

Comments
 (0)