@capacitor-community/stripe-terminal 6.0.2 → 6.2.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/CapacitorCommunityStripeTerminal.podspec +1 -1
- package/README.md +767 -28
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +372 -51
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java +61 -5
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt +14 -0
- package/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java +96 -0
- package/dist/docs.json +1389 -111
- package/dist/esm/definitions.d.ts +263 -11
- package/dist/esm/definitions.js +1 -8
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/events.enum.d.ts +15 -1
- package/dist/esm/events.enum.js +14 -0
- package/dist/esm/events.enum.js.map +1 -1
- package/dist/esm/stripe-types/proto.d.ts +501 -0
- package/dist/esm/stripe-types/proto.js +2 -0
- package/dist/esm/stripe-types/proto.js.map +1 -0
- package/dist/esm/stripe.enum.d.ts +154 -0
- package/dist/esm/stripe.enum.js +170 -0
- package/dist/esm/stripe.enum.js.map +1 -0
- package/dist/esm/terminalMappers.d.ts +23 -0
- package/dist/esm/terminalMappers.js +119 -0
- package/dist/esm/terminalMappers.js.map +1 -0
- package/dist/esm/web.d.ts +25 -2
- package/dist/esm/web.js +137 -13
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +428 -13
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +429 -15
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/StripeTerminal.swift +345 -61
- package/ios/Plugin/StripeTerminalPlugin.m +7 -0
- package/ios/Plugin/StripeTerminalPlugin.swift +29 -4
- package/ios/Plugin/TerminalEvents.swift +14 -0
- package/ios/Plugin/TerminalMappers.swift +269 -0
- package/package.json +4 -1
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import StripeTerminal
|
|
2
|
+
import Capacitor
|
|
3
|
+
|
|
4
|
+
class TerminalMappers {
|
|
5
|
+
class func mapFromDeviceType(_ type: DeviceType) -> String {
|
|
6
|
+
switch type {
|
|
7
|
+
case DeviceType.appleBuiltIn: return "appleBuiltIn"
|
|
8
|
+
case DeviceType.chipper1X: return "chipper1X"
|
|
9
|
+
case DeviceType.chipper2X: return "chipper2X"
|
|
10
|
+
case DeviceType.etna: return "etna"
|
|
11
|
+
case DeviceType.stripeM2: return "stripeM2"
|
|
12
|
+
case DeviceType.stripeS700: return "stripeS700"
|
|
13
|
+
case DeviceType.stripeS700DevKit: return "stripeS700Devkit"
|
|
14
|
+
case DeviceType.verifoneP400: return "verifoneP400"
|
|
15
|
+
case DeviceType.wiseCube: return "wiseCube"
|
|
16
|
+
case DeviceType.wisePad3: return "wisePad3"
|
|
17
|
+
case DeviceType.wisePosE: return "wisePosE"
|
|
18
|
+
case DeviceType.wisePosEDevKit: return "wisePosEDevkit"
|
|
19
|
+
default: return "unknown"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
class func mapFromAddress(_ address: Address?) -> JSObject {
|
|
24
|
+
if let address = address {
|
|
25
|
+
let result: JSObject = [
|
|
26
|
+
"city": address.city ?? NSNull(),
|
|
27
|
+
"country": address.country ?? NSNull(),
|
|
28
|
+
"postalCode": address.postalCode ?? NSNull(),
|
|
29
|
+
"line1": address.line1 ?? NSNull(),
|
|
30
|
+
"line2": address.line2 ?? NSNull(),
|
|
31
|
+
"state": address.state ?? NSNull()
|
|
32
|
+
]
|
|
33
|
+
return result
|
|
34
|
+
} else {
|
|
35
|
+
return JSObject()
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
class func mapFromLocation(_ location: Location?) -> JSObject {
|
|
40
|
+
guard let unwrappedLocation = location else {
|
|
41
|
+
return [:]
|
|
42
|
+
}
|
|
43
|
+
let result: JSObject = [
|
|
44
|
+
"displayName": unwrappedLocation.displayName ?? NSNull(),
|
|
45
|
+
"id": unwrappedLocation.stripeId,
|
|
46
|
+
"livemode": unwrappedLocation.livemode,
|
|
47
|
+
"address": mapFromAddress(unwrappedLocation.address)
|
|
48
|
+
]
|
|
49
|
+
return result
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
class func mapFromLocationStatus(_ status: LocationStatus) -> String {
|
|
53
|
+
switch status {
|
|
54
|
+
case LocationStatus.notSet: return "NOT_SET"
|
|
55
|
+
case LocationStatus.set: return "SET"
|
|
56
|
+
case LocationStatus.unknown: return "UNKNOWN"
|
|
57
|
+
default: return "UNKNOWN"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
class func mapFromLocationsList(_ locations: [Location]) -> JSArray {
|
|
62
|
+
var list: JSArray = []
|
|
63
|
+
|
|
64
|
+
for location in locations {
|
|
65
|
+
let result = mapFromLocation(location)
|
|
66
|
+
if result.count != 0 {
|
|
67
|
+
list.append(result)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return list
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
class func mapFromReaderNetworkStatus(_ status: ReaderNetworkStatus) -> String {
|
|
75
|
+
switch status {
|
|
76
|
+
case ReaderNetworkStatus.offline: return "OFFLINE"
|
|
77
|
+
case ReaderNetworkStatus.online: return "ONLINE"
|
|
78
|
+
default: return "UNKNOWN"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
class func convertDateToUnixTimestamp(date: Date?) -> String {
|
|
83
|
+
if let date = date {
|
|
84
|
+
let value = date.timeIntervalSince1970 * 1000.0
|
|
85
|
+
return String(format: "%.0f", value)
|
|
86
|
+
}
|
|
87
|
+
return ""
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
class func mapFromReaderSoftwareUpdate(_ update: ReaderSoftwareUpdate?) -> JSObject {
|
|
91
|
+
guard let unwrappedUpdate = update else {
|
|
92
|
+
return JSObject()
|
|
93
|
+
}
|
|
94
|
+
let result: JSObject = [
|
|
95
|
+
"deviceSoftwareVersion": unwrappedUpdate.deviceSoftwareVersion,
|
|
96
|
+
"estimatedUpdateTime": mapFromUpdateTimeEstimate(unwrappedUpdate.estimatedUpdateTime),
|
|
97
|
+
"requiredAt": convertDateToUnixTimestamp(date: unwrappedUpdate.requiredAt)
|
|
98
|
+
]
|
|
99
|
+
return result
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
class func mapToCartLineItem(_ cartLineItem: NSDictionary) -> CartLineItem? {
|
|
103
|
+
guard let displayName = cartLineItem["displayName"] as? String else { return nil }
|
|
104
|
+
guard let quantity = cartLineItem["quantity"] as? NSNumber else { return nil }
|
|
105
|
+
guard let amount = cartLineItem["amount"] as? NSNumber else { return nil }
|
|
106
|
+
|
|
107
|
+
do {
|
|
108
|
+
let lineItem = try CartLineItemBuilder(displayName: displayName)
|
|
109
|
+
.setQuantity(Int(truncating: quantity))
|
|
110
|
+
.setAmount(Int(truncating: amount))
|
|
111
|
+
.build()
|
|
112
|
+
return lineItem
|
|
113
|
+
} catch {
|
|
114
|
+
print("Error wihle building CartLineItem, error:\(error)")
|
|
115
|
+
return nil
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
class func mapToCartLineItems(_ cartLineItems: JSArray) -> [CartLineItem] {
|
|
120
|
+
var items = [CartLineItem]()
|
|
121
|
+
|
|
122
|
+
cartLineItems.forEach {
|
|
123
|
+
if let item = $0 as? NSDictionary {
|
|
124
|
+
if let lineItem = TerminalMappers.mapToCartLineItem(item) {
|
|
125
|
+
items.append(lineItem)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return items
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
class func mapToSimulateReaderUpdate(_ update: String) -> SimulateReaderUpdate {
|
|
133
|
+
switch update {
|
|
134
|
+
case "UPDATE_AVAILABLE": return SimulateReaderUpdate.available
|
|
135
|
+
case "NONE": return SimulateReaderUpdate.none
|
|
136
|
+
case "RANDOM": return SimulateReaderUpdate.random
|
|
137
|
+
case "REQUIRED": return SimulateReaderUpdate.required
|
|
138
|
+
case "LOW_BATTERY": return SimulateReaderUpdate.lowBattery
|
|
139
|
+
case "LOW_BATTERY_SUCCEED_CONNECT": return SimulateReaderUpdate.lowBatterySucceedConnect
|
|
140
|
+
default: return SimulateReaderUpdate.none
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
class func mapToCardType(type: String) -> UInt {
|
|
145
|
+
switch type {
|
|
146
|
+
case "VISA": return 0
|
|
147
|
+
case "VISA_DEBIT": return 1
|
|
148
|
+
case "MASTERCARD": return 3
|
|
149
|
+
case "MASTERCARD_DEBIT": return 2
|
|
150
|
+
case "MASTERCARD_PREPAID": return 5
|
|
151
|
+
case "AMEX": return 6
|
|
152
|
+
case "AMEX_2": return 7
|
|
153
|
+
case "DISCOVER": return 8
|
|
154
|
+
case "DISCOVER_2": return 9
|
|
155
|
+
case "DINERS": return 10
|
|
156
|
+
case "DINERS_14_DIGITS": return 11
|
|
157
|
+
case "JCB": return 12
|
|
158
|
+
case "UNION_PAY": return 13
|
|
159
|
+
case "INTERAC": return 14
|
|
160
|
+
case "EFTPOS_AU_DEBIT": return 15
|
|
161
|
+
case "VISA_US_COMMON_DEBIT": return 2
|
|
162
|
+
case "CHARGE_DECLINED": return 18
|
|
163
|
+
case "CHARGE_DECLINED_INSUFFICIENT_FUNDS": return 19
|
|
164
|
+
case "CHARGE_DECLINED_LOST_CARD": return 20
|
|
165
|
+
case "CHARGE_DECLINED_STOLEN_CARD": return 21
|
|
166
|
+
case "CHARGE_DECLINED_EXPIRED_CARD": return 22
|
|
167
|
+
case "CHARGE_DECLINED_PROCESSING_ERROR": return 23
|
|
168
|
+
case "EFTPOS_AU_VISA_DEBIT": return 16
|
|
169
|
+
case "EFTPOS_AU_DEBIT_MASTERCARD": return 17
|
|
170
|
+
case "OFFLINE_PIN_CVM": return 27
|
|
171
|
+
case "OFFLINE_PIN_SCA_RETRY": return 28
|
|
172
|
+
case "ONLINE_PIN_CVM": return 25
|
|
173
|
+
case "ONLINE_PIN_SCA_RETRY": return 26
|
|
174
|
+
default:
|
|
175
|
+
return 0
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
class func mapFromReaderDisplayMessage(_ displayMessage: ReaderDisplayMessage) -> String {
|
|
180
|
+
switch displayMessage {
|
|
181
|
+
case ReaderDisplayMessage.insertCard: return "INSERT_CARD"
|
|
182
|
+
case ReaderDisplayMessage.insertOrSwipeCard: return "INSERT_OR_SWIPE_CARD"
|
|
183
|
+
case ReaderDisplayMessage.multipleContactlessCardsDetected: return "MULTIPLE_CONTACTLESS_CARDS_DETECTED"
|
|
184
|
+
case ReaderDisplayMessage.removeCard: return "REMOVE_CARD"
|
|
185
|
+
case ReaderDisplayMessage.retryCard: return "RETRY_CARD"
|
|
186
|
+
case ReaderDisplayMessage.swipeCard: return "SWIPE_CARD"
|
|
187
|
+
case ReaderDisplayMessage.tryAnotherCard: return "TRY_ANOTHER_CARD"
|
|
188
|
+
case ReaderDisplayMessage.tryAnotherReadMethod: return "TRY_ANOTHER_READ_METHOD"
|
|
189
|
+
case ReaderDisplayMessage.cardRemovedTooEarly: return "CARD_REMOVED_TOO_EARLY"
|
|
190
|
+
default: return "unknown"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
class func mapFromReaderInputOptions(_ inputOptions: ReaderInputOptions) -> JSArray {
|
|
195
|
+
let array = inputOptions.rawValue.bitComponents()
|
|
196
|
+
var mappedOptions: JSArray = []
|
|
197
|
+
|
|
198
|
+
array.forEach { item in
|
|
199
|
+
switch item {
|
|
200
|
+
case 0: return
|
|
201
|
+
case 1: return mappedOptions.append("SWIPE")
|
|
202
|
+
case 2: return mappedOptions.append("INSERT")
|
|
203
|
+
case 4: return mappedOptions.append("TAP")
|
|
204
|
+
default: return
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return mappedOptions
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
class func mapFromUpdateTimeEstimate(_ time: UpdateTimeEstimate) -> String {
|
|
212
|
+
switch time {
|
|
213
|
+
case UpdateTimeEstimate.estimate1To2Minutes: return "ONE_TO_TWO_MINUTES"
|
|
214
|
+
case UpdateTimeEstimate.estimate2To5Minutes: return "TWO_TO_FIVE_MINUTES"
|
|
215
|
+
case UpdateTimeEstimate.estimate5To15Minutes: return "FIVE_TO_FIFTEEN_MINUTES"
|
|
216
|
+
case UpdateTimeEstimate.estimateLessThan1Minute: return "LESS_THAN_ONE_MINUTE"
|
|
217
|
+
default: return "unknown"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
class func mapFromBatteryStatus(_ status: BatteryStatus) -> String {
|
|
222
|
+
switch status {
|
|
223
|
+
case BatteryStatus.critical: return "CRITICAL"
|
|
224
|
+
case BatteryStatus.low: return "LOW"
|
|
225
|
+
case BatteryStatus.nominal: return "NOMINAL"
|
|
226
|
+
case BatteryStatus.unknown: return "UNKNOWN"
|
|
227
|
+
default: return "UNKNOWN"
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
class func mapFromReaderEvent(_ readerEvent: ReaderEvent) -> String {
|
|
232
|
+
switch readerEvent {
|
|
233
|
+
case .cardInserted: return "CARD_INSERTED"
|
|
234
|
+
case .cardRemoved: return "CARD_REMOVED"
|
|
235
|
+
@unknown default: return "UNKNOWN"
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
class func mapFromPaymentStatus(_ paymentStatus: PaymentStatus) -> String {
|
|
240
|
+
switch paymentStatus {
|
|
241
|
+
case PaymentStatus.notReady: return "NOT_READY"
|
|
242
|
+
case PaymentStatus.ready: return "READY"
|
|
243
|
+
case PaymentStatus.processing: return "PROCESSING"
|
|
244
|
+
case PaymentStatus.waitingForInput: return "WAITING_FOR_INPUT"
|
|
245
|
+
default: return "UNKNOWN"
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
class func mapFromConnectionStatus(_ connectionStatus: ConnectionStatus) -> String {
|
|
250
|
+
switch connectionStatus {
|
|
251
|
+
case ConnectionStatus.connected: return "CONNECTED"
|
|
252
|
+
case ConnectionStatus.connecting: return "CONNECTING"
|
|
253
|
+
case ConnectionStatus.notConnected: return "NOT_CONNECTED"
|
|
254
|
+
default: return "UNKNOWN"
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
class func mapFromReaderDisconnectReason(_ reason: DisconnectReason) -> String {
|
|
259
|
+
switch reason {
|
|
260
|
+
case DisconnectReason.disconnectRequested: return "DISCONNECT_REQUESTED"
|
|
261
|
+
case DisconnectReason.rebootRequested: return "REBOOT_REQUESTED"
|
|
262
|
+
case DisconnectReason.securityReboot: return "SECURITY_REBOOT"
|
|
263
|
+
case DisconnectReason.criticallyLowBattery: return "CRITICALLY_LOW_BATTERY"
|
|
264
|
+
case DisconnectReason.poweredOff: return "POWERED_OFF"
|
|
265
|
+
case DisconnectReason.bluetoothDisabled: return "BLUETOOTH_DISABLED"
|
|
266
|
+
default: return "UNKNOWN"
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capacitor-community/stripe-terminal",
|
|
3
|
-
"version": "6.0
|
|
3
|
+
"version": "6.2.0",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=18.0.0"
|
|
6
6
|
},
|
|
@@ -77,5 +77,8 @@
|
|
|
77
77
|
"android": {
|
|
78
78
|
"src": "android"
|
|
79
79
|
}
|
|
80
|
+
},
|
|
81
|
+
"dependencies": {
|
|
82
|
+
"@stripe/terminal-js": "^0.13.0"
|
|
80
83
|
}
|
|
81
84
|
}
|