Skip to content

Commit 47e5074

Browse files
committed
Update logic
1 parent 5dfc7bf commit 47e5074

File tree

4 files changed

+21
-17
lines changed

4 files changed

+21
-17
lines changed

Diff for: src/bambora-payment-starter/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@
4141
<artifactId>commons-lang3</artifactId>
4242
</dependency>
4343

44+
<dependency>
45+
<groupId>commons-codec</groupId>
46+
<artifactId>commons-codec</artifactId>
47+
</dependency>
48+
4449
</dependencies>
4550

4651
<dependencyManagement>

Diff for: src/bambora-payment-starter/src/main/java/ca/bc/gov/open/bambora/payment/starter/AutoConfiguration.java

+4
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
import ca.bc.gov.open.bambora.payment.starter.managment.BamboraCardService;
44
import ca.bc.gov.open.bambora.payment.starter.managment.BamboraCardServiceImpl;
55
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
6+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
67
import org.springframework.context.annotation.Bean;
8+
import org.springframework.context.annotation.Configuration;
79

10+
@Configuration
11+
@EnableConfigurationProperties(BamboraProperties.class)
812
public class AutoConfiguration {
913

1014
private final BamboraProperties bamboraProperties;

Diff for: src/bambora-payment-starter/src/main/java/ca/bc/gov/open/bambora/payment/starter/managment/BamboraCardServiceImpl.java

+8-13
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import ca.bc.gov.open.bambora.payment.starter.BamboraProperties;
66
import ca.bc.gov.open.bambora.payment.starter.managment.models.RecurringPaymentDetails;
77
import com.sun.jndi.toolkit.url.Uri;
8-
import org.springframework.util.DigestUtils;
8+
import org.apache.commons.codec.digest.DigestUtils;
99

1010
import java.net.MalformedURLException;
1111
import java.text.MessageFormat;
@@ -54,31 +54,26 @@ private Uri buildRecurringPaymentUrl(RecurringPaymentDetails recurringPaymentDet
5454
if (operationType.equals(BamboraConstants.OperationTypes.M.toString()))
5555
paramString.append(formatBamboraParam("&", BamboraConstants.PARAM_PPRDIR_CUSTOMER_CODE, recurringPaymentDetails.getEndUserId()));
5656

57-
//add hash key at end of params
58-
paramString.append(bamboraProperties.getHashKey());
57+
paramString.append(MessageFormat.format("&{0}={1}&{2}={3}", BamboraConstants.PARAM_TRANS_HASH_VALUE, getHash(paramString.toString()), BamboraConstants.PARAM_TRANS_HASH_EXPIRY, getExpiry()));
5958

60-
String hashed = getHash(paramString.toString());
59+
return new Uri(MessageFormat.format("{0}?{1}", bamboraProperties.getHostedProfileUrl(), paramString.toString()));
6160

62-
// Calculate the expiry based on the minutesToExpire value.
61+
}
62+
63+
private String getExpiry() {
6364
SimpleDateFormat sdfDate = new SimpleDateFormat(BamboraConstants.PARAM_TRANS_HASH_EXPIRY_FORMAT);
6465
Calendar cal = Calendar.getInstance();
6566
cal.setTime(new Date());
6667
cal.add(Calendar.MINUTE, bamboraProperties.getMinutesToExpiry());
67-
String expiry = sdfDate.format(cal.getTime());
68-
69-
// Add hash and expiry to the redirect
70-
String hashedParameter = paramString.toString().replace(bamboraProperties.getHashKey(), MessageFormat.format("&{0}={1}&{2}={3}", BamboraConstants.PARAM_TRANS_HASH_VALUE, hashed, BamboraConstants.PARAM_TRANS_HASH_EXPIRY, expiry));
71-
72-
return new Uri(MessageFormat.format("{0}?{1}", bamboraProperties.getHostedProfileUrl(), hashedParameter));
73-
68+
return sdfDate.format(cal.getTime());
7469
}
7570

7671
private String formatBamboraParam(String prefix, String key, String value) {
7772
return MessageFormat.format("{0}{1}={2}", prefix, key, value).replace(" ", "%20");
7873
}
7974

8075
private String getHash(String message) {
81-
String digest = DigestUtils.md5DigestAsHex(message.getBytes());
76+
String digest = DigestUtils.md5Hex(MessageFormat.format("{0}{1}", message, bamboraProperties.getHashKey()));
8277
return digest.toUpperCase();
8378
}
8479
}

Diff for: src/bambora-payment-starter/src/test/java/ca/bc/gov/open/bambora/payment/starter/managment/BamboraCardServiceImplTest.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public class BamboraCardServiceImplTest {
1818
private static final String ECHODATA = "ECHODATA";
1919
private static final String REDIRECTURL = "REDIRECTURL";
2020
private static final String END_USER_ID = "123";
21-
private static final String BAMBORA_CLIENT_URL = "http://localhost?serviceVersion=HOSTEDPROFILE&merchantId=123&trnLanguage=eng&operationType=M&ref1=ECHODATA&trnReturnURL=REDIRECTURL&trnOrderNumber=REDIRECTURL&customerCode=123&hashValue=98C48E9A9C45B99698ED7D2ED7194A91&hashExpiry=202008241242";
22-
private static final String BAMBORA_NEW_URL = "http://localhost?serviceVersion=HOSTEDPROFILE&merchantId=123&trnLanguage=eng&operationType=M&ref1=ECHODATA&trnReturnURL=REDIRECTURL&trnOrderNumber=REDIRECTURL&customerCode=123&hashValue=98C48E9A9C45B99698ED7D2ED7194A91&hashExpiry=202008241242";
21+
private static final String BAMBORA_CLIENT_URL = "http://localhost?serviceVersion=HOSTEDPROFILE&merchantId=123&trnLanguage=eng&operationType=M&ref1=ECHODATA&trnReturnURL=REDIRECTURL&trnOrderNumber=REDIRECTURL&customerCode=123&hashValue=98C48E9A9C45B99698ED7D2ED7194A91";
22+
private static final String BAMBORA_NEW_URL = "http://localhost?serviceVersion=HOSTEDPROFILE&merchantId=123&trnLanguage=eng&operationType=N&ref1=ECHODATA&trnReturnURL=REDIRECTURL&trnOrderNumber=REDIRECTURL&hashValue=BB2616ADA96F7C72824835D484F23B9B";
2323

2424
private BamboraCardServiceImpl sut;
2525

@@ -45,7 +45,7 @@ public void withClientIdCreateUpdateUrl() {
4545
Uri actual = sut.setupRecurringPayment(createPaymentDetail(END_USER_ID));
4646

4747
Assertions.assertNotNull(actual);
48-
Assertions.assertEquals(actual.toString(), BAMBORA_CLIENT_URL);
48+
Assertions.assertTrue(actual.toString().contains(BAMBORA_CLIENT_URL));
4949
}
5050

5151

@@ -57,7 +57,7 @@ public void withoutClientIdCreateUpdateUrl() {
5757
Uri actual = sut.setupRecurringPayment(createPaymentDetail(null));
5858

5959
Assertions.assertNotNull(actual);
60-
Assertions.assertEquals(actual.toString(), BAMBORA_NEW_URL);
60+
Assertions.assertTrue(actual.toString().contains(BAMBORA_NEW_URL));
6161
}
6262

6363
@Test

0 commit comments

Comments
 (0)