@capacitor-community/stripe-terminal 6.1.0 → 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 (33) hide show
  1. package/README.md +304 -35
  2. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminal.java +267 -49
  3. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/StripeTerminalPlugin.java +30 -0
  4. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/TerminalEvent.kt +3 -0
  5. package/android/src/main/java/com/getcapacitor/community/stripe/terminal/helper/TerminalMappers.java +96 -0
  6. package/dist/docs.json +431 -66
  7. package/dist/esm/definitions.d.ts +94 -5
  8. package/dist/esm/definitions.js.map +1 -1
  9. package/dist/esm/events.enum.d.ts +4 -1
  10. package/dist/esm/events.enum.js +3 -0
  11. package/dist/esm/events.enum.js.map +1 -1
  12. package/dist/esm/stripe-types/proto.d.ts +501 -0
  13. package/dist/esm/stripe-types/proto.js +2 -0
  14. package/dist/esm/stripe-types/proto.js.map +1 -0
  15. package/dist/esm/stripe.enum.d.ts +51 -0
  16. package/dist/esm/stripe.enum.js +55 -0
  17. package/dist/esm/stripe.enum.js.map +1 -1
  18. package/dist/esm/terminalMappers.d.ts +23 -0
  19. package/dist/esm/terminalMappers.js +119 -0
  20. package/dist/esm/terminalMappers.js.map +1 -0
  21. package/dist/esm/web.d.ts +20 -2
  22. package/dist/esm/web.js +134 -13
  23. package/dist/esm/web.js.map +1 -1
  24. package/dist/plugin.cjs.js +308 -13
  25. package/dist/plugin.cjs.js.map +1 -1
  26. package/dist/plugin.js +309 -15
  27. package/dist/plugin.js.map +1 -1
  28. package/ios/Plugin/StripeTerminal.swift +248 -63
  29. package/ios/Plugin/StripeTerminalPlugin.m +6 -0
  30. package/ios/Plugin/StripeTerminalPlugin.swift +25 -4
  31. package/ios/Plugin/TerminalEvents.swift +3 -0
  32. package/ios/Plugin/TerminalMappers.swift +127 -0
  33. package/package.json +4 -1
package/README.md CHANGED
@@ -1,20 +1,21 @@
1
1
  # @capacitor-community/stripe-terminal
2
2
 
3
- Stripe SDK bindings for Capacitor Applications. __This plugin is still in beta.__
3
+ Stripe SDK bindings for Capacitor Applications. __This plugin is still in rc(pre-release) version.__
4
4
  We have confirmed that it works well in the demo project. Please refer to https://github.com/capacitor-community/stripe/tree/main/demo/angular for the implementation.
5
5
 
6
- - [x] Tap To Pay
7
- - [x] Internet
8
- - [x] Bluetooth
9
- - [x] USB
10
-
11
6
  ## Install
12
7
 
13
8
  ```bash
14
- npm install @capacitor-community/stripe-terminal
9
+ npm install @capacitor-community/stripe-terminal @stripe/terminal-js
15
10
  npx cap sync
16
11
  ```
17
12
 
13
+ ### Web
14
+
15
+ No additional steps are necessary.
16
+
17
+ __Note: Stripe Web SDK is beta version. So this plugin's implement is experimental. Please refer to https://github.com/stripe/terminal-js for more information.__
18
+
18
19
  ### iOS
19
20
 
