@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.
Files changed (36) hide show
  1. package/CapacitorCommunityStripeTerminal.podspec +1 -1
  2. package/README.md +767 -28
  3. package/android/build.gradle +1 -1
  4. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +372 -51
  5. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java +61 -5
  6. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt +14 -0
  7. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java +96 -0
  8. package/dist/docs.json +1389 -111
  9. package/dist/esm/definitions.d.ts +263 -11
  10. package/dist/esm/definitions.js +1 -8
  11. package/dist/esm/definitions.js.map +1 -1
  12. package/dist/esm/events.enum.d.ts +15 -1
  13. package/dist/esm/events.enum.js +14 -0
  14. package/dist/esm/events.enum.js.map +1 -1
  15. package/dist/esm/stripe-types/proto.d.ts +501 -0
  16. package/dist/esm/stripe-types/proto.js +2 -0
  17. package/dist/esm/stripe-types/proto.js.map +1 -0
  18. package/dist/esm/stripe.enum.d.ts +154 -0
  19. package/dist/esm/stripe.enum.js +170 -0
  20. package/dist/esm/stripe.enum.js.map +1 -0
  21. package/dist/esm/terminalMappers.d.ts +23 -0
  22. package/dist/esm/terminalMappers.js +119 -0
  23. package/dist/esm/terminalMappers.js.map +1 -0
  24. package/dist/esm/web.d.ts +25 -2
  25. package/dist/esm/web.js +137 -13
  26. package/dist/esm/web.js.map +1 -1
  27. package/dist/plugin.cjs.js +428 -13
  28. package/dist/plugin.cjs.js.map +1 -1
  29. package/dist/plugin.js +429 -15
  30. package/dist/plugin.js.map +1 -1
  31. package/ios/Plugin/StripeTerminal.swift +345 -61
  32. package/ios/Plugin/StripeTerminalPlugin.m +7 -0
  33. package/ios/Plugin/StripeTerminalPlugin.swift +29 -4
  34. package/ios/Plugin/TerminalEvents.swift +14 -0
  35. package/ios/Plugin/TerminalMappers.swift +269 -0
  36. 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.2",
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
  }