quivio-transaction-processor 1.23.2-beta → 1.23.2
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 +63 -144
- package/dist/emvPaymentProvider/EMVPaymentProvider.js.map +1 -1
- package/dist/emvPaymentProvider/types.d.ts +2 -5
- package/dist/example/EMVPaymentScreen.d.ts +1 -4
- package/dist/example/EMVPaymentScreen.js +8 -101
- package/dist/example/EMVPaymentScreen.js.map +1 -1
- package/dist/example/EMVSettingsScreen.js +6 -4
- package/dist/example/EMVSettingsScreen.js.map +1 -1
- package/dist/example/ExternalSystemsScreen.js +3 -123
- package/dist/example/ExternalSystemsScreen.js.map +1 -1
- package/dist/example/MainScreen.js +1 -1
- package/dist/example/MainScreen.js.map +1 -1
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/POSTransactionExecutor.kt +25 -29
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/builder/DsiEMVRequestBuilder.kt +7 -14
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/manager/EMVPaymentManager.kt +20 -28
- package/libs/emvNative/src/main/java/com/quivio_transaction_processor/EMVPaymentManagerModule.kt +7 -16
- package/package.json +1 -1
- package/src/emvPaymentProvider/EMVPaymentProvider.tsx +64 -105
- package/src/emvPaymentProvider/types.ts +2 -5
- package/src/example/EMVPaymentScreen.tsx +18 -75
- package/src/example/EMVSettingsScreen.tsx +5 -3
- package/src/example/ExternalSystemsScreen.tsx +27 -116
- package/src/example/MainScreen.tsx +1 -1
- package/dist/example/helper/deviceStore.d.ts +0 -11
- package/dist/example/helper/deviceStore.js +0 -37
- package/dist/example/helper/deviceStore.js.map +0 -1
- package/src/example/helper/deviceStore.ts +0 -40
|
@@ -22,137 +22,22 @@ 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
|
-
};
|
|
61
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
62
26
|
var react_1 = __importStar(require("react"));
|
|
63
27
|
var react_native_1 = require("react-native");
|
|
64
28
|
var useEMVPayment_1 = require("../emvPaymentProvider/useEMVPayment");
|
|
65
|
-
var deviceStore_1 = require("./helper/deviceStore");
|
|
66
29
|
var ExternalSystemsScreen = function (_a) {
|
|
67
30
|
var _b, _c, _d, _e;
|
|
68
31
|
var config = _a.config, onBackPress = _a.onBackPress;
|
|
69
|
-
var _f = (0, useEMVPayment_1.useEMVPayment)(), isConfigured = _f.isConfigured,
|
|
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;
|
|
70
33
|
var deviceInfo = (0, react_1.useState)('')[0];
|
|
71
|
-
var _g = (0, react_1.useState)(false),
|
|
72
|
-
var _h = (0, react_1.useState)(false), infoVisible = _h[0], setInfoVisible = _h[1];
|
|
34
|
+
var _g = (0, react_1.useState)(false), infoVisible = _g[0], setInfoVisible = _g[1];
|
|
73
35
|
// Auto-close info modal when device connects
|
|
74
36
|
(0, react_1.useEffect)(function () {
|
|
75
37
|
if (isDeviceConnected && infoVisible) {
|
|
76
38
|
setInfoVisible(false);
|
|
77
39
|
}
|
|
78
40
|
}, [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]);
|
|
156
41
|
var onConfigureDevice = (0, react_1.useCallback)(function () {
|
|
157
42
|
if (!config)
|
|
158
43
|
return;
|
|
@@ -181,10 +66,6 @@ var ExternalSystemsScreen = function (_a) {
|
|
|
181
66
|
displayMessage),
|
|
182
67
|
react_1.default.createElement(react_native_1.Pressable, { style: styles.closeButton, onPress: function () { } },
|
|
183
68
|
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....."))))); };
|
|
188
69
|
var CancelModal = function () { return (react_1.default.createElement(react_native_1.Modal, { visible: isCancellationRunning, transparent: true, animationType: "fade", onRequestClose: function () { } },
|
|
189
70
|
react_1.default.createElement(react_native_1.Pressable, { style: styles.modalBackground, onPress: function () { return cancelOperation(); } },
|
|
190
71
|
react_1.default.createElement(react_native_1.Pressable, { style: styles.modalContainer },
|
|
@@ -230,9 +111,8 @@ var ExternalSystemsScreen = function (_a) {
|
|
|
230
111
|
react_1.default.createElement(react_native_1.TextInput, { style: styles.disabledInput, value: deviceInfo, editable: false, multiline: true }),
|
|
231
112
|
react_1.default.createElement(InfoModal, null),
|
|
232
113
|
react_1.default.createElement(LoaderModal, null),
|
|
233
|
-
react_1.default.createElement(DeviceDetailsModal, null),
|
|
234
114
|
react_1.default.createElement(CancelModal, null),
|
|
235
|
-
isDeviceConnected && react_1.default.createElement(ConfigureCTA, null),
|
|
115
|
+
isDeviceConnected && !isConfigured && react_1.default.createElement(ConfigureCTA, null),
|
|
236
116
|
react_1.default.createElement(BackCTA, null))));
|
|
237
117
|
};
|
|
238
118
|
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, null);
|
|
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,OAAG,CAAC;KAC7B;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"}
|
package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/POSTransactionExecutor.kt
CHANGED
|
@@ -10,21 +10,17 @@ 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, posConfig: ConfigFactory) {
|
|
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()
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
fun setPaymentConfig(posConfig: ConfigFactory) {
|
|
23
|
-
requestBuilder.setPaymentConfig(posConfig)
|
|
19
|
+
DsiEMVRequestBuilder(posConfig)
|
|
24
20
|
}
|
|
25
21
|
|
|
26
22
|
suspend fun doSale(amount: String) {
|
|
27
|
-
withContext(Dispatchers.IO)
|
|
23
|
+
withContext(Dispatchers.IO){
|
|
28
24
|
val request = requestBuilder.buildEMVSaleRequest(amount)
|
|
29
25
|
requestLog(request)
|
|
30
26
|
dsiEMVAndroidLib.ProcessTransaction(request)
|
|
@@ -32,7 +28,7 @@ class POSTransactionExecutor(context: Context) {
|
|
|
32
28
|
}
|
|
33
29
|
|
|
34
30
|
suspend fun doRecurringSale(amount: String) {
|
|
35
|
-
withContext(Dispatchers.IO)
|
|
31
|
+
withContext(Dispatchers.IO){
|
|
36
32
|
val request = requestBuilder.buildEMVRecurringSaleRequest(amount)
|
|
37
33
|
requestLog(request)
|
|
38
34
|
dsiEMVAndroidLib.ProcessTransaction(request)
|
|
@@ -40,15 +36,15 @@ class POSTransactionExecutor(context: Context) {
|
|
|
40
36
|
}
|
|
41
37
|
|
|
42
38
|
suspend fun doReplaceCardInRecurring() {
|
|
43
|
-
withContext(Dispatchers.IO)
|
|
39
|
+
withContext(Dispatchers.IO){
|
|
44
40
|
val request = requestBuilder.buildReplaceCardInRecurringRequest()
|
|
45
41
|
requestLog(request)
|
|
46
42
|
dsiEMVAndroidLib.ProcessTransaction(request)
|
|
47
43
|
}
|
|
48
44
|
}
|
|
49
45
|
|
|
50
|
-
suspend fun collectCardData()
|
|
51
|
-
withContext(Dispatchers.IO)
|
|
46
|
+
suspend fun collectCardData(){
|
|
47
|
+
withContext(Dispatchers.IO){
|
|
52
48
|
val request = requestBuilder.buildCollectCardDataRequest()
|
|
53
49
|
requestLog(request)
|
|
54
50
|
dsiEMVAndroidLib.ProcessTransaction(
|
|
@@ -57,12 +53,12 @@ class POSTransactionExecutor(context: Context) {
|
|
|
57
53
|
}
|
|
58
54
|
}
|
|
59
55
|
|
|
60
|
-
suspend fun cancelTransaction()
|
|
56
|
+
suspend fun cancelTransaction(){
|
|
61
57
|
dsiEMVAndroidLib.CancelRequest()
|
|
62
58
|
}
|
|
63
59
|
|
|
64
|
-
suspend fun downloadConfig()
|
|
65
|
-
withContext(Dispatchers.IO)
|
|
60
|
+
suspend fun downloadConfig(){
|
|
61
|
+
withContext(Dispatchers.IO){
|
|
66
62
|
val request = requestBuilder.buildEMVParamDownloadRequest()
|
|
67
63
|
requestLog(request)
|
|
68
64
|
dsiEMVAndroidLib.ProcessTransaction(
|
|
@@ -71,18 +67,18 @@ class POSTransactionExecutor(context: Context) {
|
|
|
71
67
|
}
|
|
72
68
|
}
|
|
73
69
|
|
|
74
|
-
fun getDeviceDetails()
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
70
|
+
suspend fun getDeviceDetails(){
|
|
71
|
+
withContext(Dispatchers.IO){
|
|
72
|
+
val request = requestBuilder.buildDeviceDetailsRequest()
|
|
73
|
+
requestLog(request)
|
|
74
|
+
dsiEMVAndroidLib.ProcessTransaction(
|
|
75
|
+
request
|
|
76
|
+
)
|
|
77
|
+
}
|
|
82
78
|
}
|
|
83
79
|
|
|
84
|
-
suspend fun resetPinPad()
|
|
85
|
-
withContext(Dispatchers.IO)
|
|
80
|
+
suspend fun resetPinPad(){
|
|
81
|
+
withContext(Dispatchers.IO){
|
|
86
82
|
val request = requestBuilder.buildPinPadResetRequest()
|
|
87
83
|
requestLog(request)
|
|
88
84
|
dsiEMVAndroidLib.ProcessTransaction(
|
|
@@ -91,20 +87,20 @@ class POSTransactionExecutor(context: Context) {
|
|
|
91
87
|
}
|
|
92
88
|
}
|
|
93
89
|
|
|
94
|
-
fun addPosTransactionListener(callback: ProcessTransactionResponseListener)
|
|
90
|
+
fun addPosTransactionListener(callback: ProcessTransactionResponseListener){
|
|
95
91
|
dsiEMVAndroidLib.AddProcessTransactionResponseListener(callback)
|
|
96
92
|
}
|
|
97
93
|
|
|
98
|
-
fun addDisplayMessageListener(callback: DisplayMessageListener)
|
|
94
|
+
fun addDisplayMessageListener(callback: DisplayMessageListener){
|
|
99
95
|
dsiEMVAndroidLib.AddDisplayMessageListener(callback)
|
|
100
96
|
}
|
|
101
97
|
|
|
102
|
-
fun clearAllListeners()
|
|
98
|
+
fun clearAllListeners(){
|
|
103
99
|
dsiEMVAndroidLib.ClearProcessTransactionResponseListeners()
|
|
104
100
|
dsiEMVAndroidLib.ClearCollectCardDataResponseListeners()
|
|
105
101
|
}
|
|
106
102
|
|
|
107
|
-
private fun requestLog(log: String)
|
|
103
|
+
private fun requestLog(log: String){
|
|
108
104
|
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Request: $log")
|
|
109
105
|
}
|
|
110
106
|
|
|
@@ -3,26 +3,19 @@ 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(val config: ConfigFactory) {
|
|
7
|
+
private val merchantID = config.merchantID
|
|
8
|
+
private val operationMode = if (config.isSandBox) "CERT" else "PROD"
|
|
9
9
|
private val comPort = 1
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
|
|
10
|
+
private val secureDevice = config.secureDeviceName
|
|
11
|
+
private val posPackageID = config.posPackageID
|
|
12
|
+
|
|
13
|
+
private val userTrace = config.operatorID
|
|
13
14
|
|
|
14
15
|
private var sequenceNo = "0010010010"
|
|
15
16
|
|
|
16
17
|
private fun createUniqueInvoiceNo() = "${userTrace}-${System.currentTimeMillis()}"
|
|
17
18
|
|
|
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
|
-
|
|
26
19
|
fun buildPinPadResetRequest(): String {
|
|
27
20
|
return """
|
|
28
21
|
<?xml version="1.0"?>
|
package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/manager/EMVPaymentManager.kt
CHANGED
|
@@ -5,14 +5,15 @@ 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
|
|
8
10
|
import com.rohan.emvcardreaderlib.POSTransactionExecutor
|
|
9
11
|
import com.rohan.emvcardreaderlib.PRINT_TAG
|
|
10
12
|
import com.rohan.emvcardreaderlib.ReaderState
|
|
11
13
|
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
|
|
16
17
|
import kotlinx.coroutines.launch
|
|
17
18
|
import kotlinx.coroutines.withContext
|
|
18
19
|
|
|
@@ -21,7 +22,8 @@ import kotlinx.coroutines.withContext
|
|
|
21
22
|
* 1. Handle case when raised a transaction again and response says In-Progress
|
|
22
23
|
* */
|
|
23
24
|
class EMVPaymentManager(
|
|
24
|
-
val context: Context
|
|
25
|
+
val context: Context,
|
|
26
|
+
posConfig: ConfigFactory
|
|
25
27
|
) {
|
|
26
28
|
private val cancellationTimeout: Long = 2000
|
|
27
29
|
private var currentPosState: ReaderState = ReaderState.IDLE
|
|
@@ -29,17 +31,13 @@ class EMVPaymentManager(
|
|
|
29
31
|
private var configCommunicator: ConfigurationCommunicator? = null
|
|
30
32
|
|
|
31
33
|
private val posTransactionExecutor by lazy {
|
|
32
|
-
POSTransactionExecutor(context)
|
|
34
|
+
POSTransactionExecutor(context, posConfig)
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
private val posXMLResponseExtractor by lazy {
|
|
36
38
|
XMLResponseExtractor()
|
|
37
39
|
}
|
|
38
40
|
|
|
39
|
-
fun setPaymentParams(posConfig: ConfigFactory){
|
|
40
|
-
posTransactionExecutor.setPaymentConfig(posConfig)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
41
|
private suspend fun resetPinPad() {
|
|
44
42
|
currentPosState = ReaderState.Reset
|
|
45
43
|
posTransactionExecutor.resetPinPad()
|
|
@@ -52,11 +50,11 @@ class EMVPaymentManager(
|
|
|
52
50
|
|
|
53
51
|
suspend fun cancelTransaction(){
|
|
54
52
|
try {
|
|
55
|
-
|
|
53
|
+
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Operation Cancelled Called")
|
|
56
54
|
currentPosState = ReaderState.CancelTransaction
|
|
57
55
|
posTransactionExecutor.cancelTransaction()
|
|
58
56
|
} catch (e: Exception){
|
|
59
|
-
|
|
57
|
+
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Operation cancellation Failed: ${e.message}")
|
|
60
58
|
e.printStackTrace()
|
|
61
59
|
}
|
|
62
60
|
}
|
|
@@ -81,15 +79,13 @@ class EMVPaymentManager(
|
|
|
81
79
|
currentPosState = ReaderState.PrePaidCardDataCollect
|
|
82
80
|
}
|
|
83
81
|
|
|
84
|
-
fun getDeviceDetails()
|
|
82
|
+
suspend fun getDeviceDetails() = withContext(Dispatchers.IO) {
|
|
85
83
|
currentPosState = ReaderState.FetchDeviceDetails
|
|
86
|
-
|
|
87
|
-
val clientVersionDetails = posXMLResponseExtractor.extractClientVersionResponse(responseXML)
|
|
88
|
-
return clientVersionDetails?.serialNumber
|
|
84
|
+
posTransactionExecutor.getDeviceDetails()
|
|
89
85
|
}
|
|
90
86
|
private suspend fun ignoreResponseIfProcessAlreadyRunning(res: String): Boolean {
|
|
91
87
|
if (posXMLResponseExtractor.isProcessAlreadyRunning(res)) {
|
|
92
|
-
|
|
88
|
+
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Process already running detected. Auto-cancelling transaction...")
|
|
93
89
|
communicator?.processAlreadyRunning()
|
|
94
90
|
return true
|
|
95
91
|
} else {
|
|
@@ -99,13 +95,12 @@ class EMVPaymentManager(
|
|
|
99
95
|
}
|
|
100
96
|
|
|
101
97
|
private val displayMessageCallback = DisplayMessageListener { message ->
|
|
102
|
-
|
|
98
|
+
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Display Message: $message")
|
|
103
99
|
communicator?.onShowDisplayMessage(message)
|
|
104
100
|
}
|
|
105
101
|
|
|
106
|
-
|
|
107
102
|
private val processListener = ProcessTransactionResponseListener { res ->
|
|
108
|
-
|
|
103
|
+
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Device Response: $res")
|
|
109
104
|
|
|
110
105
|
CoroutineScope(Dispatchers.IO).launch {
|
|
111
106
|
|
|
@@ -131,7 +126,7 @@ class EMVPaymentManager(
|
|
|
131
126
|
configCommunicator?.onConfigError(errorRes.textResponse)
|
|
132
127
|
currentPosState = ReaderState.IDLE
|
|
133
128
|
}
|
|
134
|
-
ReaderState.Reset
|
|
129
|
+
ReaderState.Reset -> {
|
|
135
130
|
currentPosState = ReaderState.IDLE
|
|
136
131
|
}
|
|
137
132
|
ReaderState.CancelTransaction -> {
|
|
@@ -152,18 +147,18 @@ class EMVPaymentManager(
|
|
|
152
147
|
}
|
|
153
148
|
ReaderState.DownloadingConfig -> {
|
|
154
149
|
configCommunicator?.onConfigCompleted()
|
|
155
|
-
currentPosState
|
|
150
|
+
currentPosState != ReaderState.IDLE
|
|
156
151
|
}
|
|
157
152
|
ReaderState.CancelTransaction -> {
|
|
158
153
|
communicator?.transactionCancelled(null)
|
|
159
154
|
currentPosState = ReaderState.IDLE
|
|
160
155
|
}
|
|
161
156
|
ReaderState.FetchDeviceDetails -> {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
currentPosState
|
|
157
|
+
val clientVersionDetails = posXMLResponseExtractor.extractClientVersionResponse(xml)
|
|
158
|
+
clientVersionDetails?.let {
|
|
159
|
+
communicator?.onDeviceDetailsRetrieved(it)
|
|
160
|
+
}
|
|
161
|
+
currentPosState != ReaderState.IDLE
|
|
167
162
|
}
|
|
168
163
|
ReaderState.PrePaidCardDataCollect -> {
|
|
169
164
|
val cardData = posXMLResponseExtractor.extractCardResponse(xml)
|
|
@@ -215,7 +210,4 @@ class EMVPaymentManager(
|
|
|
215
210
|
posTransactionExecutor.clearAllListeners()
|
|
216
211
|
}
|
|
217
212
|
|
|
218
|
-
private fun requestLog(log: String){
|
|
219
|
-
Log.d(PRINT_TAG, "Class: ${this::class.java.simpleName} \n Message: $log")
|
|
220
|
-
}
|
|
221
213
|
}
|
package/libs/emvNative/src/main/java/com/quivio_transaction_processor/EMVPaymentManagerModule.kt
CHANGED
|
@@ -45,17 +45,11 @@ class EMVPaymentManagerModule(private val reactContext: ReactApplicationContext)
|
|
|
45
45
|
override fun getName() = NAME
|
|
46
46
|
|
|
47
47
|
@ReactMethod
|
|
48
|
-
fun
|
|
48
|
+
fun initialize(map: ReadableMap) {
|
|
49
|
+
val config = ConfigConverterFactory.processMap(map)
|
|
49
50
|
val context = currentActivity ?: reactContext
|
|
50
|
-
dsiEMVManager = EMVPaymentManager(context)
|
|
51
|
+
dsiEMVManager = EMVPaymentManager(context, config)
|
|
51
52
|
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)
|
|
59
53
|
log("Configurational parameters sent to library: $map")
|
|
60
54
|
}
|
|
61
55
|
|
|
@@ -114,13 +108,10 @@ class EMVPaymentManagerModule(private val reactContext: ReactApplicationContext)
|
|
|
114
108
|
}
|
|
115
109
|
|
|
116
110
|
@ReactMethod
|
|
117
|
-
fun getDeviceDetails(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
promise.resolve(response)
|
|
122
|
-
} catch (e: Exception) {
|
|
123
|
-
promise.reject("ERROR", e)
|
|
111
|
+
fun getDeviceDetails() {
|
|
112
|
+
log("Fetching connected device info")
|
|
113
|
+
CoroutineScope(Dispatchers.Main).launch {
|
|
114
|
+
dsiEMVManager?.getDeviceDetails()
|
|
124
115
|
}
|
|
125
116
|
}
|
|
126
117
|
|