quivio-transaction-processor 1.0.1
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/README.md +292 -0
- package/dist/example/EMVPaymentScreen.d.ts +3 -0
- package/dist/example/EMVPaymentScreen.js +197 -0
- package/dist/example/EMVPaymentScreen.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +32 -0
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -0
- package/dist/useEMVPayment.d.ts +2 -0
- package/dist/useEMVPayment.js +296 -0
- package/dist/useEMVPayment.js.map +1 -0
- package/libs/emvCardReaderLib/build.gradle.kts +40 -0
- package/libs/emvCardReaderLib/consumer-rules.pro +0 -0
- package/libs/emvCardReaderLib/proguard-rules.pro +21 -0
- package/libs/emvCardReaderLib/src/androidTest/java/com/rohan/emvcardreaderlib/ExampleInstrumentedTest.kt +24 -0
- package/libs/emvCardReaderLib/src/main/AndroidManifest.xml +4 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/BridgeCommunicator.kt +12 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/CommonTag.kt +3 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/ConfigFactory.kt +9 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/EMVTransactionCommunicator.kt +22 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/POSTransactionExecutor.kt +78 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/PosState.kt +10 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/PosTransResponse.kt +61 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/PosXMLExtractor.kt +138 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/builder/DsiEMVInstanceBuilder.kt +23 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/builder/DsiEMVRequestBuilder.kt +132 -0
- package/libs/emvCardReaderLib/src/main/java/com/rohan/emvcardreaderlib/manager/DsiEMVManager.kt +167 -0
- package/libs/emvCardReaderLib/src/test/java/com/rohan/emvcardreaderlib/ExampleUnitTest.kt +17 -0
- package/libs/emvNative/build.gradle.kts +36 -0
- package/libs/emvNative/src/main/AndroidManifest.xml +4 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/DsiEMVManagerModule.kt +161 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/EMVPaymentModule.kt +93 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/EMVPaymentPackage.kt +21 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/MainActivity.kt +22 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/MainApplication.kt +37 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/PAXFactory.kt +39 -0
- package/libs/emvNative/src/main/java/com/rn_bridge_demo/POSConfigFactory.kt +37 -0
- package/libs/emvlib/build.gradle.kts +25 -0
- package/libs/emvlib/src/main/AndroidManifest.xml +4 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/DsiEMVInstanceBuilder.kt +23 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/DsiEMVManager.kt +174 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/DsiEMVRequestBuilder.kt +154 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/EMVBridge.kt +89 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/EMVBridgeCallback.kt +11 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/POSTransactionExecutor.kt +77 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/PosState.kt +8 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/PosTransResponse.kt +28 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/PosTransactionListener.kt +18 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/PosXMLExtractor.kt +87 -0
- package/libs/emvlib/src/main/java/com/quivioedge/emvlib/pos/models/PosConfig.kt +10 -0
- package/libs/settings.gradle +13 -0
- package/package.json +45 -0
- package/src/example/EMVPaymentScreen.tsx +314 -0
- package/src/index.ts +9 -0
- package/src/types.ts +45 -0
- package/src/useEMVPayment.tsx +306 -0
package/README.md
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# quivio-transaction-processor
|
|
2
|
+
|
|
3
|
+
A React Native hook for EMV payment integration with DataCap. This package provides a simple and efficient way to integrate EMV card reader functionality into your React Native Android applications.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🔌 **Easy Integration**: Simple hook-based API for React Native
|
|
8
|
+
- 💳 **EMV Card Support**: Full EMV card reading and processing
|
|
9
|
+
- 🤖 **Android Only**: Native Android implementation with EMV libraries
|
|
10
|
+
- 🔄 **Real-time Events**: Subscribe to payment events and status updates
|
|
11
|
+
- 📊 **Transaction Logging**: Built-in logging for debugging and monitoring
|
|
12
|
+
- âš¡ **TypeScript Support**: Full TypeScript definitions included
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install quivio-transaction-processor
|
|
18
|
+
# or
|
|
19
|
+
yarn add quivio-transaction-processor
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Android Setup
|
|
23
|
+
|
|
24
|
+
The package includes native Android libraries that need to be properly configured. Follow these steps:
|
|
25
|
+
|
|
26
|
+
#### 1. Update settings.gradle
|
|
27
|
+
|
|
28
|
+
Add the following lines to your `android/settings.gradle`:
|
|
29
|
+
|
|
30
|
+
```gradle
|
|
31
|
+
include ':emvlib'
|
|
32
|
+
project(':emvlib').projectDir = file('../node_modules/quivio-transaction-processor/libs/emvlib')
|
|
33
|
+
include ':emvCardReaderLib'
|
|
34
|
+
project(':emvCardReaderLib').projectDir = file('../node_modules/quivio-transaction-processor/libs/emvCardReaderLib')
|
|
35
|
+
include ':emvNative'
|
|
36
|
+
project(':emvNative').projectDir = file('../node_modules/quivio-transaction-processor/libs/emvNative')
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
#### 2. Update app/build.gradle
|
|
40
|
+
|
|
41
|
+
Add the following dependencies to your `android/app/build.gradle`:
|
|
42
|
+
|
|
43
|
+
```gradle
|
|
44
|
+
dependencies {
|
|
45
|
+
// ... other dependencies
|
|
46
|
+
implementation project(":emvlib")
|
|
47
|
+
implementation project(":emvCardReaderLib")
|
|
48
|
+
implementation project(":emvNative")
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### 3. Update MainApplication.kt
|
|
53
|
+
|
|
54
|
+
Add the import and package registration to your `android/app/src/main/java/com/your-app/MainApplication.kt`:
|
|
55
|
+
|
|
56
|
+
```kotlin
|
|
57
|
+
import com.quivio_transaction_processor.EMVPaymentPackage
|
|
58
|
+
|
|
59
|
+
class MainApplication : Application(), ReactApplication {
|
|
60
|
+
private val mReactNativeHost = object : ReactNativeHost(this) {
|
|
61
|
+
override fun getPackages(): List<ReactPackage> {
|
|
62
|
+
return PackageList(this).packages.apply {
|
|
63
|
+
// Add the EMV payment package
|
|
64
|
+
add(EMVPaymentPackage())
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// ... rest of your MainApplication code
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
#### 4. Permissions
|
|
73
|
+
|
|
74
|
+
Make sure you have the necessary permissions in your `android/app/src/main/AndroidManifest.xml`:
|
|
75
|
+
|
|
76
|
+
```xml
|
|
77
|
+
<uses-permission android:name="android.permission.BLUETOOTH" />
|
|
78
|
+
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
|
79
|
+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Usage
|
|
83
|
+
|
|
84
|
+
### Basic Example
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
import React from 'react';
|
|
88
|
+
import { View, Text, Button } from 'react-native';
|
|
89
|
+
import { useEMVPayment } from 'quivio-transaction-processor';
|
|
90
|
+
|
|
91
|
+
const PaymentScreen = () => {
|
|
92
|
+
const {
|
|
93
|
+
isDeviceConnected,
|
|
94
|
+
loading,
|
|
95
|
+
handleCardPayment,
|
|
96
|
+
setupConfig,
|
|
97
|
+
logs
|
|
98
|
+
} = useEMVPayment();
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<View>
|
|
102
|
+
<Text>Device Status: {isDeviceConnected ? 'Connected' : 'Not Connected'}</Text>
|
|
103
|
+
|
|
104
|
+
<Button
|
|
105
|
+
title="Setup Configuration"
|
|
106
|
+
onPress={setupConfig}
|
|
107
|
+
disabled={loading}
|
|
108
|
+
/>
|
|
109
|
+
|
|
110
|
+
<Button
|
|
111
|
+
title="Process Payment ($10.00)"
|
|
112
|
+
onPress={() => handleCardPayment('10.00')}
|
|
113
|
+
disabled={loading || !isDeviceConnected}
|
|
114
|
+
/>
|
|
115
|
+
|
|
116
|
+
{loading && <Text>Processing...</Text>}
|
|
117
|
+
</View>
|
|
118
|
+
);
|
|
119
|
+
};
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Advanced Example with Event Handling
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
import React, { useEffect } from 'react';
|
|
126
|
+
import { View, Text, Button } from 'react-native';
|
|
127
|
+
import { useEMVPayment } from 'quivio-transaction-processor';
|
|
128
|
+
|
|
129
|
+
const AdvancedPaymentScreen = () => {
|
|
130
|
+
const {
|
|
131
|
+
isDeviceConnected,
|
|
132
|
+
loading,
|
|
133
|
+
handleCardPayment,
|
|
134
|
+
handleInHousePayment,
|
|
135
|
+
setupConfig,
|
|
136
|
+
pingConfig,
|
|
137
|
+
subscribeToEvent,
|
|
138
|
+
unsubscribeFromEvent,
|
|
139
|
+
EVENTS,
|
|
140
|
+
logs
|
|
141
|
+
} = useEMVPayment();
|
|
142
|
+
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
// Subscribe to payment events
|
|
145
|
+
const handleSaleCompleted = (payload) => {
|
|
146
|
+
console.log('Sale completed:', payload);
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
const handleCardRead = (payload) => {
|
|
150
|
+
console.log('Card read successfully:', payload);
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
const handleError = (payload) => {
|
|
154
|
+
console.error('Payment error:', payload);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// Subscribe to events
|
|
158
|
+
subscribeToEvent(EVENTS.onSaleTransactionCompleted, handleSaleCompleted);
|
|
159
|
+
subscribeToEvent(EVENTS.onCardReadSuccessfully, handleCardRead);
|
|
160
|
+
subscribeToEvent(EVENTS.onError, handleError);
|
|
161
|
+
|
|
162
|
+
// Cleanup on unmount
|
|
163
|
+
return () => {
|
|
164
|
+
unsubscribeFromEvent(EVENTS.onSaleTransactionCompleted, handleSaleCompleted);
|
|
165
|
+
unsubscribeFromEvent(EVENTS.onCardReadSuccessfully, handleCardRead);
|
|
166
|
+
unsubscribeFromEvent(EVENTS.onError, handleError);
|
|
167
|
+
};
|
|
168
|
+
}, []);
|
|
169
|
+
|
|
170
|
+
return (
|
|
171
|
+
<View>
|
|
172
|
+
<Text>Device Status: {isDeviceConnected ? 'Connected' : 'Not Connected'}</Text>
|
|
173
|
+
|
|
174
|
+
<Button title="Setup Config" onPress={setupConfig} />
|
|
175
|
+
<Button title="Ping Config" onPress={pingConfig} />
|
|
176
|
+
<Button title="EMV Sale" onPress={() => handleCardPayment('25.00')} />
|
|
177
|
+
<Button title="In-House Payment" onPress={handleInHousePayment} />
|
|
178
|
+
|
|
179
|
+
{loading && <Text>Processing...</Text>}
|
|
180
|
+
</View>
|
|
181
|
+
);
|
|
182
|
+
};
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## API Reference
|
|
186
|
+
|
|
187
|
+
### useEMVPayment Hook
|
|
188
|
+
|
|
189
|
+
The main hook that provides all EMV payment functionality.
|
|
190
|
+
|
|
191
|
+
#### Returns
|
|
192
|
+
|
|
193
|
+
| Property | Type | Description |
|
|
194
|
+
|----------|------|-------------|
|
|
195
|
+
| `logs` | `CallbackLog[]` | Array of transaction logs |
|
|
196
|
+
| `isDeviceConnected` | `boolean` | Device connection status |
|
|
197
|
+
| `loading` | `boolean` | Loading state for operations |
|
|
198
|
+
| `handleCardPayment` | `(amount: string) => void` | Process EMV card payment |
|
|
199
|
+
| `handleInHousePayment` | `() => void` | Process in-house payment |
|
|
200
|
+
| `setupConfig` | `() => void` | Setup device configuration |
|
|
201
|
+
| `pingConfig` | `() => void` | Ping device configuration |
|
|
202
|
+
| `clearTransactionListener` | `() => void` | Clear transaction listeners |
|
|
203
|
+
| `subscribeToEvent` | `(eventName, callback) => void` | Subscribe to events |
|
|
204
|
+
| `unsubscribeFromEvent` | `(eventName, callback) => void` | Unsubscribe from events |
|
|
205
|
+
| `EVENTS` | `Record<EMVEventName, EMVEventName>` | Available event names |
|
|
206
|
+
|
|
207
|
+
### Event Types
|
|
208
|
+
|
|
209
|
+
The following events are available for subscription:
|
|
210
|
+
|
|
211
|
+
- `onError` - Payment or device errors
|
|
212
|
+
- `onCardReadSuccessfully` - Card successfully read
|
|
213
|
+
- `onSaleTransactionCompleted` - Sale transaction completed
|
|
214
|
+
- `onShowMessage` - Display messages from device
|
|
215
|
+
- `onConfigError` - Configuration errors
|
|
216
|
+
- `onConfigPingFailed` - Configuration ping failed
|
|
217
|
+
- `onConfigPingSuccess` - Configuration ping successful
|
|
218
|
+
- `onConfigCompleted` - Configuration setup completed
|
|
219
|
+
|
|
220
|
+
### Types
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
interface CallbackLog {
|
|
224
|
+
type: string;
|
|
225
|
+
payload: any;
|
|
226
|
+
timestamp: number;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
type EMVEventName =
|
|
230
|
+
| 'onError'
|
|
231
|
+
| 'onCardReadSuccessfully'
|
|
232
|
+
| 'onSaleTransactionCompleted'
|
|
233
|
+
| 'onShowMessage'
|
|
234
|
+
| 'onConfigError'
|
|
235
|
+
| 'onConfigPingFailed'
|
|
236
|
+
| 'onConfigPingSuccess'
|
|
237
|
+
| 'onConfigCompleted';
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Device Requirements
|
|
241
|
+
|
|
242
|
+
- Android device with compatible EMV card reader
|
|
243
|
+
- Bluetooth connectivity (for wireless devices)
|
|
244
|
+
- Android 5.0 (API level 21) or higher
|
|
245
|
+
- Proper device drivers and SDK installed
|
|
246
|
+
|
|
247
|
+
## Troubleshooting
|
|
248
|
+
|
|
249
|
+
### Common Issues
|
|
250
|
+
|
|
251
|
+
1. **Device not connecting**
|
|
252
|
+
- Ensure the device is powered on and in pairing mode
|
|
253
|
+
- Check Bluetooth permissions
|
|
254
|
+
- Verify device compatibility
|
|
255
|
+
|
|
256
|
+
2. **Payment processing fails**
|
|
257
|
+
- Check device connection status
|
|
258
|
+
- Verify card is properly inserted/swiped
|
|
259
|
+
- Ensure proper amount format (e.g., "10.00")
|
|
260
|
+
|
|
261
|
+
3. **Events not firing**
|
|
262
|
+
- Make sure you're subscribed to the correct events
|
|
263
|
+
- Check that the device is properly configured
|
|
264
|
+
|
|
265
|
+
### Debug Mode
|
|
266
|
+
|
|
267
|
+
The hook provides detailed logging through the `logs` array. You can display these logs to debug issues:
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
{logs.map((log, index) => (
|
|
271
|
+
<Text key={index}>
|
|
272
|
+
{log.type}: {JSON.stringify(log.payload)}
|
|
273
|
+
</Text>
|
|
274
|
+
))}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
## Contributing
|
|
278
|
+
|
|
279
|
+
1. Fork the repository
|
|
280
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
281
|
+
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
|
282
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
283
|
+
5. Open a Pull Request
|
|
284
|
+
|
|
285
|
+
## License
|
|
286
|
+
|
|
287
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
288
|
+
|
|
289
|
+
## Support
|
|
290
|
+
|
|
291
|
+
For support and questions, please open an issue on the GitHub repository or contact the maintainers.
|
|
292
|
+
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = __importDefault(require("react"));
|
|
7
|
+
var react_native_1 = require("react-native");
|
|
8
|
+
var useEMVPayment_1 = require("../useEMVPayment");
|
|
9
|
+
var TickIcon = function () { return (react_1.default.createElement(react_native_1.Text, { style: { color: 'green', fontSize: 18, marginRight: 6 } }, "\u2714\uFE0F")); };
|
|
10
|
+
var CrossIcon = function () { return (react_1.default.createElement(react_native_1.Text, { style: { color: 'red', fontSize: 18, marginRight: 6 } }, "\u274C")); };
|
|
11
|
+
var EMVPaymentScreenExample = function () {
|
|
12
|
+
// EMV Configuration - Replace with your actual values
|
|
13
|
+
var emvConfig = {
|
|
14
|
+
merchantID: "YOUR_MERCHANT_ID",
|
|
15
|
+
onlineMerchantID: "YOUR_ONLINE_MERCHANT_ID",
|
|
16
|
+
isSandBox: true,
|
|
17
|
+
secureDeviceName: "YOUR_DEVICE_NAME",
|
|
18
|
+
operatorID: "YOUR_OPERATOR_ID" // Employee ID
|
|
19
|
+
};
|
|
20
|
+
var _a = (0, useEMVPayment_1.useEMVPayment)(emvConfig), logs = _a.logs, isDeviceConnected = _a.isDeviceConnected, loading = _a.loading, isInitialized = _a.isInitialized, handleCardPayment = _a.handleCardPayment, handleInHousePayment = _a.handleInHousePayment, runRecurringTransaction = _a.runRecurringTransaction, setupConfig = _a.setupConfig, clearAllTransactions = _a.clearAllTransactions, cancelOperation = _a.cancelOperation;
|
|
21
|
+
return (react_1.default.createElement(react_native_1.View, { style: styles.container },
|
|
22
|
+
react_1.default.createElement(react_native_1.View, { style: styles.statusRow },
|
|
23
|
+
isInitialized ? react_1.default.createElement(TickIcon, null) : react_1.default.createElement(CrossIcon, null),
|
|
24
|
+
react_1.default.createElement(react_native_1.Text, { style: [styles.statusLabel, { color: isInitialized ? 'green' : 'red' }] }, isInitialized ? 'Initialized' : 'Not Initialized')),
|
|
25
|
+
react_1.default.createElement(react_native_1.View, { style: styles.statusRow },
|
|
26
|
+
isDeviceConnected ? react_1.default.createElement(TickIcon, null) : react_1.default.createElement(CrossIcon, null),
|
|
27
|
+
react_1.default.createElement(react_native_1.Text, { style: [styles.statusLabel, { color: isDeviceConnected ? 'green' : 'red' }] }, isDeviceConnected ? 'Connected' : 'Not Connected')),
|
|
28
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.title }, "EMV Payment Demo"),
|
|
29
|
+
react_1.default.createElement(react_native_1.View, { style: styles.buttonRow },
|
|
30
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, !isDeviceConnected ? styles.ctaButtonEnabled : styles.ctaButtonDisabled], onPress: setupConfig, disabled: isDeviceConnected || loading },
|
|
31
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, isDeviceConnected ? 'Configuration Ready' : 'Setup Configuration')),
|
|
32
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, (loading || !isDeviceConnected) ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: function () { return handleCardPayment('1.50'); }, disabled: loading || !isDeviceConnected },
|
|
33
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "Pay via Credit Card")),
|
|
34
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, (loading || !isDeviceConnected) ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: handleInHousePayment, disabled: loading || !isDeviceConnected },
|
|
35
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "Pay via In-house"))),
|
|
36
|
+
react_1.default.createElement(react_native_1.View, { style: styles.buttonRow },
|
|
37
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, (loading || !isDeviceConnected) ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: function () { return runRecurringTransaction('2.00'); }, disabled: loading || !isDeviceConnected },
|
|
38
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "Recurring Transaction")),
|
|
39
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, loading ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: clearAllTransactions, disabled: loading },
|
|
40
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "Clear All"))),
|
|
41
|
+
react_1.default.createElement(react_native_1.View, { style: styles.buttonRow },
|
|
42
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, (loading || !isDeviceConnected) ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: function () { }, disabled: loading || !isDeviceConnected },
|
|
43
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "Pre Auth")),
|
|
44
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, (loading || !isDeviceConnected) ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: function () { }, disabled: loading || !isDeviceConnected },
|
|
45
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "$0 Auth")),
|
|
46
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.ctaButton, (loading || !isDeviceConnected) ? styles.ctaButtonDisabled : styles.ctaButtonEnabled], onPress: function () { }, disabled: loading || !isDeviceConnected },
|
|
47
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.ctaButtonText }, "Refund"))),
|
|
48
|
+
react_1.default.createElement(react_native_1.Modal, { visible: loading, transparent: true, animationType: "fade", onRequestClose: cancelOperation },
|
|
49
|
+
react_1.default.createElement(react_native_1.View, { style: styles.modalOverlay },
|
|
50
|
+
react_1.default.createElement(react_native_1.View, { style: styles.modalContent },
|
|
51
|
+
react_1.default.createElement(react_native_1.ActivityIndicator, { size: "large", color: "#007AFF" }),
|
|
52
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.modalText }, "Processing..."),
|
|
53
|
+
react_1.default.createElement(react_native_1.TouchableOpacity, { style: styles.cancelButton, onPress: cancelOperation },
|
|
54
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.cancelButtonText }, "Cancel"))))),
|
|
55
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.logTitle }, "Event Log"),
|
|
56
|
+
react_1.default.createElement(react_native_1.ScrollView, { style: styles.logArea, contentContainerStyle: styles.logContent }, logs.length === 0 ? (react_1.default.createElement(react_native_1.Text, { style: styles.logEmpty }, "No events yet.")) : (logs.map(function (log, idx) { return (react_1.default.createElement(react_native_1.View, { key: log.timestamp + idx, style: styles.logItem },
|
|
57
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.logType }, log.type),
|
|
58
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.logPayload }, typeof log.payload === 'object'
|
|
59
|
+
? JSON.stringify(log.payload, null, 2)
|
|
60
|
+
: String(log.payload)),
|
|
61
|
+
react_1.default.createElement(react_native_1.Text, { style: styles.logTime }, new Date(log.timestamp).toLocaleTimeString()))); })))));
|
|
62
|
+
};
|
|
63
|
+
var styles = react_native_1.StyleSheet.create({
|
|
64
|
+
container: {
|
|
65
|
+
flex: 1,
|
|
66
|
+
padding: 16,
|
|
67
|
+
backgroundColor: '#FAFAFA',
|
|
68
|
+
},
|
|
69
|
+
statusRow: {
|
|
70
|
+
flexDirection: 'row',
|
|
71
|
+
alignItems: 'center',
|
|
72
|
+
marginBottom: 10,
|
|
73
|
+
marginTop: 10,
|
|
74
|
+
alignSelf: 'center',
|
|
75
|
+
},
|
|
76
|
+
statusLabel: {
|
|
77
|
+
fontSize: 18,
|
|
78
|
+
fontWeight: 'bold',
|
|
79
|
+
},
|
|
80
|
+
modalOverlay: {
|
|
81
|
+
flex: 1,
|
|
82
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
|
83
|
+
justifyContent: 'center',
|
|
84
|
+
alignItems: 'center',
|
|
85
|
+
},
|
|
86
|
+
modalContent: {
|
|
87
|
+
backgroundColor: 'white',
|
|
88
|
+
borderRadius: 12,
|
|
89
|
+
padding: 24,
|
|
90
|
+
alignItems: 'center',
|
|
91
|
+
minWidth: 200,
|
|
92
|
+
shadowColor: '#000',
|
|
93
|
+
shadowOffset: {
|
|
94
|
+
width: 0,
|
|
95
|
+
height: 2,
|
|
96
|
+
},
|
|
97
|
+
shadowOpacity: 0.25,
|
|
98
|
+
shadowRadius: 4,
|
|
99
|
+
elevation: 5,
|
|
100
|
+
},
|
|
101
|
+
modalText: {
|
|
102
|
+
fontSize: 16,
|
|
103
|
+
fontWeight: '600',
|
|
104
|
+
color: '#333',
|
|
105
|
+
marginTop: 16,
|
|
106
|
+
marginBottom: 20,
|
|
107
|
+
},
|
|
108
|
+
cancelButton: {
|
|
109
|
+
backgroundColor: '#FF3B30',
|
|
110
|
+
paddingVertical: 10,
|
|
111
|
+
paddingHorizontal: 20,
|
|
112
|
+
borderRadius: 8,
|
|
113
|
+
minWidth: 100,
|
|
114
|
+
alignItems: 'center',
|
|
115
|
+
},
|
|
116
|
+
cancelButtonText: {
|
|
117
|
+
color: 'white',
|
|
118
|
+
fontWeight: 'bold',
|
|
119
|
+
fontSize: 14,
|
|
120
|
+
},
|
|
121
|
+
title: {
|
|
122
|
+
fontSize: 22,
|
|
123
|
+
fontWeight: 'bold',
|
|
124
|
+
marginBottom: 18,
|
|
125
|
+
textAlign: 'center',
|
|
126
|
+
},
|
|
127
|
+
buttonRow: {
|
|
128
|
+
flexDirection: 'row',
|
|
129
|
+
justifyContent: 'space-between',
|
|
130
|
+
marginBottom: 18,
|
|
131
|
+
alignItems: 'center',
|
|
132
|
+
},
|
|
133
|
+
ctaButton: {
|
|
134
|
+
paddingVertical: 10,
|
|
135
|
+
paddingHorizontal: 16,
|
|
136
|
+
borderRadius: 8,
|
|
137
|
+
marginRight: 8,
|
|
138
|
+
minWidth: 120,
|
|
139
|
+
alignItems: 'center',
|
|
140
|
+
},
|
|
141
|
+
ctaButtonEnabled: {
|
|
142
|
+
backgroundColor: '#007AFF',
|
|
143
|
+
},
|
|
144
|
+
ctaButtonDisabled: {
|
|
145
|
+
backgroundColor: '#CCC',
|
|
146
|
+
},
|
|
147
|
+
ctaButtonText: {
|
|
148
|
+
color: '#FFF',
|
|
149
|
+
fontWeight: 'bold',
|
|
150
|
+
fontSize: 14,
|
|
151
|
+
},
|
|
152
|
+
logTitle: {
|
|
153
|
+
fontSize: 16,
|
|
154
|
+
fontWeight: '600',
|
|
155
|
+
marginBottom: 8,
|
|
156
|
+
marginTop: 8,
|
|
157
|
+
},
|
|
158
|
+
logArea: {
|
|
159
|
+
flex: 1,
|
|
160
|
+
backgroundColor: '#FFF',
|
|
161
|
+
borderRadius: 8,
|
|
162
|
+
borderWidth: 1,
|
|
163
|
+
borderColor: '#EEE',
|
|
164
|
+
padding: 8,
|
|
165
|
+
},
|
|
166
|
+
logContent: {
|
|
167
|
+
paddingBottom: 16,
|
|
168
|
+
},
|
|
169
|
+
logEmpty: {
|
|
170
|
+
color: '#AAA',
|
|
171
|
+
textAlign: 'center',
|
|
172
|
+
marginTop: 24,
|
|
173
|
+
},
|
|
174
|
+
logItem: {
|
|
175
|
+
marginBottom: 12,
|
|
176
|
+
paddingBottom: 8,
|
|
177
|
+
borderBottomWidth: 1,
|
|
178
|
+
borderBottomColor: '#F0F0F0',
|
|
179
|
+
},
|
|
180
|
+
logType: {
|
|
181
|
+
fontWeight: 'bold',
|
|
182
|
+
color: '#333',
|
|
183
|
+
},
|
|
184
|
+
logPayload: {
|
|
185
|
+
color: '#444',
|
|
186
|
+
marginTop: 2,
|
|
187
|
+
fontSize: 13,
|
|
188
|
+
},
|
|
189
|
+
logTime: {
|
|
190
|
+
color: '#888',
|
|
191
|
+
fontSize: 11,
|
|
192
|
+
marginTop: 2,
|
|
193
|
+
textAlign: 'right',
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
exports.default = EMVPaymentScreenExample;
|
|
197
|
+
//# sourceMappingURL=EMVPaymentScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EMVPaymentScreen.js","sourceRoot":"","sources":["../../src/example/EMVPaymentScreen.tsx"],"names":[],"mappings":";;;;;AACA,gDAA0B;AAC1B,6CASsB;AACtB,kDAAiD;AAGjD,IAAM,QAAQ,GAAG,cAAM,OAAA,CACrB,8BAAC,mBAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,mBAAW,CACzE,EAFsB,CAEtB,CAAC;AACF,IAAM,SAAS,GAAG,cAAM,OAAA,CACtB,8BAAC,mBAAI,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,aAAU,CACtE,EAFuB,CAEvB,CAAC;AAEF,IAAM,uBAAuB,GAAa;IACxC,sDAAsD;IACtD,IAAM,SAAS,GAAc;QAC3B,UAAU,EAAE,kBAAkB;QAC9B,gBAAgB,EAAE,yBAAyB;QAC3C,SAAS,EAAE,IAAI;QACf,gBAAgB,EAAE,kBAAkB;QACpC,UAAU,EAAE,kBAAkB,CAAC,cAAc;KAC9C,CAAC;IAEI,IAAA,KAWF,IAAA,6BAAa,EAAC,SAAS,CAAC,EAV1B,IAAI,UAAA,EACJ,iBAAiB,uBAAA,EACjB,OAAO,aAAA,EACP,aAAa,mBAAA,EACb,iBAAiB,uBAAA,EACjB,oBAAoB,0BAAA,EACpB,uBAAuB,6BAAA,EACvB,WAAW,iBAAA,EACX,oBAAoB,0BAAA,EACpB,eAAe,qBACW,CAAC;IAE7B,OAAO,CACL,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;QAC3B,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;YAC1B,aAAa,CAAC,CAAC,CAAC,8BAAC,QAAQ,OAAG,CAAC,CAAC,CAAC,8BAAC,SAAS,OAAG;YAC7C,8BAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAC1E,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAC7C,CACF;QAEP,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;YAC1B,iBAAiB,CAAC,CAAC,CAAC,8BAAC,QAAQ,OAAG,CAAC,CAAC,CAAC,8BAAC,SAAS,OAAG;YACjD,8BAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAC9E,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAC7C,CACF;QAEP,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,KAAK,uBAAyB;QAElD,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;YAC3B,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAClG,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,iBAAiB,IAAI,OAAO;gBAEtC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,IAC9B,iBAAiB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,CAC7D,CACU;YAEnB,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAC/G,OAAO,EAAE,cAAM,OAAA,iBAAiB,CAAC,MAAM,CAAC,EAAzB,CAAyB,EACxC,QAAQ,EAAE,OAAO,IAAI,CAAC,iBAAiB;gBAEvC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,0BAA4B,CAC5C;YAEnB,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAC/G,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,OAAO,IAAI,CAAC,iBAAiB;gBAEvC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,uBAAyB,CACzC,CACd;QAEP,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;YAC3B,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAC/G,OAAO,EAAE,cAAM,OAAA,uBAAuB,CAAC,MAAM,CAAC,EAA/B,CAA+B,EAC9C,QAAQ,EAAE,OAAO,IAAI,CAAC,iBAAiB;gBAEvC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,4BAA8B,CAC9C;YAEnB,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EACvF,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,OAAO;gBAEjB,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,gBAAkB,CAClC,CACd;QAEP,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS;YAC3B,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAC/G,OAAO,EAAE,cAAO,CAAC,EACjB,QAAQ,EAAE,OAAO,IAAI,CAAC,iBAAiB;gBAEvC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,eAAiB,CACjC;YAEnB,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAC/G,OAAO,EAAE,cAAO,CAAC,EACjB,QAAQ,EAAE,OAAO,IAAI,CAAC,iBAAiB;gBAEvC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,cAAgB,CAChC;YAEnB,8BAAC,+BAAgB,IACf,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAC/G,OAAO,EAAE,cAAO,CAAC,EACjB,QAAQ,EAAE,OAAO,IAAI,CAAC,iBAAiB;gBAEvC,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,aAAa,aAAe,CAC/B,CACd;QAEP,8BAAC,oBAAK,IACJ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,IAAI,EACjB,aAAa,EAAC,MAAM,EACpB,cAAc,EAAE,eAAe;YAE/B,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY;gBAC9B,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY;oBAC9B,8BAAC,gCAAiB,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG;oBAClD,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,oBAAsB;oBACnD,8BAAC,+BAAgB,IACf,KAAK,EAAE,MAAM,CAAC,YAAY,EAC1B,OAAO,EAAE,eAAe;wBAExB,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,aAAe,CAClC,CACd,CACF,CACD;QAER,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,gBAAkB;QAC9C,8BAAC,yBAAU,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,qBAAqB,EAAE,MAAM,CAAC,UAAU,IACxE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnB,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,qBAAuB,CACpD,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CACrB,8BAAC,mBAAI,IAAC,GAAG,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO;YACnD,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAG,GAAG,CAAC,IAAI,CAAQ;YAC9C,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,IAC3B,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;gBAC9B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAClB;YACP,8BAAC,mBAAI,IAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IACxB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,kBAAkB,EAAE,CACxC,CACF,CACR,EAZsB,CAYtB,CAAC,CACH,CACU,CACR,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,SAAS;KAC3B;IACD,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACnB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,OAAO;QACxB,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,GAAG;QACb,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE;YACZ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV;QACD,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;KACb;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,EAAE;KACjB;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,CAAC;QACf,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,QAAQ;KACrB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,EAAE;KACb;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,QAAQ;KACpB;IACD,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,eAAe;QAC/B,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,QAAQ;KACrB;IACD,SAAS,EAAE;QACT,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,QAAQ;KACrB;IACD,gBAAgB,EAAE;QAChB,eAAe,EAAE,SAAS;KAC3B;IACD,iBAAiB,EAAE;QACjB,eAAe,EAAE,MAAM;KACxB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,EAAE;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;KACb;IACD,OAAO,EAAE;QACP,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,CAAC;KACX;IACD,UAAU,EAAE;QACV,aAAa,EAAE,EAAE;KAClB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd;IACD,OAAO,EAAE;QACP,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,SAAS;KAC7B;IACD,OAAO,EAAE;QACP,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,MAAM;KACd;IACD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,CAAC;QACZ,QAAQ,EAAE,EAAE;KACb;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,OAAO;KACnB;CACF,CAAC,CAAC;AAEH,kBAAe,uBAAuB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { useEMVPayment } from './useEMVPayment';
|
|
2
|
+
import EMVPaymentScreenExample from './example/EMVPaymentScreen';
|
|
3
|
+
export type { EMVEventName, CallbackLog, EMVPaymentHook } from './types';
|
|
4
|
+
export { EMVPaymentScreenExample, useEMVPayment };
|
|
5
|
+
export default useEMVPayment;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useEMVPayment = exports.EMVPaymentScreenExample = void 0;
|
|
7
|
+
var useEMVPayment_1 = require("./useEMVPayment");
|
|
8
|
+
Object.defineProperty(exports, "useEMVPayment", { enumerable: true, get: function () { return useEMVPayment_1.useEMVPayment; } });
|
|
9
|
+
var EMVPaymentScreen_1 = __importDefault(require("./example/EMVPaymentScreen"));
|
|
10
|
+
exports.EMVPaymentScreenExample = EMVPaymentScreen_1.default;
|
|
11
|
+
exports.default = useEMVPayment_1.useEMVPayment;
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,iDAAgD;AAKd,8FALzB,6BAAa,OAKyB;AAJ/C,gFAAiE;AAIxD,kCAJF,0BAAuB,CAIE;AAEhC,kBAAe,6BAAa,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare const EVENT_NAMES: readonly ["onError", "onCardReadSuccessfully", "onSaleTransactionCompleted", "onShowMessage", "onConfigError", "onConfigPingFailed", "onConfigPingSuccess", "onConfigCompleted"];
|
|
2
|
+
export type EMVEventName = typeof EVENT_NAMES[number];
|
|
3
|
+
export interface CallbackLog {
|
|
4
|
+
type: string;
|
|
5
|
+
payload: any;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
}
|
|
8
|
+
export interface EMVPaymentHook {
|
|
9
|
+
logs: CallbackLog[];
|
|
10
|
+
isDeviceConnected: boolean;
|
|
11
|
+
loading: boolean;
|
|
12
|
+
isInitialized: boolean;
|
|
13
|
+
handleCardPayment: (amount: string) => void;
|
|
14
|
+
handleInHousePayment: () => void;
|
|
15
|
+
runRecurringTransaction: (amount: string) => void;
|
|
16
|
+
setupConfig: () => void;
|
|
17
|
+
pingConfig: () => void;
|
|
18
|
+
clearTransactionListener: () => void;
|
|
19
|
+
clearAllTransactions: () => void;
|
|
20
|
+
cancelOperation: () => void;
|
|
21
|
+
initializeEMV: () => void;
|
|
22
|
+
subscribeToEvent: (eventName: EMVEventName, callback: (payload: any) => void) => void;
|
|
23
|
+
unsubscribeFromEvent: (eventName: EMVEventName, callback: (payload: any) => void) => void;
|
|
24
|
+
EVENTS: Record<EMVEventName, EMVEventName>;
|
|
25
|
+
}
|
|
26
|
+
export interface EMVConfig {
|
|
27
|
+
merchantID: string;
|
|
28
|
+
onlineMerchantID: string;
|
|
29
|
+
isSandBox: boolean;
|
|
30
|
+
secureDeviceName: string;
|
|
31
|
+
operatorID: string;
|
|
32
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EVENT_NAMES = void 0;
|
|
4
|
+
exports.EVENT_NAMES = [
|
|
5
|
+
'onError',
|
|
6
|
+
'onCardReadSuccessfully',
|
|
7
|
+
'onSaleTransactionCompleted',
|
|
8
|
+
'onShowMessage',
|
|
9
|
+
'onConfigError',
|
|
10
|
+
'onConfigPingFailed',
|
|
11
|
+
'onConfigPingSuccess',
|
|
12
|
+
'onConfigCompleted',
|
|
13
|
+
];
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACvB,SAAS;IACT,wBAAwB;IACxB,4BAA4B;IAC5B,eAAe;IACf,eAAe;IACf,oBAAoB;IACpB,qBAAqB;IACrB,mBAAmB;CACb,CAAC"}
|