Skip to content

Commit b6f831a

Browse files
author
brianmc
committed
Added currency support to SIM fingerprint
1 parent 213fccb commit b6f831a

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

src/main/java/net/authorize/sim/Fingerprint.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,26 @@ private Fingerprint() {
3535
* @return A Fingerprint object.
3636
*/
3737
public static Fingerprint createFingerprint(String loginID,
38-
String transactionKey, long sequence, String amount) {
38+
String transactionKey,
39+
long sequence,
40+
String amount) {
41+
42+
return createFingerprint(loginID,transactionKey,sequence,amount,"");
43+
44+
}
45+
46+
/**
47+
* Creates a fingerprint with raw data fields.
48+
*
49+
* @param loginID
50+
* @param transactionKey
51+
* @param sequence : this number will be concatenated with a random value
52+
* @param amount
53+
* @param currency
54+
* @return A Fingerprint object.
55+
*/
56+
public static Fingerprint createFingerprint(String loginID,
57+
String transactionKey, long sequence, String amount, String currency) {
3958

4059
Fingerprint fingerprint = new Fingerprint();
4160

@@ -56,7 +75,7 @@ public static Fingerprint createFingerprint(String loginID,
5675
Mac mac = Mac.getInstance("HmacMD5");
5776
mac.init(key);
5877
String inputstring = loginID + "^" + fingerprint.sequence + "^" +
59-
fingerprint.timeStamp + "^" + amount + "^";
78+
fingerprint.timeStamp + "^" + amount + "^" + currency;
6079
byte[] result = mac.doFinal(inputstring.getBytes());
6180
// Convert the result from byte[] to hexadecimal format
6281
StringBuilder strbuf = new StringBuilder(result.length * 2);

src/test/java/net/authorize/sim/FingerprintTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ public void createFingerprintWithRawFields() {
2424
Assert.assertTrue(fingerprint.getTimeStamp() > 0);
2525
}
2626

27+
@Test
28+
public void createFingerprintWithCurrency() {
29+
Fingerprint fingerprint = Fingerprint.createFingerprint("loginID",
30+
"transactionKey", 1, "1.99", "EUR");
31+
32+
Assert.assertNotNull(fingerprint);
33+
Assert.assertNotNull(fingerprint.getFingerprintHash());
34+
Assert.assertEquals(32, fingerprint.getFingerprintHash().length());
35+
Assert.assertTrue(fingerprint.getSequence() >= 0);
36+
Assert.assertTrue(fingerprint.getTimeStamp() > 0);
37+
}
38+
2739
@Test
2840
public void createFingerprintWithObjectFields() {
2941
Fingerprint fingerprint = Fingerprint.createFingerprint(merchant, 1,

0 commit comments

Comments
 (0)