20
21
  - [iOS Configure your app](https://stripe.com/docs/terminal/payments/setup-integration?terminal-sdk-platform=ios#configure)
@@ -57,7 +58,9 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
57
58
 
58
59
  ## Usage
59
60
 
60
- ### use native http client for getting a token
61
+ ### Simple collect payment
62
+
63
+ #### Use plugin client
61
64
 
62
65
  ```typescript
63
66
  (async ()=> {
@@ -81,7 +84,7 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
81
84
  });
82
85
  ```
83
86
 
84
- ### set string token
87
+ #### set string token
85
88
 
86
89
  ```typescript
87
90
  (async ()=> {
@@ -109,6 +112,95 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
109
112
  });
110
113
  ````
111
114
 
115
+ ### Listen device update
116
+
117
+ The device will **if necessary** automatically start updating itself. It is important to handle them as needed so as not to disrupt business operations.
118
+
119
+ ```ts
120
+ (async ()=> {
121
+ StripeTerminal.addListener(TerminalEventsEnum.ReportAvailableUpdate, async ({ update }) => {
122
+ if (window.confirm("Will you update the device?")) {
123
+ await StripeTerminal.installAvailableUpdate();
124
+ }
125
+ });
126
+ StripeTerminal.addListener(TerminalEventsEnum.StartInstallingUpdate, async ({ update }) => {
127
+ console.log(update);
128
+ if (window.confirm("Will you interrupt the update?")) {
129
+ StripeTerminal.cancelInstallUpdate();
130
+ }
131
+ });
132
+ StripeTerminal.addListener(TerminalEventsEnum.ReaderSoftwareUpdateProgress, async ({ progress }) => {
133
+ // be able to use this value to create a progress bar.
134
+ });
135
+ StripeTerminal.addListener(TerminalEventsEnum.FinishInstallingUpdate, async ({ update }) => {
136
+ console.log(update);
137
+ });
138
+ });
139
+ ```
140
+
141
+ ### Get terminal processing information
142
+
143
+ For devices without leader screen, processing information must be retrieved and displayed on the mobile device. Get it with a listener.
144
+
145
+ ```ts
146
+ /**
147
+ * Listen battery level. If the battery level is low, you can notify the user to charge the device.
148
+ */
149
+ StripeTerminal.addListener(TerminalEventsEnum.BatteryLevel, async ({ level, charging, status }) => {
150
+ console.log(level, charging, status);
151
+ });
152
+
153
+ /**
154
+ * Listen reader event. You can get the reader's status and display it on the mobile device.
155
+ */
156
+ StripeTerminal.addListener(TerminalEventsEnum.ReaderEvent, async ({ event }) => {
157
+ console.log(event);
158
+ });
159
+
160
+ /**
161
+ * Listen display message. You can get the message to be displayed on the mobile device.
162
+ */
163
+ StripeTerminal.addListener(TerminalEventsEnum.RequestDisplayMessage, async ({ messageType, message }) => {
164
+ console.log(messageType, message);
165
+ });
166
+
167
+ /**
168
+ * Listen reader input. You can get the message what can be used for payment.
169
+ */
170
+ StripeTerminal.addListener(TerminalEventsEnum.RequestReaderInput, async ({ options, message }) => {
171
+ console.log(options, message);
172
+ });
173
+ ```
174
+
175
+ ### More details on the leader screen
176
+
177
+ The contents of the payment can be shown on the display. This requires a leader screen on the device.
178
+ This should be run before `collectPaymentMethod`.
179
+
180
+ ```ts
181
+ await StripeTerminal.setReaderDisplay({
182
+ currency: 'usd',
183
+ tax: 0,
184
+ total: 1000,
185
+ lineItems: [{
186
+ displayName: 'winecode',
187
+ quantity: 2,
188
+ amount: 500
189
+ }] as CartLineItem[],
190
+ })
191
+
192
+ // Of course, erasure is also possible.
193
+ await StripeTerminal.clearReaderDisplay();
194
+ ```
195
+
196
+ ### Simulate reader status changes for testing
197
+
198
+ To implement updates, etc., we are facilitating an API to change the state of the simulator. This should be done before discoverReaders.
199
+
200
+ ```ts
201
+ await StripeTerminal.setSimulatorConfiguration({ update: SimulateReaderUpdate.UpdateAvailable })
202
+ ```
203
+
112
204
  ## API
113
205
 
114
206
  <docgen-index>
@@ -124,6 +216,12 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
124
216
  * [`collectPaymentMethod(...)`](#collectpaymentmethod)
125
217
  * [`cancelCollectPaymentMethod()`](#cancelcollectpaymentmethod)
126
218
  * [`confirmPaymentIntent()`](#confirmpaymentintent)
219
+ * [`installAvailableUpdate()`](#installavailableupdate)
220
+ * [`cancelInstallUpdate()`](#cancelinstallupdate)
221
+ * [`setReaderDisplay(...)`](#setreaderdisplay)
222
+ * [`clearReaderDisplay()`](#clearreaderdisplay)
223
+ * [`rebootReader()`](#rebootreader)
224
+ * [`cancelReaderReconnection()`](#cancelreaderreconnection)
127
225
  * [`addListener(TerminalEventsEnum.Loaded, ...)`](#addlistenerterminaleventsenumloaded)
128
226
  * [`addListener(TerminalEventsEnum.RequestedConnectionToken, ...)`](#addlistenerterminaleventsenumrequestedconnectiontoken)
129
227
  * [`addListener(TerminalEventsEnum.DiscoveredReaders, ...)`](#addlistenerterminaleventsenumdiscoveredreaders)
@@ -144,6 +242,9 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
144
242
  * [`addListener(TerminalEventsEnum.RequestDisplayMessage, ...)`](#addlistenerterminaleventsenumrequestdisplaymessage)
145
243
  * [`addListener(TerminalEventsEnum.RequestReaderInput, ...)`](#addlistenerterminaleventsenumrequestreaderinput)
146
244
  * [`addListener(TerminalEventsEnum.PaymentStatusChange, ...)`](#addlistenerterminaleventsenumpaymentstatuschange)
245
+ * [`addListener(TerminalEventsEnum.ReaderReconnectStarted, ...)`](#addlistenerterminaleventsenumreaderreconnectstarted)
246
+ * [`addListener(TerminalEventsEnum.ReaderReconnectSucceeded, ...)`](#addlistenerterminaleventsenumreaderreconnectsucceeded)
247
+ * [`addListener(TerminalEventsEnum.ReaderReconnectFailed, ...)`](#addlistenerterminaleventsenumreaderreconnectfailed)
147
248
  * [Interfaces](#interfaces)
148
249
  * [Type Aliases](#type-aliases)
149
250
  * [Enums](#enums)
@@ -212,12 +313,12 @@ setSimulatorConfiguration(options: { update?: SimulateReaderUpdate; simulatedCar
212
313
  ### connectReader(...)
213
314
 
214
315
  ```typescript
215
- connectReader(options: { reader: ReaderInterface; }) => Promise<void>
316
+ connectReader(options: { reader: ReaderInterface; autoReconnectOnUnexpectedDisconnect?: boolean; merchantDisplayName?: string; onBehalfOf?: string; }) => Promise<void>
216
317
  ```
217
318
 
218
- | Param | Type |
219
- | ------------- | ------------------------------------------------------------------------ |
220
- | **`options`** | <code>{ reader: <a href="#readerinterface">ReaderInterface</a>; }</code> |
319
+ | Param | Type |
320
+ | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
321
+ | **`options`** | <code>{ reader: <a href="#readerinterface">ReaderInterface</a>; autoReconnectOnUnexpectedDisconnect?: boolean; merchantDisplayName?: string; onBehalfOf?: string; }</code> |
221
322
 
222
323
  --------------------
223
324
 
@@ -282,6 +383,64 @@ confirmPaymentIntent() => Promise<void>
282
383
  --------------------
283
384
 
284
385
 
386
+ ### installAvailableUpdate()
387
+
388
+ ```typescript
389
+ installAvailableUpdate() => Promise<void>
390
+ ```
391
+
392
+ --------------------
393
+
394
+
395
+ ### cancelInstallUpdate()
396
+
397
+ ```typescript
398
+ cancelInstallUpdate() => Promise<void>
399
+ ```
400
+
401
+ --------------------
402
+
403
+
404
+ ### setReaderDisplay(...)
405
+
406
+ ```typescript
407
+ setReaderDisplay(options: Cart) => Promise<void>
408
+ ```
409
+
410
+ | Param | Type |
411
+ | ------------- | ------------------------------------- |
412
+ | **`options`** | <code><a href="#cart">Cart</a></code> |
413
+
414
+ --------------------
415
+
416
+
417
+ ### clearReaderDisplay()
418
+
419
+ ```typescript
420
+ clearReaderDisplay() => Promise<void>
421
+ ```
422
+
423
+ --------------------
424
+
425
+
426
+ ### rebootReader()
427
+
428
+ ```typescript
429
+ rebootReader() => Promise<void>
430
+ ```
431
+
432
+ --------------------
433
+
434
+
435
+ ### cancelReaderReconnection()
436
+
437
+ ```typescript
438
+ cancelReaderReconnection() => Promise<void>
439
+ ```
440
+
441
+ --------------------
442
+
443
+
285
444
  ### addListener(TerminalEventsEnum.Loaded, ...)
286
445
 
287
446
  ```typescript
@@ -700,6 +859,54 @@ addListener(eventName: TerminalEventsEnum.PaymentStatusChange, listenerFunc: ({
700
859
  --------------------
701
860
 
702
861
 
862
+ ### addListener(TerminalEventsEnum.ReaderReconnectStarted, ...)
863
+
864
+ ```typescript
865
+ addListener(eventName: TerminalEventsEnum.ReaderReconnectStarted, listenerFunc: ({ reader, reason, }: { reader: ReaderInterface; reason: string; }) => void) => Promise<PluginListenerHandle>
866
+ ```
867
+
868
+ | Param | Type |
869
+ | ------------------ | -------------------------------------------------------------------------------------------------------------------------- |
870
+ | **`eventName`** | <code><a href="#terminaleventsenum">TerminalEventsEnum.ReaderReconnectStarted</a></code> |
871
+ | **`listenerFunc`** | <code>({ reader, reason, }: { reader: <a href="#readerinterface">ReaderInterface</a>; reason: string; }) =&gt; void</code> |
872
+
873
+ **Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt;</code>
874
+
875
+ --------------------
876
+
877
+
878
+ ### addListener(TerminalEventsEnum.ReaderReconnectSucceeded, ...)
879
+
880
+ ```typescript
881
+ addListener(eventName: TerminalEventsEnum.ReaderReconnectSucceeded, listenerFunc: ({ reader }: { reader: ReaderInterface; }) => void) => Promise<PluginListenerHandle>
882
+ ```
883
+
884
+ | Param | Type |
885
+ | ------------------ | ------------------------------------------------------------------------------------------------- |
886
+ | **`eventName`** | <code><a href="#terminaleventsenum">TerminalEventsEnum.ReaderReconnectSucceeded</a></code> |
887
+ | **`listenerFunc`** | <code>({ reader }: { reader: <a href="#readerinterface">ReaderInterface</a>; }) =&gt; void</code> |
888
+
889
+ **Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt;</code>
890
+
891
+ --------------------
892
+
893
+
894
+ ### addListener(TerminalEventsEnum.ReaderReconnectFailed, ...)
895
+
896
+ ```typescript
897
+ addListener(eventName: TerminalEventsEnum.ReaderReconnectFailed, listenerFunc: ({ reader }: { reader: ReaderInterface; }) => void) => Promise<PluginListenerHandle>
898
+ ```
899
+
900
+ | Param | Type |
901
+ | ------------------ | ------------------------------------------------------------------------------------------------- |
902
+ | **`eventName`** | <code><a href="#terminaleventsenum">TerminalEventsEnum.ReaderReconnectFailed</a></code> |
903
+ | **`listenerFunc`** | <code>({ reader }: { reader: <a href="#readerinterface">ReaderInterface</a>; }) =&gt; void</code> |
904
+
905
+ **Returns:** <code>Promise&lt;<a href="#pluginlistenerhandle">PluginListenerHandle</a>&gt;</code>
906
+
907
+ --------------------
908
+
909
+
703
910
  ### Interfaces
704
911
 
705
912
 
@@ -715,17 +922,96 @@ addListener(eventName: TerminalEventsEnum.PaymentStatusChange, listenerFunc: ({
715
922
 
716
923
  #### ReaderInterface
717
924
 
718
- <code>{ index: number; serialNumber: string; }</code>
925
+ <code>{ /** * The unique serial number is primary identifier inner plugin. */ serialNumber: string; label: string; batteryLevel: number; batteryStatus: <a href="#batterystatus">BatteryStatus</a>; simulated: boolean; id: number; availableUpdate: <a href="#readersoftwareupdateinterface">ReaderSoftwareUpdateInterface</a>; locationId: string; ipAddress: string; status: <a href="#networkstatus">NetworkStatus</a>; location: <a href="#locationinterface">LocationInterface</a>; locationStatus: <a href="#locationstatus">LocationStatus</a>; deviceType: <a href="#devicetype">DeviceType</a>; deviceSoftwareVersion: string | null; /** * iOS Only properties. These properties are not available on Android. */ isCharging: number; /** * Android Only properties. These properties are not available on iOS. */ baseUrl: string; bootloaderVersion: string; configVersion: string; emvKeyProfileId: string; firmwareVersion: string; hardwareVersion: string; macKeyProfileId: string; pinKeyProfileId: string; trackKeyProfileId: string; settingsVersion: string; pinKeysetId: string; /** * @deprecated This property has been deprecated and should use the `serialNumber` property. */ index?: number; }</code>
719
926
 
720
927
 
721
928
  #### ReaderSoftwareUpdateInterface
722
929
 
723
- <code>{ version: string; settingsVersion: string; requiredAt: number; timeEstimate: <a href="#updatetimeestimate">UpdateTimeEstimate</a>; }</code>
930
+ <code>{ deviceSoftwareVersion: string; estimatedUpdateTime: <a href="#updatetimeestimate">UpdateTimeEstimate</a>; requiredAt: number; }</code>
931
+
932
+
933
+ #### LocationInterface
934
+
935
+ <code>{ id: string; displayName: string; address: { city: string; country: string; postalCode: string; line1: string; line2: string; state: string; }; ipAddress: string; }</code>
936
+
937
+
938
+ #### DeviceType
939
+
940
+ <code>Stripe.Terminal.Reader.<a href="#devicetype">DeviceType</a></code>
941
+
942
+
943
+ #### Cart
944
+
945
+ <code>{ currency: string; tax: number; total: number; lineItems: CartLineItem[]; }</code>
946
+
947
+
948
+ #### CartLineItem
949
+
950
+ <code>{ displayName: string; quantity: number; amount: number; }</code>
724
951
 
725
952
 
726
953
  ### Enums
727
954
 
728
955
 
956
+ #### BatteryStatus
957
+
958
+ | Members | Value |
959
+ | -------------- | ----------------------- |
960
+ | **`Unknown`** | <code>'UNKNOWN'</code> |
961
+ | **`Critical`** | <code>'CRITICAL'</code> |
962
+ | **`Low`** | <code>'LOW'</code> |
963
+ | **`Nominal`** | <code>'NOMINAL'</code> |
964
+
965
+
966
+ #### UpdateTimeEstimate
967
+
968
+ | Members | Value |
969
+ | -------------------------- | -------------------------------------- |
970
+ | **`LessThanOneMinute`** | <code>'LESS_THAN_ONE_MINUTE'</code> |
971
+ | **`OneToTwoMinutes`** | <code>'ONE_TO_TWO_MINUTES'</code> |
972
+ | **`TwoToFiveMinutes`** | <code>'TWO_TO_FIVE_MINUTES'</code> |
973
+ | **`FiveToFifteenMinutes`** | <code>'FIVE_TO_FIFTEEN_MINUTES'</code> |
974
+
975
+
976
+ #### NetworkStatus
977
+
978
+ | Members | Value |
979
+ | ------------- | ---------------------- |
980
+ | **`Unknown`** | <code>'UNKNOWN'</code> |
981
+ | **`Online`** | <code>'ONLINE'</code> |
982
+ | **`Offline`** | <code>'OFFLINE'</code> |
983
+
984
+
985
+ #### LocationStatus
986
+
987
+ | Members | Value |
988
+ | ------------- | ---------------------- |
989
+ | **`NotSet`** | <code>'NOT_SET'</code> |
990
+ | **`Set`** | <code>'SET'</code> |
991
+ | **`Unknown`** | <code>'UNKNOWN'</code> |
992
+
993
+
994
+ #### DeviceType
995
+
996
+ | Members | Value |
997
+ | ---------------------- | ------------------------------- |
998
+ | **`cotsDevice`** | <code>'cotsDevice'</code> |
999
+ | **`wisePad3s`** | <code>'wisePad3s'</code> |
1000
+ | **`appleBuiltIn`** | <code>'appleBuiltIn'</code> |
1001
+ | **`chipper1X`** | <code>'chipper1X'</code> |
1002
+ | **`chipper2X`** | <code>'chipper2X'</code> |
1003
+ | **`etna`** | <code>'etna'</code> |
1004
+ | **`stripeM2`** | <code>'stripeM2'</code> |
1005
+ | **`stripeS700`** | <code>'stripeS700'</code> |
1006
+ | **`stripeS700DevKit`** | <code>'stripeS700Devkit'</code> |
1007
+ | **`verifoneP400`** | <code>'verifoneP400'</code> |
1008
+ | **`wiseCube`** | <code>'wiseCube'</code> |
1009
+ | **`wisePad3`** | <code>'wisePad3'</code> |
1010
+ | **`wisePosE`** | <code>'wisePosE'</code> |
1011
+ | **`wisePosEDevKit`** | <code>'wisePosEDevkit'</code> |
1012
+ | **`unknown`** | <code>'unknown'</code> |
1013
+
1014
+
729
1015
  #### TerminalConnectTypes
730
1016
 
731
1017
  | Members | Value |
@@ -808,6 +1094,9 @@ addListener(eventName: TerminalEventsEnum.PaymentStatusChange, listenerFunc: ({
808
1094
  | **`RequestDisplayMessage`** | <code>'terminalRequestDisplayMessage'</code> |
809
1095
  | **`RequestReaderInput`** | <code>'terminalRequestReaderInput'</code> |
810
1096
  | **`PaymentStatusChange`** | <code>'terminalPaymentStatusChange'</code> |
1097
+ | **`ReaderReconnectStarted`** | <code>'terminalReaderReconnectStarted'</code> |
1098
+ | **`ReaderReconnectSucceeded`** | <code>'terminalReaderReconnectSucceeded'</code> |
1099
+ | **`ReaderReconnectFailed`** | <code>'terminalReaderReconnectFailed'</code> |
811
1100
 
812
1101
 
813
1102
  #### DisconnectReason
@@ -833,26 +1122,6 @@ addListener(eventName: TerminalEventsEnum.PaymentStatusChange, listenerFunc: ({
833
1122
  | **`Connected`** | <code>'CONNECTED'</code> |
834
1123
 
835
1124
 
836
- #### UpdateTimeEstimate
837
-
838
- | Members | Value |
839
- | -------------------------- | -------------------------------------- |
840
- | **`LessThanOneMinute`** | <code>'LESS_THAN_ONE_MINUTE'</code> |
841
- | **`OneToTwoMinutes`** | <code>'ONE_TO_TWO_MINUTES'</code> |
842
- | **`TwoToFiveMinutes`** | <code>'TWO_TO_FIVE_MINUTES'</code> |
843
- | **`FiveToFifteenMinutes`** | <code>'FIVE_TO_FIFTEEN_MINUTES'</code> |
844
-
845
-
846
- #### BatteryStatus
847
-
848
- | Members | Value |
849
- | -------------- | ----------------------- |
850
- | **`Unknown`** | <code>'UNKNOWN'</code> |
851
- | **`Critical`** | <code>'CRITICAL'</code> |
852
- | **`Low`** | <code>'LOW'</code> |
853
- | **`Nominal`** | <code>'NOMINAL'</code> |
854
-
855
-
856
1125
  #### ReaderEvent
857
1126
 
858
1127
  | Members | Value |