quivio-transaction-processor 1.23.2 → 1.23.3-beta
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.
- package/dist/emvPaymentProvider/EMVPaymentProvider.js +144 -63
- package/dist/emvPaymentProvider/EMVPaymentProvider.js.map +1 -1
- package/dist/emvPaymentProvider/types.d.ts +5 -2
- package/dist/example/EMVPaymentScreen.d.ts +4 -1
- package/dist/example/EMVPaymentScreen.js +101 -8
- package/dist/example/EMVPaymentScreen.js.map +1 -1
- package/dist/example/EMVSettingsScreen.js +4 -6
- package/dist/example/EMVSettingsScreen.js.map +1 -1
- package/dist/example/ExternalSystemsScreen.js +123 -3
- package/dist/example/ExternalSystemsScreen.js.map +1 -1
- package/dist/example/MainScreen.js +1 -1
- package/dist/example/MainScreen.js.map +1 -1
- package/dist/example/helper/deviceStore.d.ts +11 -0
- package/dist/example/helper/deviceStore.js +37 -0
- package/dist/example/helper/deviceStore.js.map +1 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/POSTransactionExecutor.kt +29 -25
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/builder/DsiEMVRequestBuilder.kt +14 -7
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/manager/EMVPaymentManager.kt +28 -20
- package/libs/emvNative/src/main/java/com/quivio_transaction_processor/EMVPaymentManagerModule.kt +16 -7
- package/package.json +1 -1
- package/src/emvPaymentProvider/EMVPaymentProvider.tsx +105 -64
- package/src/emvPaymentProvider/types.ts +5 -2
- package/src/example/EMVPaymentScreen.tsx +75 -18
- package/src/example/EMVSettingsScreen.tsx +3 -5
- package/src/example/ExternalSystemsScreen.tsx +116 -27
- package/src/example/MainScreen.tsx +1 -1
- package/src/example/helper/deviceStore.ts +40 -0
|
@@ -22,22 +22,137 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
35
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
36
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
37
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
38
|
+
function step(op) {
|
|
39
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
40
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
41
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
42
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
43
|
+
switch (op[0]) {
|
|
44
|
+
case 0: case 1: t = op; break;
|
|
45
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
46
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
47
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
48
|
+
default:
|
|
49
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
50
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
51
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
52
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
53
|
+
if (t[2]) _.ops.pop();
|
|
54
|
+
_.trys.pop(); continue;
|
|
55
|
+
}
|
|
56
|
+
op = body.call(thisArg, _);
|
|
57
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
58
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
59
|
+
}
|
|
60
|
+
};
|
|
25
61
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
62
|
var react_1 = __importStar(require("react"));
|
|
27
63
|
var react_native_1 = require("react-native");
|
|
28
64
|
var useEMVPayment_1 = require("../emvPaymentProvider/useEMVPayment");
|
|
65
|
+
var deviceStore_1 = require("./helper/deviceStore");
|
|
29
66
|
var ExternalSystemsScreen = function (_a) {
|
|
30
67
|
var _b, _c, _d, _e;
|
|
31
68
|
var config = _a.config, onBackPress = _a.onBackPress;
|
|
32
|
-
var _f = (0, useEMVPayment_1.useEMVPayment)(), isConfigured = _f.isConfigured, isDeviceConnected = _f.isDeviceConnected, isCancellationRunning = _f.isCancellationRunning, cancelOperation = _f.cancelOperation, runConfiguration = _f.runConfiguration, isConfigurationInProgress = _f.isConfigurationInProgress, displayMessage = _f.displayMessage;
|
|
69
|
+
var _f = (0, useEMVPayment_1.useEMVPayment)(), isConfigured = _f.isConfigured, deviceSerialNumber = _f.deviceSerialNumber, isDeviceConnected = _f.isDeviceConnected, getDeviceDetails = _f.getDeviceDetails, isCancellationRunning = _f.isCancellationRunning, cancelOperation = _f.cancelOperation, runConfiguration = _f.runConfiguration, isConfigurationInProgress = _f.isConfigurationInProgress, displayMessage = _f.displayMessage;
|
|
33
70
|
var deviceInfo = (0, react_1.useState)('')[0];
|
|
34
|
-
var _g = (0, react_1.useState)(false),
|
|
71
|
+
var _g = (0, react_1.useState)(false), isFetchingDeviceDetails = _g[0], setFetchingDeviceDetails = _g[1];
|
|
72
|
+
var _h = (0, react_1.useState)(false), infoVisible = _h[0], setInfoVisible = _h[1];
|
|
35
73
|
// Auto-close info modal when device connects
|
|
36
74
|
(0, react_1.useEffect)(function () {
|
|
37
75
|
if (isDeviceConnected && infoVisible) {
|
|
38
76
|
setInfoVisible(false);
|
|
39
77
|
}
|
|
40
78
|
}, [isDeviceConnected, infoVisible]);
|
|
79
|
+
// useEffect(() => {
|
|
80
|
+
// let timer: NodeJS.Timeout;
|
|
81
|
+
// if (isConfigured) {
|
|
82
|
+
// if (deviceSerialNumber?.trim()) {
|
|
83
|
+
// addDevice({
|
|
84
|
+
// isConfigured: true,
|
|
85
|
+
// isSandbox: true,
|
|
86
|
+
// MerchantId: config?.merchantID ?? '',
|
|
87
|
+
// serialNumber: deviceSerialNumber,
|
|
88
|
+
// });
|
|
89
|
+
// } else {
|
|
90
|
+
// setFetchingDeviceDetails(true);
|
|
91
|
+
// timer = setTimeout(() => {
|
|
92
|
+
// getDeviceDetails();
|
|
93
|
+
// }, 3000);
|
|
94
|
+
// }
|
|
95
|
+
// }
|
|
96
|
+
// return () => {
|
|
97
|
+
// if (timer) clearTimeout(timer);
|
|
98
|
+
// };
|
|
99
|
+
// }, [isConfigured]);
|
|
100
|
+
// useEffect(() => {
|
|
101
|
+
// if (deviceSerialNumber?.trim()) {
|
|
102
|
+
// setFetchingDeviceDetails(false);
|
|
103
|
+
// addDevice({
|
|
104
|
+
// isConfigured: true,
|
|
105
|
+
// isSandbox: true,
|
|
106
|
+
// MerchantId: config?.merchantID ?? '',
|
|
107
|
+
// serialNumber: deviceSerialNumber,
|
|
108
|
+
// });
|
|
109
|
+
// }
|
|
110
|
+
// }, [deviceSerialNumber]);
|
|
111
|
+
(0, react_1.useEffect)(function () {
|
|
112
|
+
var timer;
|
|
113
|
+
var handleSerial = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
114
|
+
var serialNumberToBeStored, _a;
|
|
115
|
+
var _b, _c;
|
|
116
|
+
return __generator(this, function (_d) {
|
|
117
|
+
switch (_d.label) {
|
|
118
|
+
case 0:
|
|
119
|
+
if (!isConfigured) return [3 /*break*/, 4];
|
|
120
|
+
if (!!(deviceSerialNumber === null || deviceSerialNumber === void 0 ? void 0 : deviceSerialNumber.trim())) return [3 /*break*/, 2];
|
|
121
|
+
return [4 /*yield*/, getDeviceDetails()];
|
|
122
|
+
case 1:
|
|
123
|
+
_a = _d.sent();
|
|
124
|
+
return [3 /*break*/, 3];
|
|
125
|
+
case 2:
|
|
126
|
+
_a = deviceSerialNumber;
|
|
127
|
+
_d.label = 3;
|
|
128
|
+
case 3:
|
|
129
|
+
serialNumberToBeStored = _a;
|
|
130
|
+
if (serialNumberToBeStored) {
|
|
131
|
+
(0, deviceStore_1.addDevice)({
|
|
132
|
+
MerchantId: (_b = config === null || config === void 0 ? void 0 : config.merchantID) !== null && _b !== void 0 ? _b : '',
|
|
133
|
+
isSandbox: (_c = config === null || config === void 0 ? void 0 : config.isSandBox) !== null && _c !== void 0 ? _c : true,
|
|
134
|
+
isConfigured: true,
|
|
135
|
+
serialNumber: serialNumberToBeStored,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
_d.label = 4;
|
|
139
|
+
case 4:
|
|
140
|
+
setFetchingDeviceDetails(false);
|
|
141
|
+
return [2 /*return*/];
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}); };
|
|
145
|
+
timer = setTimeout(function () {
|
|
146
|
+
setFetchingDeviceDetails(true);
|
|
147
|
+
handleSerial();
|
|
148
|
+
}, 3000);
|
|
149
|
+
return function () {
|
|
150
|
+
if (timer) {
|
|
151
|
+
clearTimeout(timer);
|
|
152
|
+
setFetchingDeviceDetails(false);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}, [isConfigured, deviceSerialNumber]);
|
|
41
156
|
var onConfigureDevice = (0, react_1.useCallback)(function () {
|
|
42
157
|
if (!config)
|
|
43
158
|
return;
|
|
@@ -66,6 +181,10 @@ var ExternalSystemsScreen = function (_a) {
|
|
|
66
181
|
displayMessage),
|
|
67
182
|
react_1.default.createElement(react_native_1.Pressable, { style: styles.closeButton, onPress: function () { } },
|
|
68
183
|
react_1.default.createElement(react_native_1.Text, { style: styles.closeButtonText }, "Cancel")))))); };
|
|
184
|
+
var DeviceDetailsModal = function () { return (react_1.default.createElement(react_native_1.Modal, { visible: isFetchingDeviceDetails, transparent: true, animationType: "fade", onRequestClose: function () { } },
|
|
185
|
+
react_1.default.createElement(react_native_1.Pressable, { style: styles.modalBackground, onPress: function () { } },
|
|
186
|
+
react_1.default.createElement(react_native_1.Pressable, { style: styles.modalContainer },
|
|
187
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.modalText }, "Saving Device Details....."))))); };
|
|
69
188
|
var CancelModal = function () { return (react_1.default.createElement(react_native_1.Modal, { visible: isCancellationRunning, transparent: true, animationType: "fade", onRequestClose: function () { } },
|
|
70
189
|
react_1.default.createElement(react_native_1.Pressable, { style: styles.modalBackground, onPress: function () { return cancelOperation(); } },
|
|
71
190
|
react_1.default.createElement(react_native_1.Pressable, { style: styles.modalContainer },
|
|
@@ -111,8 +230,9 @@ var ExternalSystemsScreen = function (_a) {
|
|
|
111
230
|
react_1.default.createElement(react_native_1.TextInput, { style: styles.disabledInput, value: deviceInfo, editable: false, multiline: true }),
|
|
112
231
|
react_1.default.createElement(InfoModal, null),
|
|
113
232
|
react_1.default.createElement(LoaderModal, null),
|
|
233
|
+
react_1.default.createElement(DeviceDetailsModal, null),
|
|
114
234
|
react_1.default.createElement(CancelModal, null),
|
|
115
|
-
isDeviceConnected &&
|
|
235
|
+
isDeviceConnected && react_1.default.createElement(ConfigureCTA, null),
|
|
116
236
|
react_1.default.createElement(BackCTA, null))));
|
|
117
237
|
};
|
|
118
238
|
exports.default = ExternalSystemsScreen;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalSystemsScreen.js","sourceRoot":"","sources":["../../src/example/ExternalSystemsScreen.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExternalSystemsScreen.js","sourceRoot":"","sources":["../../src/example/ExternalSystemsScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ var MainScreen = function (_a) {
|
|
|
33
33
|
var config = _a.config;
|
|
34
34
|
var _b = (0, react_1.useState)(false), showEMV = _b[0], setShowEMV = _b[1];
|
|
35
35
|
if (showEMV) {
|
|
36
|
-
return react_1.default.createElement(EMVPaymentScreen_1.default,
|
|
36
|
+
return react_1.default.createElement(EMVPaymentScreen_1.default, { posConfig: config });
|
|
37
37
|
}
|
|
38
38
|
return (react_1.default.createElement(react_native_1.View, { style: styles.container },
|
|
39
39
|
react_1.default.createElement(react_native_1.Text, { style: styles.title }, "Welcome to Quivio Payment Processor"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainScreen.js","sourceRoot":"","sources":["../../src/example/MainScreen.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AACxC,6CAA8D;AAC9D,wEAAkD;AAGlD,IAAM,UAAU,GAAoC,UAAC,EAAU;QAAR,MAAM,YAAA;IACrD,IAAA,KAAwB,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAE9C,IAAI,OAAO,EAAE;QACX,OAAO,8BAAC,0BAAgB,
|
|
1
|
+
{"version":3,"file":"MainScreen.js","sourceRoot":"","sources":["../../src/example/MainScreen.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAwC;AACxC,6CAA8D;AAC9D,wEAAkD;AAGlD,IAAM,UAAU,GAAoC,UAAC,EAAU;QAAR,MAAM,YAAA;IACrD,IAAA,KAAwB,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAtC,OAAO,QAAA,EAAE,UAAU,QAAmB,CAAC;IAE9C,IAAI,OAAO,EAAE;QACX,OAAO,8BAAC,0BAAgB,IAAC,SAAS,EAAE,MAAM,GAAG,CAAC;KAC/C;IAED,OAAO,CACL,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;QAC3B,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,0CAA4C;QACrE,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,uCAAyC;QACrE,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,eAAe;YACjC,8BAAC,qBAAM,IACL,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,IAAI,CAAC,EAAhB,CAAgB,GAC/B,CACG,CACF,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,SAAS;QAC1B,OAAO,EAAE,EAAE;KACZ;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,EAAE;QAChB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,QAAQ;KACpB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,GAAG;KACd;CACF,CAAC,CAAC;AAEH,kBAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type DeviceConfig = {
|
|
2
|
+
serialNumber: string;
|
|
3
|
+
MerchantId: string;
|
|
4
|
+
isSandbox: boolean;
|
|
5
|
+
isConfigured: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare let IDTECH_LOCAL_DB: DeviceConfig[];
|
|
8
|
+
export declare const addDevice: (device: DeviceConfig) => void;
|
|
9
|
+
export declare const updateDevice: (serialNumber: string, updated: Partial<DeviceConfig>) => void;
|
|
10
|
+
export declare const deleteDevice: (serialNumber: string) => void;
|
|
11
|
+
export declare const getDeviceBySerial: (serialNumber: string) => DeviceConfig | undefined;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.getDeviceBySerial = exports.deleteDevice = exports.updateDevice = exports.addDevice = exports.IDTECH_LOCAL_DB = void 0;
|
|
15
|
+
exports.IDTECH_LOCAL_DB = [];
|
|
16
|
+
var addDevice = function (device) {
|
|
17
|
+
console.log('ADDING Device: ', device);
|
|
18
|
+
exports.IDTECH_LOCAL_DB.push(device);
|
|
19
|
+
console.log('After Device ADDED : ', exports.IDTECH_LOCAL_DB);
|
|
20
|
+
};
|
|
21
|
+
exports.addDevice = addDevice;
|
|
22
|
+
var updateDevice = function (serialNumber, updated) {
|
|
23
|
+
var index = exports.IDTECH_LOCAL_DB.findIndex(function (d) { return d.serialNumber === serialNumber; });
|
|
24
|
+
if (index !== -1) {
|
|
25
|
+
exports.IDTECH_LOCAL_DB[index] = __assign(__assign({}, exports.IDTECH_LOCAL_DB[index]), updated);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.updateDevice = updateDevice;
|
|
29
|
+
var deleteDevice = function (serialNumber) {
|
|
30
|
+
exports.IDTECH_LOCAL_DB = exports.IDTECH_LOCAL_DB.filter(function (d) { return d.serialNumber !== serialNumber; });
|
|
31
|
+
};
|
|
32
|
+
exports.deleteDevice = deleteDevice;
|
|
33
|
+
var getDeviceBySerial = function (serialNumber) {
|
|
34
|
+
return exports.IDTECH_LOCAL_DB.find(function (d) { return d.serialNumber === serialNumber; });
|
|
35
|
+
};
|
|
36
|
+
exports.getDeviceBySerial = getDeviceBySerial;
|
|
37
|
+
//# sourceMappingURL=deviceStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceStore.js","sourceRoot":"","sources":["../../../src/example/helper/deviceStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAOW,QAAA,eAAe,GAAmB,EAE5C,CAAC;AAEK,IAAM,SAAS,GAAG,UAAC,MAAoB;IAC5C,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvC,uBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,uBAAe,CAAC,CAAC;AACxD,CAAC,CAAC;AAJW,QAAA,SAAS,aAIpB;AAEK,IAAM,YAAY,GAAG,UAC1B,YAAoB,EACpB,OAA8B;IAE9B,IAAM,KAAK,GAAG,uBAAe,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,YAAY,KAAK,YAAY,EAA/B,CAA+B,CAAC,CAAC;IAE9E,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,uBAAe,CAAC,KAAK,CAAC,yBACjB,uBAAe,CAAC,KAAK,CAAC,GACtB,OAAO,CACX,CAAC;KACH;AACH,CAAC,CAAC;AAZW,QAAA,YAAY,gBAYvB;AAEK,IAAM,YAAY,GAAG,UAAC,YAAoB;IAC/C,uBAAe,GAAG,uBAAe,CAAC,MAAM,CACtC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,YAAY,KAAK,YAAY,EAA/B,CAA+B,CACrC,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,YAAY,gBAIvB;AAEK,IAAM,iBAAiB,GAAG,UAAC,YAAoB;IACpD,OAAO,uBAAe,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,YAAY,KAAK,YAAY,EAA/B,CAA+B,CAAC,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B"}
|
package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/POSTransactionExecutor.kt
CHANGED
|
@@ -10,17 +10,21 @@ import kotlinx.coroutines.Dispatchers
|
|
|
10
10
|
import kotlinx.coroutines.withContext
|
|
11
11
|
import javax.security.auth.callback.Callback
|
|
12
12
|
|
|
13
|
-
class POSTransactionExecutor(context: Context
|
|
13
|
+
class POSTransactionExecutor(context: Context) {
|
|
14
14
|
|
|
15
|
-
private val dsiEMVAndroidLib
|
|
15
|
+
private val dsiEMVAndroidLib by lazy {
|
|
16
16
|
DsiEMVInstanceBuilder.getInstance(context)
|
|
17
17
|
}
|
|
18
18
|
private val requestBuilder by lazy {
|
|
19
|
-
DsiEMVRequestBuilder(
|
|
19
|
+
DsiEMVRequestBuilder()
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
fun setPaymentConfig(posConfig: ConfigFactory) {
|
|
23
|
+
requestBuilder.setPaymentConfig(posConfig)
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
suspend fun doSale(amount: String) {
|
|
23
|
-
withContext(Dispatchers.IO){
|
|
27
|
+
withContext(Dispatchers.IO) {
|
|
24
28
|
val request = requestBuilder.buildEMVSaleRequest(amount)
|
|
25
29
|
requestLog(request)
|
|
26
30
|
dsiEMVAndroidLib.ProcessTransaction(request)
|
|
@@ -28,7 +32,7 @@ class POSTransactionExecutor(context: Context, posConfig: ConfigFactory) {
|
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
suspend fun doRecurringSale(amount: String) {
|
|
31
|
-
withContext(Dispatchers.IO){
|
|
35
|
+
withContext(Dispatchers.IO) {
|
|
32
36
|
val request = requestBuilder.buildEMVRecurringSaleRequest(amount)
|
|
33
37
|
requestLog(request)
|
|
34
38
|
dsiEMVAndroidLib.ProcessTransaction(request)
|
|
@@ -36,15 +40,15 @@ class POSTransactionExecutor(context: Context, posConfig: ConfigFactory) {
|
|
|
36
40
|
}
|
|
37
41
|
|
|
38
42
|
suspend fun doReplaceCardInRecurring() {
|
|
39
|
-
withContext(Dispatchers.IO){
|
|
43
|
+
withContext(Dispatchers.IO) {
|
|
40
44
|
val request = requestBuilder.buildReplaceCardInRecurringRequest()
|
|
41
45
|
requestLog(request)
|
|
42
46
|
dsiEMVAndroidLib.ProcessTransaction(request)
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
|
|
46
|
-
suspend fun collectCardData(){
|
|
47
|
-
withContext(Dispatchers.IO){
|
|
50
|
+
suspend fun collectCardData() {
|
|
51
|
+
withContext(Dispatchers.IO) {
|
|
48
52
|
val request = requestBuilder.buildCollectCardDataRequest()
|
|
49
53
|
requestLog(request)
|
|
50
54
|
dsiEMVAndroidLib.ProcessTransaction(
|
|
@@ -53,12 +57,12 @@ class POSTransactionExecutor(context: Context, posConfig: ConfigFactory) {
|
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
|
|
56
|
-
suspend fun cancelTransaction(){
|
|
60
|
+
suspend fun cancelTransaction() {
|
|
57
61
|
dsiEMVAndroidLib.CancelRequest()
|
|
58
62
|
}
|
|
59
63
|
|
|
60
|
-
suspend fun downloadConfig(){
|
|
61
|
-
withContext(Dispatchers.IO){
|
|
64
|
+
suspend fun downloadConfig() {
|
|
65
|
+
withContext(Dispatchers.IO) {
|
|
62
66
|
val request = requestBuilder.buildEMVParamDownloadRequest()
|
|
63
67
|
requestLog(request)
|
|
64
68
|
dsiEMVAndroidLib.ProcessTransaction(
|
|
@@ -67,18 +71,18 @@ class POSTransactionExecutor(context: Context, posConfig: ConfigFactory) {
|
|
|
67
71
|
}
|
|
68
72
|
}
|
|
69
73
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
fun getDeviceDetails(): String {
|
|
75
|
+
val request = requestBuilder.buildDeviceDetailsRequest()
|
|
76
|
+
requestLog(request)
|
|
77
|
+
val response = dsiEMVAndroidLib.ProcessTransaction(
|
|
78
|
+
request
|
|
79
|
+
)
|
|
80
|
+
requestLog("SYNCHRONOUS RESPONSE:::$response")
|
|
81
|
+
return response
|
|
78
82
|
}
|
|
79
83
|
|
|
80
|
-
suspend fun resetPinPad(){
|
|
81
|
-
withContext(Dispatchers.IO){
|
|
84
|
+
suspend fun resetPinPad() {
|
|
85
|
+
withContext(Dispatchers.IO) {
|
|
82
86
|
val request = requestBuilder.buildPinPadResetRequest()
|
|
83
87
|
requestLog(request)
|
|
84
88
|
dsiEMVAndroidLib.ProcessTransaction(
|
|
@@ -87,20 +91,20 @@ class POSTransactionExecutor(context: Context, posConfig: ConfigFactory) {
|
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
93
|
|
|
90
|
-
fun addPosTransactionListener(callback: ProcessTransactionResponseListener){
|
|
94
|
+
fun addPosTransactionListener(callback: ProcessTransactionResponseListener) {
|
|
91
95
|
dsiEMVAndroidLib.AddProcessTransactionResponseListener(callback)
|
|
92
96
|
}
|
|
93
97
|
|
|
94
|
-
fun addDisplayMessageListener(callback: DisplayMessageListener){
|
|
98
|
+
fun addDisplayMessageListener(callback: DisplayMessageListener) {
|
|
95
99
|
dsiEMVAndroidLib.AddDisplayMessageListener(callback)
|
|
96
100
|
}
|
|
97
101
|
|
|
98
|
-
fun clearAllListeners(){
|
|
102
|
+
fun clearAllListeners() {
|
|
99
103
|
dsiEMVAndroidLib.ClearProcessTransactionResponseListeners()
|
|
100
104
|
dsiEMVAndroidLib.ClearCollectCardDataResponseListeners()
|
|
101
105
|
}
|
|
102
106
|
|
|
103
|
-
private fun requestLog(log: String){
|
|
107
|
+
private fun requestLog(log: String) {
|
|
104
108
|
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Request: $log")
|
|
105
109
|
}
|
|
106
110
|
|
|
@@ -3,19 +3,26 @@ package com.rohan.emvcardreaderlib.builder
|
|
|
3
3
|
import com.rohan.emvcardreaderlib.ConfigFactory
|
|
4
4
|
import com.rohan.emvcardreaderlib.TransType
|
|
5
5
|
|
|
6
|
-
class DsiEMVRequestBuilder(
|
|
7
|
-
private
|
|
8
|
-
private
|
|
6
|
+
class DsiEMVRequestBuilder() {
|
|
7
|
+
private var merchantID = ""
|
|
8
|
+
private var operationMode = "CERT"
|
|
9
9
|
private val comPort = 1
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
private val userTrace = config.operatorID
|
|
10
|
+
private var secureDevice = ""
|
|
11
|
+
private var posPackageID = ""
|
|
12
|
+
private var userTrace = ""
|
|
14
13
|
|
|
15
14
|
private var sequenceNo = "0010010010"
|
|
16
15
|
|
|
17
16
|
private fun createUniqueInvoiceNo() = "${userTrace}-${System.currentTimeMillis()}"
|
|
18
17
|
|
|
18
|
+
fun setPaymentConfig(config: ConfigFactory) {
|
|
19
|
+
this.merchantID = config.merchantID
|
|
20
|
+
this.operationMode = if(config.isSandBox) "CERT" else "PROD"
|
|
21
|
+
this.secureDevice = config.secureDeviceName
|
|
22
|
+
this.posPackageID = config.posPackageID
|
|
23
|
+
this.userTrace = config.operatorID
|
|
24
|
+
}
|
|
25
|
+
|
|
19
26
|
fun buildPinPadResetRequest(): String {
|
|
20
27
|
return """
|
|
21
28
|
<?xml version="1.0"?>
|
package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/manager/EMVPaymentManager.kt
CHANGED
|
@@ -5,15 +5,14 @@ import android.util.Log
|
|
|
5
5
|
import com.datacap.android.DisplayMessageListener
|
|
6
6
|
import com.datacap.android.ProcessTransactionResponseListener
|
|
7
7
|
import com.rohan.emvcardreaderlib.ConfigFactory
|
|
8
|
-
import com.rohan.emvcardreaderlib.communicator.ConfigurationCommunicator
|
|
9
|
-
import com.rohan.emvcardreaderlib.communicator.EMVTransactionCommunicator
|
|
10
8
|
import com.rohan.emvcardreaderlib.POSTransactionExecutor
|
|
11
9
|
import com.rohan.emvcardreaderlib.PRINT_TAG
|
|
12
10
|
import com.rohan.emvcardreaderlib.ReaderState
|
|
13
11
|
import com.rohan.emvcardreaderlib.XMLResponseExtractor
|
|
12
|
+
import com.rohan.emvcardreaderlib.communicator.ConfigurationCommunicator
|
|
13
|
+
import com.rohan.emvcardreaderlib.communicator.EMVTransactionCommunicator
|
|
14
14
|
import kotlinx.coroutines.CoroutineScope
|
|
15
15
|
import kotlinx.coroutines.Dispatchers
|
|
16
|
-
import kotlinx.coroutines.delay
|
|
17
16
|
import kotlinx.coroutines.launch
|
|
18
17
|
import kotlinx.coroutines.withContext
|
|
19
18
|
|
|
@@ -22,8 +21,7 @@ import kotlinx.coroutines.withContext
|
|
|
22
21
|
* 1. Handle case when raised a transaction again and response says In-Progress
|
|
23
22
|
* */
|
|
24
23
|
class EMVPaymentManager(
|
|
25
|
-
val context: Context
|
|
26
|
-
posConfig: ConfigFactory
|
|
24
|
+
val context: Context
|
|
27
25
|
) {
|
|
28
26
|
private val cancellationTimeout: Long = 2000
|
|
29
27
|
private var currentPosState: ReaderState = ReaderState.IDLE
|
|
@@ -31,13 +29,17 @@ class EMVPaymentManager(
|
|
|
31
29
|
private var configCommunicator: ConfigurationCommunicator? = null
|
|
32
30
|
|
|
33
31
|
private val posTransactionExecutor by lazy {
|
|
34
|
-
POSTransactionExecutor(context
|
|
32
|
+
POSTransactionExecutor(context)
|
|
35
33
|
}
|
|
36
34
|
|
|
37
35
|
private val posXMLResponseExtractor by lazy {
|
|
38
36
|
XMLResponseExtractor()
|
|
39
37
|
}
|
|
40
38
|
|
|
39
|
+
fun setPaymentParams(posConfig: ConfigFactory){
|
|
40
|
+
posTransactionExecutor.setPaymentConfig(posConfig)
|
|
41
|
+
}
|
|
42
|
+
|
|
41
43
|
private suspend fun resetPinPad() {
|
|
42
44
|
currentPosState = ReaderState.Reset
|
|
43
45
|
posTransactionExecutor.resetPinPad()
|
|
@@ -50,11 +52,11 @@ class EMVPaymentManager(
|
|
|
50
52
|
|
|
51
53
|
suspend fun cancelTransaction(){
|
|
52
54
|
try {
|
|
53
|
-
|
|
55
|
+
requestLog("Operation Cancelled Called")
|
|
54
56
|
currentPosState = ReaderState.CancelTransaction
|
|
55
57
|
posTransactionExecutor.cancelTransaction()
|
|
56
58
|
} catch (e: Exception){
|
|
57
|
-
|
|
59
|
+
requestLog("Operation cancellation Failed: ${e.message}")
|
|
58
60
|
e.printStackTrace()
|
|
59
61
|
}
|
|
60
62
|
}
|
|
@@ -79,13 +81,15 @@ class EMVPaymentManager(
|
|
|
79
81
|
currentPosState = ReaderState.PrePaidCardDataCollect
|
|
80
82
|
}
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
fun getDeviceDetails() : String? {
|
|
83
85
|
currentPosState = ReaderState.FetchDeviceDetails
|
|
84
|
-
posTransactionExecutor.getDeviceDetails()
|
|
86
|
+
val responseXML = posTransactionExecutor.getDeviceDetails()
|
|
87
|
+
val clientVersionDetails = posXMLResponseExtractor.extractClientVersionResponse(responseXML)
|
|
88
|
+
return clientVersionDetails?.serialNumber
|
|
85
89
|
}
|
|
86
90
|
private suspend fun ignoreResponseIfProcessAlreadyRunning(res: String): Boolean {
|
|
87
91
|
if (posXMLResponseExtractor.isProcessAlreadyRunning(res)) {
|
|
88
|
-
|
|
92
|
+
requestLog("Operation Collision: Process already running detected")
|
|
89
93
|
communicator?.processAlreadyRunning()
|
|
90
94
|
return true
|
|
91
95
|
} else {
|
|
@@ -95,12 +99,13 @@ class EMVPaymentManager(
|
|
|
95
99
|
}
|
|
96
100
|
|
|
97
101
|
private val displayMessageCallback = DisplayMessageListener { message ->
|
|
98
|
-
|
|
102
|
+
requestLog("Message from IDTECH: $message")
|
|
99
103
|
communicator?.onShowDisplayMessage(message)
|
|
100
104
|
}
|
|
101
105
|
|
|
106
|
+
|
|
102
107
|
private val processListener = ProcessTransactionResponseListener { res ->
|
|
103
|
-
|
|
108
|
+
requestLog("Response from IDTECH: $res")
|
|
104
109
|
|
|
105
110
|
CoroutineScope(Dispatchers.IO).launch {
|
|
106
111
|
|
|
@@ -126,7 +131,7 @@ class EMVPaymentManager(
|
|
|
126
131
|
configCommunicator?.onConfigError(errorRes.textResponse)
|
|
127
132
|
currentPosState = ReaderState.IDLE
|
|
128
133
|
}
|
|
129
|
-
ReaderState.Reset -> {
|
|
134
|
+
ReaderState.Reset, ReaderState.FetchDeviceDetails -> {
|
|
130
135
|
currentPosState = ReaderState.IDLE
|
|
131
136
|
}
|
|
132
137
|
ReaderState.CancelTransaction -> {
|
|
@@ -147,18 +152,18 @@ class EMVPaymentManager(
|
|
|
147
152
|
}
|
|
148
153
|
ReaderState.DownloadingConfig -> {
|
|
149
154
|
configCommunicator?.onConfigCompleted()
|
|
150
|
-
currentPosState
|
|
155
|
+
currentPosState == ReaderState.IDLE
|
|
151
156
|
}
|
|
152
157
|
ReaderState.CancelTransaction -> {
|
|
153
158
|
communicator?.transactionCancelled(null)
|
|
154
159
|
currentPosState = ReaderState.IDLE
|
|
155
160
|
}
|
|
156
161
|
ReaderState.FetchDeviceDetails -> {
|
|
157
|
-
val clientVersionDetails = posXMLResponseExtractor.extractClientVersionResponse(xml)
|
|
158
|
-
clientVersionDetails?.let {
|
|
159
|
-
communicator?.onDeviceDetailsRetrieved(it)
|
|
160
|
-
}
|
|
161
|
-
currentPosState
|
|
162
|
+
// val clientVersionDetails = posXMLResponseExtractor.extractClientVersionResponse(xml)
|
|
163
|
+
// clientVersionDetails?.let {
|
|
164
|
+
// communicator?.onDeviceDetailsRetrieved(it)
|
|
165
|
+
// }
|
|
166
|
+
currentPosState == ReaderState.IDLE
|
|
162
167
|
}
|
|
163
168
|
ReaderState.PrePaidCardDataCollect -> {
|
|
164
169
|
val cardData = posXMLResponseExtractor.extractCardResponse(xml)
|
|
@@ -210,4 +215,7 @@ class EMVPaymentManager(
|
|
|
210
215
|
posTransactionExecutor.clearAllListeners()
|
|
211
216
|
}
|
|
212
217
|
|
|
218
|
+
private fun requestLog(log: String){
|
|
219
|
+
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Message: $log")
|
|
220
|
+
}
|
|
213
221
|
}
|
package/libs/emvNative/src/main/java/com/quivio_transaction_processor/EMVPaymentManagerModule.kt
CHANGED
|
@@ -45,11 +45,17 @@ class EMVPaymentManagerModule(private val reactContext: ReactApplicationContext)
|
|
|
45
45
|
override fun getName() = NAME
|
|
46
46
|
|
|
47
47
|
@ReactMethod
|
|
48
|
-
fun
|
|
49
|
-
val config = ConfigConverterFactory.processMap(map)
|
|
48
|
+
fun initializeLib() {
|
|
50
49
|
val context = currentActivity ?: reactContext
|
|
51
|
-
dsiEMVManager = EMVPaymentManager(context
|
|
50
|
+
dsiEMVManager = EMVPaymentManager(context)
|
|
52
51
|
dsiEMVManager?.registerListener(this, this)
|
|
52
|
+
log("Payment Library Initialised!")
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@ReactMethod
|
|
56
|
+
fun setMerchantDetails(map: ReadableMap){
|
|
57
|
+
val config = ConfigConverterFactory.processMap(map)
|
|
58
|
+
dsiEMVManager?.setPaymentParams(config)
|
|
53
59
|
log("Configurational parameters sent to library: $map")
|
|
54
60
|
}
|
|
55
61
|
|
|
@@ -108,10 +114,13 @@ class EMVPaymentManagerModule(private val reactContext: ReactApplicationContext)
|
|
|
108
114
|
}
|
|
109
115
|
|
|
110
116
|
@ReactMethod
|
|
111
|
-
fun getDeviceDetails()
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
dsiEMVManager?.getDeviceDetails()
|
|
117
|
+
fun getDeviceDetails(promise: Promise){
|
|
118
|
+
try {
|
|
119
|
+
log("Fetching connected device info")
|
|
120
|
+
val response = dsiEMVManager?.getDeviceDetails()
|
|
121
|
+
promise.resolve(response)
|
|
122
|
+
} catch (e: Exception) {
|
|
123
|
+
promise.reject("ERROR", e)
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
126
|
|