aeremmiddleware 1.0.31 → 1.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -94,10 +94,6 @@ const mandateHtml = (mandateData, tokenId) => {
|
|
|
94
94
|
BUTTON_COLOR_CODE_1: "#2d8c8c",
|
|
95
95
|
BUTTON_COLOR_CODE_2: "#FFFFFF",
|
|
96
96
|
},
|
|
97
|
-
accountNo: "${mandateData.accountNo}", //Pass this if accountNo is captured at merchant side for eMandate/eNACH
|
|
98
|
-
|
|
99
|
-
ifscCode: "${mandateData.ifscCode}", //Pass this if ifscCode is captured at merchant side.
|
|
100
|
-
accountType: "${mandateData.accountType}", //Required for eNACH registration this is mandatory field
|
|
101
97
|
debitStartDate: "${mandateData.debitStartDate}",
|
|
102
98
|
debitEndDate: "${mandateData.debitEndDate}",
|
|
103
99
|
maxAmount: "${mandateData.maxAmount}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingenicoHtml.js","sourceRoot":"","sources":["../../src/Finance/ingenicoHtml.ts"],"names":[],"mappings":";;;AAEO,MAAM,WAAW,GAAG,CAAC,WAA4B,EAAE,OAAe,EAAE,EAAE;IACzE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiEgB,OAAO;;uBAEX,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS;;kCAEX,WAAW,CAAC,WAAW;;;iCAGxB,WAAW,CAAC,UAAU;;iCAEtB,WAAW,CAAC,UAAU;uCAChB,WAAW,CAAC,gBAAgB;sCAC7B,WAAW,CAAC,eAAe;4BACrC,WAAW,CAAC,KAAK;;;;;iCAKZ,WAAW,CAAC,WAAW;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ingenicoHtml.js","sourceRoot":"","sources":["../../src/Finance/ingenicoHtml.ts"],"names":[],"mappings":";;;AAEO,MAAM,WAAW,GAAG,CAAC,WAA4B,EAAE,OAAe,EAAE,EAAE;IACzE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAiEgB,OAAO;;uBAEX,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS;;kCAEX,WAAW,CAAC,WAAW;;;iCAGxB,WAAW,CAAC,UAAU;;iCAEtB,WAAW,CAAC,UAAU;uCAChB,WAAW,CAAC,gBAAgB;sCAC7B,WAAW,CAAC,eAAe;4BACrC,WAAW,CAAC,KAAK;;;;;iCAKZ,WAAW,CAAC,WAAW;;;;;;;;;;qCAUnB,WAAW,CAAC,cAAc;mCAC5B,WAAW,CAAC,YAAY;gCAC3B,WAAW,CAAC,SAAS;iCACpB,WAAW,CAAC,UAAU;gCACvB,WAAW,CAAC,SAAS;;;;;;;;;;;;;;GAclD,CAAC;AACJ,CAAC,CAAC;AAhHW,QAAA,WAAW,eAgHtB"}
|
package/package.json
CHANGED
package/src/Finance/ingenico.ts
CHANGED
|
@@ -5,100 +5,112 @@ import { createHash } from "crypto";
|
|
|
5
5
|
import { mandateHtml } from "./ingenicoHtml";
|
|
6
6
|
|
|
7
7
|
class IngenicoApiWrapper {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
private verificationUrl = "https://www.paynimo.com/api/paynimoV2.req";
|
|
9
|
+
private salt = "";
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
11
|
+
constructor(salt: string) {
|
|
12
|
+
this.salt = salt;
|
|
13
|
+
}
|
|
14
|
+
async startMandate(mandateData: MandateDataType): Promise<any> {
|
|
15
|
+
const hashingData = {
|
|
16
|
+
merchantId: mandateData.merchantId,
|
|
17
|
+
txnId: mandateData.txnId,
|
|
18
|
+
totalamount: mandateData.totalamount,
|
|
19
|
+
accountNo: mandateData.accountNo,
|
|
20
|
+
consumerId: mandateData.consumerId,
|
|
21
|
+
consumerMobileNo: mandateData.consumerMobileNo,
|
|
22
|
+
consumerEmailId: mandateData.consumerEmailId,
|
|
23
|
+
debitStartDate: mandateData.debitStartDate,
|
|
24
|
+
debitEndDate: mandateData.debitEndDate,
|
|
25
|
+
maxAmount: mandateData.maxAmount,
|
|
26
|
+
amountType: mandateData.amountType,
|
|
27
|
+
frequency: mandateData.frequency,
|
|
28
|
+
cardNumber: "",
|
|
29
|
+
expMonth: "",
|
|
30
|
+
expYear: "",
|
|
31
|
+
cvvCode: "",
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const tokenId = createSHA512Hash(hashingData, this.salt);
|
|
35
|
+
return mandateHtml(mandateData, tokenId);
|
|
36
|
+
}
|
|
33
37
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
private hashString(input: string): string {
|
|
39
|
+
const hash = createHash("sha512");
|
|
40
|
+
|
|
41
|
+
return hash.update(input).digest("hex");
|
|
42
|
+
}
|
|
37
43
|
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
async dualVerification(inputString: string): Promise<any> {
|
|
45
|
+
const modifiedHash = inputString.split("|").slice(-1).join("");
|
|
46
|
+
const payload =
|
|
47
|
+
inputString.split("|").slice(0, -1).join("|") + `|${this.salt}`;
|
|
40
48
|
|
|
41
|
-
|
|
42
|
-
}
|
|
49
|
+
const originalHash = this.hashString(payload);
|
|
43
50
|
|
|
44
|
-
|
|
45
|
-
const originalHash = this.hashString(inputString);
|
|
46
|
-
console.log("originalhash", originalHash);
|
|
47
|
-
const dataArray = inputString.split("|");
|
|
48
|
-
dataArray[dataArray.length - 1] = this.salt;
|
|
49
|
-
const modifiedString = dataArray.join("|");
|
|
50
|
-
const modifiedHash = this.hashString(modifiedString);
|
|
51
|
-
console.log("modifiedhash", modifiedHash);
|
|
51
|
+
console.log("dualVerification==", modifiedHash, payload, originalHash);
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
if (originalHash === modifiedHash) {
|
|
54
|
+
console.log("true");
|
|
55
|
+
return true;
|
|
56
|
+
} else {
|
|
57
|
+
console.log("faalse");
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
59
60
|
}
|
|
60
|
-
}
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
async mandateVerification(requestData: any): Promise<any> {
|
|
63
|
+
try {
|
|
64
|
+
const response = await axios.post(
|
|
65
|
+
this.verificationUrl,
|
|
66
|
+
requestData,
|
|
67
|
+
{
|
|
68
|
+
headers: {
|
|
69
|
+
"Content-Type": "application/json",
|
|
70
|
+
},
|
|
71
|
+
}
|
|
72
|
+
);
|
|
69
73
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
return response.data;
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error("Error:", error);
|
|
77
|
+
}
|
|
73
78
|
}
|
|
74
|
-
}
|
|
75
79
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
async transactionScheduling(requestData: any): Promise<any> {
|
|
81
|
+
try {
|
|
82
|
+
const response = await axios.post(
|
|
83
|
+
this.verificationUrl,
|
|
84
|
+
requestData,
|
|
85
|
+
{
|
|
86
|
+
headers: {
|
|
87
|
+
"Content-Type": "application/json",
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
);
|
|
83
91
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
92
|
+
return response.data;
|
|
93
|
+
} catch (error) {
|
|
94
|
+
console.error("Error:", error);
|
|
95
|
+
}
|
|
87
96
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
97
|
+
async transactionVerification(requestData: any): Promise<any> {
|
|
98
|
+
try {
|
|
99
|
+
const response = await axios.post(
|
|
100
|
+
this.verificationUrl,
|
|
101
|
+
requestData,
|
|
102
|
+
{
|
|
103
|
+
headers: {
|
|
104
|
+
"Content-Type": "application/json",
|
|
105
|
+
},
|
|
106
|
+
}
|
|
107
|
+
);
|
|
96
108
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
109
|
+
return response.data;
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.error("Error:", error);
|
|
112
|
+
}
|
|
100
113
|
}
|
|
101
|
-
}
|
|
102
114
|
}
|
|
103
115
|
|
|
104
116
|
export default IngenicoApiWrapper;
|