react-native-amwal-ecr 0.1.0
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/CHANGELOG.md +30 -0
- package/LICENSE +20 -0
- package/README.md +278 -0
- package/RNAmwalEcr.podspec +27 -0
- package/android/build.gradle +53 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/com/amwalecr/AmwalEcrModule.kt +325 -0
- package/android/src/main/java/com/amwalecr/AmwalEcrPackage.kt +31 -0
- package/android/src/main/java/com/amwalecr/EcrMapping.kt +135 -0
- package/docs/compatibility.md +22 -0
- package/ios/AmwalEcr.h +4 -0
- package/ios/AmwalEcr.mm +121 -0
- package/ios/AmwalEcr.swift +424 -0
- package/ios/EcrMapping.swift +142 -0
- package/lib/module/EcrOperation.js +18 -0
- package/lib/module/EcrOperation.js.map +1 -0
- package/lib/module/EcrTerminal.js +211 -0
- package/lib/module/EcrTerminal.js.map +1 -0
- package/lib/module/NativeAmwalEcr.js +5 -0
- package/lib/module/NativeAmwalEcr.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/native.js +16 -0
- package/lib/module/native.js.map +1 -0
- package/lib/module/native.native.js +4 -0
- package/lib/module/native.native.js.map +1 -0
- package/lib/module/normalize.js +87 -0
- package/lib/module/normalize.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/EcrOperation.d.ts +10 -0
- package/lib/typescript/src/EcrOperation.d.ts.map +1 -0
- package/lib/typescript/src/EcrTerminal.d.ts +34 -0
- package/lib/typescript/src/EcrTerminal.d.ts.map +1 -0
- package/lib/typescript/src/NativeAmwalEcr.d.ts +14 -0
- package/lib/typescript/src/NativeAmwalEcr.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +5 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/native.d.ts +3 -0
- package/lib/typescript/src/native.d.ts.map +1 -0
- package/lib/typescript/src/native.native.d.ts +2 -0
- package/lib/typescript/src/native.native.d.ts.map +1 -0
- package/lib/typescript/src/normalize.d.ts +5 -0
- package/lib/typescript/src/normalize.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +157 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +153 -0
- package/src/EcrOperation.ts +25 -0
- package/src/EcrTerminal.ts +344 -0
- package/src/NativeAmwalEcr.ts +28 -0
- package/src/index.tsx +34 -0
- package/src/native.native.ts +1 -0
- package/src/native.ts +18 -0
- package/src/normalize.ts +116 -0
- package/src/types.ts +189 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { EcrOperation } from "./EcrOperation.js";
|
|
4
|
+
import { nativeEcr } from './native';
|
|
5
|
+
import { normalizeInquiry, normalizeReceipt, normalizeResult } from "./normalize.js";
|
|
6
|
+
const DEFAULT_CONFIG = {
|
|
7
|
+
ecrId: 'ECR01',
|
|
8
|
+
currencyCode: '512',
|
|
9
|
+
minorUnitDigits: 3,
|
|
10
|
+
port: 9100,
|
|
11
|
+
connectTimeoutMs: 10_000,
|
|
12
|
+
responseTimeoutMs: 120_000,
|
|
13
|
+
probeTimeoutMs: 3_000,
|
|
14
|
+
secureHashKey: '',
|
|
15
|
+
autoInquireOnFailure: true,
|
|
16
|
+
merchantId: '',
|
|
17
|
+
terminalId: '',
|
|
18
|
+
environment: 'SIT'
|
|
19
|
+
};
|
|
20
|
+
const ENVIRONMENTS = ['SIT', 'UAT', 'PROD'];
|
|
21
|
+
let operationSequence = 0;
|
|
22
|
+
function newOperationId() {
|
|
23
|
+
operationSequence = (operationSequence + 1) % Number.MAX_SAFE_INTEGER;
|
|
24
|
+
return `ecr-${Date.now().toString(36)}-${operationSequence.toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
25
|
+
}
|
|
26
|
+
function requireText(value, label) {
|
|
27
|
+
const trimmed = value.trim();
|
|
28
|
+
if (!trimmed) {
|
|
29
|
+
throw new TypeError(`${label} is required.`);
|
|
30
|
+
}
|
|
31
|
+
return trimmed;
|
|
32
|
+
}
|
|
33
|
+
function requireAmount(amount) {
|
|
34
|
+
const trimmed = amount.trim();
|
|
35
|
+
if (!/^\d+(\.\d+)?$/.test(trimmed)) {
|
|
36
|
+
throw new TypeError(`"${amount}" is not a plain decimal amount. Use a string such as "1.234".`);
|
|
37
|
+
}
|
|
38
|
+
return trimmed;
|
|
39
|
+
}
|
|
40
|
+
function requireDate(value, required) {
|
|
41
|
+
const trimmed = value.trim();
|
|
42
|
+
if (!trimmed && !required) return '';
|
|
43
|
+
if (!/^\d{8}$/.test(trimmed)) {
|
|
44
|
+
throw new TypeError('transactionDate must use yyyyMMdd, for example 20260902.');
|
|
45
|
+
}
|
|
46
|
+
return trimmed;
|
|
47
|
+
}
|
|
48
|
+
function requireReference(value, label) {
|
|
49
|
+
const trimmed = value?.trim() ?? '';
|
|
50
|
+
if (!trimmed) return '';
|
|
51
|
+
if (trimmed.length > 32 || /[\s&=]/.test(trimmed)) {
|
|
52
|
+
throw new TypeError(`${label} must be at most 32 characters and cannot contain whitespace, "&", or "=".`);
|
|
53
|
+
}
|
|
54
|
+
return trimmed;
|
|
55
|
+
}
|
|
56
|
+
function positiveInteger(value, label) {
|
|
57
|
+
if (!Number.isInteger(value) || value <= 0) {
|
|
58
|
+
throw new TypeError(`${label} must be a positive whole number.`);
|
|
59
|
+
}
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
function normalizeConfig(config = {}) {
|
|
63
|
+
const normalized = {
|
|
64
|
+
...DEFAULT_CONFIG,
|
|
65
|
+
...config
|
|
66
|
+
};
|
|
67
|
+
if (normalized.minorUnitDigits < 0 || normalized.minorUnitDigits > 4) {
|
|
68
|
+
throw new TypeError('minorUnitDigits must be between 0 and 4.');
|
|
69
|
+
}
|
|
70
|
+
if (normalized.port < 1 || normalized.port > 65_535) {
|
|
71
|
+
throw new TypeError('port must be between 1 and 65535.');
|
|
72
|
+
}
|
|
73
|
+
positiveInteger(normalized.connectTimeoutMs, 'connectTimeoutMs');
|
|
74
|
+
positiveInteger(normalized.responseTimeoutMs, 'responseTimeoutMs');
|
|
75
|
+
positiveInteger(normalized.probeTimeoutMs, 'probeTimeoutMs');
|
|
76
|
+
if (normalized.secureHashKey && (normalized.secureHashKey.length < 16 || normalized.secureHashKey.length % 2 !== 0 || !/^[0-9a-fA-F]+$/.test(normalized.secureHashKey))) {
|
|
77
|
+
throw new TypeError('secureHashKey must be an even-length hexadecimal string of at least 16 characters, or empty.');
|
|
78
|
+
}
|
|
79
|
+
const environment = String(normalized.environment).toUpperCase();
|
|
80
|
+
if (!ENVIRONMENTS.includes(environment)) {
|
|
81
|
+
throw new TypeError(`environment must be one of ${ENVIRONMENTS.join(', ')}.`);
|
|
82
|
+
}
|
|
83
|
+
normalized.environment = environment;
|
|
84
|
+
return normalized;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* One Amwal POS terminal reachable from the mobile device's local network.
|
|
88
|
+
*
|
|
89
|
+
* Amounts are decimal strings, never JavaScript numbers. A failed exchange is
|
|
90
|
+
* not a decline: when `outcomeIsUnknown` is true, inquire by the same merchant
|
|
91
|
+
* reference before considering another money-moving request.
|
|
92
|
+
*/
|
|
93
|
+
export class EcrTerminal {
|
|
94
|
+
constructor(options) {
|
|
95
|
+
this.serialNumber = options.serialNumber?.trim() ?? '';
|
|
96
|
+
this.transport = options.transport ?? 'wifi';
|
|
97
|
+
this.config = normalizeConfig(options.config);
|
|
98
|
+
if (this.transport === 'webService') {
|
|
99
|
+
// The payment host addresses the terminal; there is no IP to dial.
|
|
100
|
+
this.host = options.host?.trim() ?? '';
|
|
101
|
+
requireText(this.config.merchantId, 'config.merchantId');
|
|
102
|
+
requireText(this.config.terminalId, 'config.terminalId');
|
|
103
|
+
} else {
|
|
104
|
+
this.host = requireText(options.host ?? '', 'host');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
isReachable() {
|
|
108
|
+
if (!this.isIpTransport) return Promise.resolve(false);
|
|
109
|
+
return nativeEcr.isReachable(this.request(newOperationId()));
|
|
110
|
+
}
|
|
111
|
+
sale(amount, options = {}) {
|
|
112
|
+
return this.startSale(amount, options).result;
|
|
113
|
+
}
|
|
114
|
+
startSale(amount, options = {}) {
|
|
115
|
+
return this.startResult('sale', {
|
|
116
|
+
amount: requireAmount(amount),
|
|
117
|
+
merchantReferenceId: requireReference(options.merchantReferenceId, 'merchantReferenceId'),
|
|
118
|
+
operationId: options.operationId
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
voidTransaction(receiptNumber, options = {}) {
|
|
122
|
+
return this.startVoid(receiptNumber, options).result;
|
|
123
|
+
}
|
|
124
|
+
startVoid(receiptNumber, options = {}) {
|
|
125
|
+
return this.startResult('voidTransaction', {
|
|
126
|
+
receiptNumber: requireText(receiptNumber, 'receiptNumber'),
|
|
127
|
+
originalTerminalId: options.originalTerminalId?.trim() ?? '',
|
|
128
|
+
merchantReferenceId: requireReference(options.merchantReferenceId, 'merchantReferenceId'),
|
|
129
|
+
operationId: options.operationId
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
refund(amount, options) {
|
|
133
|
+
return this.startRefund(amount, options).result;
|
|
134
|
+
}
|
|
135
|
+
startRefund(amount, options) {
|
|
136
|
+
return this.startResult('refund', {
|
|
137
|
+
amount: requireAmount(amount),
|
|
138
|
+
receiptNumber: requireText(options.receiptNumber, 'receiptNumber'),
|
|
139
|
+
transactionDate: requireDate(options.transactionDate, true),
|
|
140
|
+
originalTerminalId: options.originalTerminalId?.trim() ?? '',
|
|
141
|
+
merchantReferenceId: requireReference(options.merchantReferenceId, 'merchantReferenceId'),
|
|
142
|
+
operationId: options.operationId
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
inquire(options) {
|
|
146
|
+
return this.startInquire(options).result;
|
|
147
|
+
}
|
|
148
|
+
startInquire(options) {
|
|
149
|
+
return this.startOperation('inquire', {
|
|
150
|
+
receiptNumber: requireText(options.receiptNumber, 'receiptNumber'),
|
|
151
|
+
transactionDate: requireDate(options.transactionDate, true),
|
|
152
|
+
originalTerminalId: options.originalTerminalId?.trim() ?? '',
|
|
153
|
+
merchantReferenceId: requireReference(options.merchantReferenceId, 'merchantReferenceId'),
|
|
154
|
+
operationId: options.operationId
|
|
155
|
+
}, normalizeInquiry);
|
|
156
|
+
}
|
|
157
|
+
inquireByReference(originalMerchantReference, options = {}) {
|
|
158
|
+
return this.startInquireByReference(originalMerchantReference, options).result;
|
|
159
|
+
}
|
|
160
|
+
startInquireByReference(originalMerchantReference, options = {}) {
|
|
161
|
+
const originalReference = requireReference(originalMerchantReference, 'originalMerchantReference');
|
|
162
|
+
requireText(originalReference, 'originalMerchantReference');
|
|
163
|
+
return this.startOperation('inquireByReference', {
|
|
164
|
+
originalMerchantReference: originalReference,
|
|
165
|
+
transactionDate: requireDate(options.transactionDate ?? '', false),
|
|
166
|
+
originalTerminalId: options.originalTerminalId?.trim() ?? '',
|
|
167
|
+
merchantReferenceId: requireReference(options.merchantReferenceId, 'merchantReferenceId'),
|
|
168
|
+
operationId: options.operationId
|
|
169
|
+
}, normalizeInquiry);
|
|
170
|
+
}
|
|
171
|
+
receipt(options) {
|
|
172
|
+
return this.startReceipt(options).result;
|
|
173
|
+
}
|
|
174
|
+
startReceipt(options) {
|
|
175
|
+
return this.startOperation('receipt', {
|
|
176
|
+
receiptNumber: requireText(options.receiptNumber, 'receiptNumber'),
|
|
177
|
+
transactionDate: requireDate(options.transactionDate, true),
|
|
178
|
+
originalTerminalId: options.originalTerminalId?.trim() ?? '',
|
|
179
|
+
merchantReferenceId: requireReference(options.merchantReferenceId, 'merchantReferenceId'),
|
|
180
|
+
operationId: options.operationId
|
|
181
|
+
}, normalizeReceipt);
|
|
182
|
+
}
|
|
183
|
+
get isIpTransport() {
|
|
184
|
+
return this.transport === 'ethernet' || this.transport === 'wifi';
|
|
185
|
+
}
|
|
186
|
+
request(operationId, values = {}) {
|
|
187
|
+
return {
|
|
188
|
+
operationId: requireText(operationId, 'operationId'),
|
|
189
|
+
host: this.host,
|
|
190
|
+
serialNumber: this.serialNumber,
|
|
191
|
+
transport: this.transport,
|
|
192
|
+
config: this.config,
|
|
193
|
+
...values
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
startResult(method, values) {
|
|
197
|
+
return this.startOperation(method, values, normalizeResult);
|
|
198
|
+
}
|
|
199
|
+
startOperation(method, values, normalize) {
|
|
200
|
+
const suppliedId = values.operationId;
|
|
201
|
+
const operationId = typeof suppliedId === 'string' && suppliedId.trim() ? suppliedId.trim() : newOperationId();
|
|
202
|
+
const requestValues = {
|
|
203
|
+
...values
|
|
204
|
+
};
|
|
205
|
+
delete requestValues.operationId;
|
|
206
|
+
const request = this.request(operationId, requestValues);
|
|
207
|
+
const result = nativeEcr[method](request).then(normalize);
|
|
208
|
+
return new EcrOperation(operationId, result, id => nativeEcr.cancel(id));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=EcrTerminal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EcrOperation","nativeEcr","normalizeInquiry","normalizeReceipt","normalizeResult","DEFAULT_CONFIG","ecrId","currencyCode","minorUnitDigits","port","connectTimeoutMs","responseTimeoutMs","probeTimeoutMs","secureHashKey","autoInquireOnFailure","merchantId","terminalId","environment","ENVIRONMENTS","operationSequence","newOperationId","Number","MAX_SAFE_INTEGER","Date","now","toString","Math","random","slice","requireText","value","label","trimmed","trim","TypeError","requireAmount","amount","test","requireDate","required","requireReference","length","positiveInteger","isInteger","normalizeConfig","config","normalized","String","toUpperCase","includes","join","EcrTerminal","constructor","options","serialNumber","transport","host","isReachable","isIpTransport","Promise","resolve","request","sale","startSale","result","startResult","merchantReferenceId","operationId","voidTransaction","receiptNumber","startVoid","originalTerminalId","refund","startRefund","transactionDate","inquire","startInquire","startOperation","inquireByReference","originalMerchantReference","startInquireByReference","originalReference","receipt","startReceipt","values","method","normalize","suppliedId","requestValues","then","id","cancel"],"sourceRoot":"../../src","sources":["EcrTerminal.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAmwalEcr.ts"],"mappings":";;AAAA,SACEA,mBAAmB,QAGd,cAAc;AAuBrB,eAAeA,mBAAmB,CAACC,YAAY,CAAO,UAAU,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EcrOperation","EcrTerminal","normalizeInquiry","normalizeReceipt","normalizeResult"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SACEC,gBAAgB,EAChBC,gBAAgB,EAChBC,eAAe,QACV,gBAAa","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const unsupported = () => {
|
|
4
|
+
throw new Error("'react-native-amwal-ecr' is only supported on Android and iOS.");
|
|
5
|
+
};
|
|
6
|
+
export const nativeEcr = {
|
|
7
|
+
isReachable: async () => unsupported(),
|
|
8
|
+
sale: async () => unsupported(),
|
|
9
|
+
voidTransaction: async () => unsupported(),
|
|
10
|
+
refund: async () => unsupported(),
|
|
11
|
+
inquire: async () => unsupported(),
|
|
12
|
+
inquireByReference: async () => unsupported(),
|
|
13
|
+
receipt: async () => unsupported(),
|
|
14
|
+
cancel: async () => unsupported()
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["unsupported","Error","nativeEcr","isReachable","sale","voidTransaction","refund","inquire","inquireByReference","receipt","cancel"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":";;AAEA,MAAMA,WAAW,GAAGA,CAAA,KAAa;EAC/B,MAAM,IAAIC,KAAK,CACb,gEACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,SAAgC,GAAG;EAC9CC,WAAW,EAAE,MAAAA,CAAA,KAAYH,WAAW,CAAC,CAAC;EACtCI,IAAI,EAAE,MAAAA,CAAA,KAAYJ,WAAW,CAAC,CAAC;EAC/BK,eAAe,EAAE,MAAAA,CAAA,KAAYL,WAAW,CAAC,CAAC;EAC1CM,MAAM,EAAE,MAAAA,CAAA,KAAYN,WAAW,CAAC,CAAC;EACjCO,OAAO,EAAE,MAAAA,CAAA,KAAYP,WAAW,CAAC,CAAC;EAClCQ,kBAAkB,EAAE,MAAAA,CAAA,KAAYR,WAAW,CAAC,CAAC;EAC7CS,OAAO,EAAE,MAAAA,CAAA,KAAYT,WAAW,CAAC,CAAC;EAClCU,MAAM,EAAE,MAAAA,CAAA,KAAYV,WAAW,CAAC;AAClC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["default","nativeEcr"],"sourceRoot":"../../src","sources":["native.native.ts"],"mappings":";;AAAA,SAASA,OAAO,IAAIC,SAAS,QAAQ,qBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const knownFailures = new Set(['unreachable', 'timeout', 'malformed', 'connectionLost', 'unauthenticated', 'cancelled', 'unsupported']);
|
|
4
|
+
function record(value, label) {
|
|
5
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
6
|
+
throw new Error(`The native ECR host returned an invalid ${label}.`);
|
|
7
|
+
}
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function failure(value) {
|
|
11
|
+
const raw = record(value, 'failure');
|
|
12
|
+
const rawKind = String(raw.kind ?? 'malformed');
|
|
13
|
+
const kind = knownFailures.has(rawKind) ? rawKind : 'malformed';
|
|
14
|
+
return {
|
|
15
|
+
kind,
|
|
16
|
+
message: String(raw.message ?? 'The native ECR host did not explain the failure.'),
|
|
17
|
+
outcomeIsUnknown: kind !== 'unreachable' && kind !== 'unsupported'
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function normalizeInquiry(value) {
|
|
21
|
+
const raw = record(value, 'inquiry');
|
|
22
|
+
switch (raw.outcome) {
|
|
23
|
+
case 'found':
|
|
24
|
+
case 'notFound':
|
|
25
|
+
return raw;
|
|
26
|
+
case 'failed':
|
|
27
|
+
return {
|
|
28
|
+
...raw,
|
|
29
|
+
failure: failure(raw.failure)
|
|
30
|
+
};
|
|
31
|
+
default:
|
|
32
|
+
throw new Error('The native ECR host returned an unknown inquiry outcome.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function normalizeReceipt(value) {
|
|
36
|
+
const raw = record(value, 'receipt');
|
|
37
|
+
switch (raw.outcome) {
|
|
38
|
+
case 'ready':
|
|
39
|
+
case 'unavailable':
|
|
40
|
+
return raw;
|
|
41
|
+
case 'failed':
|
|
42
|
+
return {
|
|
43
|
+
...raw,
|
|
44
|
+
failure: failure(raw.failure)
|
|
45
|
+
};
|
|
46
|
+
default:
|
|
47
|
+
throw new Error('The native ECR host returned an unknown receipt outcome.');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function normalizeResult(value) {
|
|
51
|
+
const raw = record(value, 'transaction result');
|
|
52
|
+
switch (raw.outcome) {
|
|
53
|
+
case 'approved':
|
|
54
|
+
return {
|
|
55
|
+
...raw,
|
|
56
|
+
outcomeIsUnknown: false,
|
|
57
|
+
nextStep: 'NONE'
|
|
58
|
+
};
|
|
59
|
+
case 'declined':
|
|
60
|
+
{
|
|
61
|
+
const nextStep = raw.nextStep === 'INQUIRE_BY_MERCHANT_REFERENCE' ? 'INQUIRE_BY_MERCHANT_REFERENCE' : 'NONE';
|
|
62
|
+
return {
|
|
63
|
+
...raw,
|
|
64
|
+
nextStep,
|
|
65
|
+
outcomeIsUnknown: raw.responseCode === '91' || nextStep === 'INQUIRE_BY_MERCHANT_REFERENCE'
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
case 'failed':
|
|
69
|
+
{
|
|
70
|
+
const recovered = raw.recovered ? normalizeInquiry(raw.recovered) : undefined;
|
|
71
|
+
const mappedFailure = failure(raw.failure);
|
|
72
|
+
const settled = recovered?.outcome === 'found';
|
|
73
|
+
const outcomeIsUnknown = mappedFailure.outcomeIsUnknown && !settled;
|
|
74
|
+
return {
|
|
75
|
+
...raw,
|
|
76
|
+
failure: mappedFailure,
|
|
77
|
+
recovered,
|
|
78
|
+
settled,
|
|
79
|
+
outcomeIsUnknown,
|
|
80
|
+
nextStep: outcomeIsUnknown ? 'INQUIRE_BY_MERCHANT_REFERENCE' : 'NONE'
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
throw new Error('The native ECR host returned an unknown transaction outcome.');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["knownFailures","Set","record","value","label","Array","isArray","Error","failure","raw","rawKind","String","kind","has","message","outcomeIsUnknown","normalizeInquiry","outcome","normalizeReceipt","normalizeResult","nextStep","responseCode","recovered","undefined","mappedFailure","settled"],"sourceRoot":"../../src","sources":["normalize.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class EcrOperation<T> {
|
|
2
|
+
readonly operationId: string;
|
|
3
|
+
readonly result: Promise<T>;
|
|
4
|
+
private readonly onCancel;
|
|
5
|
+
private cancelRequested;
|
|
6
|
+
constructor(operationId: string, result: Promise<T>, onCancel: (operationId: string) => Promise<boolean>);
|
|
7
|
+
get isCancelRequested(): boolean;
|
|
8
|
+
cancel(): Promise<boolean>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=EcrOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcrOperation.d.ts","sourceRoot":"","sources":["../../../src/EcrOperation.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY,CAAC,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4C;IACrE,OAAO,CAAC,eAAe,CAAS;gBAG9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC;IAOrD,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAI3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { EcrOperation } from './EcrOperation.js';
|
|
2
|
+
import type { EcrConfig, EcrDatedTransactionOptions, EcrInquiry, EcrInquiryByReferenceOptions, EcrOriginalTransactionOptions, EcrReceipt, EcrReferenceOptions, EcrRefundOptions, EcrResult, EcrTerminalOptions, EcrTransport } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* One Amwal POS terminal reachable from the mobile device's local network.
|
|
5
|
+
*
|
|
6
|
+
* Amounts are decimal strings, never JavaScript numbers. A failed exchange is
|
|
7
|
+
* not a decline: when `outcomeIsUnknown` is true, inquire by the same merchant
|
|
8
|
+
* reference before considering another money-moving request.
|
|
9
|
+
*/
|
|
10
|
+
export declare class EcrTerminal {
|
|
11
|
+
readonly host: string;
|
|
12
|
+
readonly serialNumber: string;
|
|
13
|
+
readonly transport: EcrTransport;
|
|
14
|
+
readonly config: Required<EcrConfig>;
|
|
15
|
+
constructor(options: EcrTerminalOptions);
|
|
16
|
+
isReachable(): Promise<boolean>;
|
|
17
|
+
sale(amount: string, options?: EcrReferenceOptions): Promise<EcrResult>;
|
|
18
|
+
startSale(amount: string, options?: EcrReferenceOptions): EcrOperation<EcrResult>;
|
|
19
|
+
voidTransaction(receiptNumber: string, options?: EcrOriginalTransactionOptions): Promise<EcrResult>;
|
|
20
|
+
startVoid(receiptNumber: string, options?: EcrOriginalTransactionOptions): EcrOperation<EcrResult>;
|
|
21
|
+
refund(amount: string, options: EcrRefundOptions): Promise<EcrResult>;
|
|
22
|
+
startRefund(amount: string, options: EcrRefundOptions): EcrOperation<EcrResult>;
|
|
23
|
+
inquire(options: EcrDatedTransactionOptions): Promise<EcrInquiry>;
|
|
24
|
+
startInquire(options: EcrDatedTransactionOptions): EcrOperation<EcrInquiry>;
|
|
25
|
+
inquireByReference(originalMerchantReference: string, options?: EcrInquiryByReferenceOptions): Promise<EcrInquiry>;
|
|
26
|
+
startInquireByReference(originalMerchantReference: string, options?: EcrInquiryByReferenceOptions): EcrOperation<EcrInquiry>;
|
|
27
|
+
receipt(options: EcrDatedTransactionOptions): Promise<EcrReceipt>;
|
|
28
|
+
startReceipt(options: EcrDatedTransactionOptions): EcrOperation<EcrReceipt>;
|
|
29
|
+
private get isIpTransport();
|
|
30
|
+
private request;
|
|
31
|
+
private startResult;
|
|
32
|
+
private startOperation;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=EcrTerminal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcrTerminal.d.ts","sourceRoot":"","sources":["../../../src/EcrTerminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAO9C,OAAO,KAAK,EACV,SAAS,EACT,0BAA0B,EAE1B,UAAU,EACV,4BAA4B,EAC5B,6BAA6B,EAC7B,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,YAAY,EACb,MAAM,YAAS,CAAC;AA4GjB;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAEzB,OAAO,EAAE,kBAAkB;IAcvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3E,SAAS,CACP,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,YAAY,CAAC,SAAS,CAAC;IAW1B,eAAe,CACb,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,SAAS,CAAC;IAIrB,SAAS,CACP,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,6BAAkC,GAC1C,YAAY,CAAC,SAAS,CAAC;IAY1B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIrE,WAAW,CACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GACxB,YAAY,CAAC,SAAS,CAAC;IAc1B,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC;IAIjE,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,YAAY,CAAC,UAAU,CAAC;IAiB3E,kBAAkB,CAChB,yBAAyB,EAAE,MAAM,EACjC,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,UAAU,CAAC;IAKtB,uBAAuB,CACrB,yBAAyB,EAAE,MAAM,EACjC,OAAO,GAAE,4BAAiC,GACzC,YAAY,CAAC,UAAU,CAAC;IAsB3B,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC;IAIjE,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,YAAY,CAAC,UAAU,CAAC;IAiB3E,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;CAsBvB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type CodegenTypes, type TurboModule } from 'react-native';
|
|
2
|
+
export interface Spec extends TurboModule {
|
|
3
|
+
isReachable(request: CodegenTypes.UnsafeObject): Promise<boolean>;
|
|
4
|
+
sale(request: CodegenTypes.UnsafeObject): Promise<CodegenTypes.UnsafeObject>;
|
|
5
|
+
voidTransaction(request: CodegenTypes.UnsafeObject): Promise<CodegenTypes.UnsafeObject>;
|
|
6
|
+
refund(request: CodegenTypes.UnsafeObject): Promise<CodegenTypes.UnsafeObject>;
|
|
7
|
+
inquire(request: CodegenTypes.UnsafeObject): Promise<CodegenTypes.UnsafeObject>;
|
|
8
|
+
inquireByReference(request: CodegenTypes.UnsafeObject): Promise<CodegenTypes.UnsafeObject>;
|
|
9
|
+
receipt(request: CodegenTypes.UnsafeObject): Promise<CodegenTypes.UnsafeObject>;
|
|
10
|
+
cancel(operationId: string): Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: Spec;
|
|
13
|
+
export default _default;
|
|
14
|
+
//# sourceMappingURL=NativeAmwalEcr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeAmwalEcr.d.ts","sourceRoot":"","sources":["../../../src/NativeAmwalEcr.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7E,eAAe,CACb,OAAO,EAAE,YAAY,CAAC,YAAY,GACjC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,CACJ,OAAO,EAAE,YAAY,CAAC,YAAY,GACjC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,CACL,OAAO,EAAE,YAAY,CAAC,YAAY,GACjC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,kBAAkB,CAChB,OAAO,EAAE,YAAY,CAAC,YAAY,GACjC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,CACL,OAAO,EAAE,YAAY,CAAC,YAAY,GACjC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACtC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/C;;AAED,wBAAkE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { EcrOperation } from './EcrOperation.js';
|
|
2
|
+
export { EcrTerminal } from './EcrTerminal.js';
|
|
3
|
+
export { normalizeInquiry, normalizeReceipt, normalizeResult, } from './normalize.js';
|
|
4
|
+
export type { EcrApproved, EcrConfig, EcrDatedTransactionOptions, EcrDeclined, EcrEnvironment, EcrFailed, EcrFailure, EcrFailureKind, EcrInquiry, EcrInquiryByReferenceOptions, EcrInquiryFailed, EcrInquiryFound, EcrInquiryNotFound, EcrNextStep, EcrOriginalTransactionOptions, EcrReceipt, EcrReceiptFailed, EcrReceiptReady, EcrReceiptUnavailable, EcrReferenceOptions, EcrRefundOptions, EcrResult, EcrTerminalOptions, EcrTransaction, EcrTransport, } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAC5C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAa,CAAC;AACrB,YAAY,EACV,WAAW,EACX,SAAS,EACT,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,SAAS,EACT,UAAU,EACV,cAAc,EACd,UAAU,EACV,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,6BAA6B,EAC7B,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,YAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,qBAAkB,CAAC;AAQnD,eAAO,MAAM,SAAS,EAAE,OAAO,cAS9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.native.d.ts","sourceRoot":"","sources":["../../../src/native.native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAkB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { EcrInquiry, EcrReceipt, EcrResult } from './types.js';
|
|
2
|
+
export declare function normalizeInquiry(value: unknown): EcrInquiry;
|
|
3
|
+
export declare function normalizeReceipt(value: unknown): EcrReceipt;
|
|
4
|
+
export declare function normalizeResult(value: unknown): EcrResult;
|
|
5
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../src/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,YAAS,CAAC;AAoCjB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAa3D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAa3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CA2CzD"}
|