@capacitor-community/stripe-terminal 5.4.4 → 5.4.5

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 CHANGED
@@ -56,6 +56,8 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
56
56
 
57
57
  ## Usage
58
58
 
59
+ ### use native http client for getting a token
60
+
59
61
  ```typescript
60
62
  (async ()=> {
61
63
  /**
@@ -73,12 +75,36 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
73
75
  });
74
76
  ```
75
77
 
78
+ ### set string token
79
+
80
+ ```typescript
81
+ (async ()=> {
82
+ // run before StripeTerminal.initialize
83
+ StripeTerminal.addListener(TerminalEventsEnum.RequestedConnectionToken, async () => {
84
+ const { token } = (await fetch("https://example.com/token")).json();
85
+ StripeTerminal.setConnectionToken({ token });
86
+ });
87
+ });
88
+ (async ()=> {
89
+ await StripeTerminal.initialize({ isTest: true })
90
+ const { readers } = await StripeTerminal.discoverReaders({
91
+ type: TerminalConnectTypes.TapToPay,
92
+ locationId: "**************",
93
+ });
94
+ await StripeTerminal.connectReader({
95
+ reader: readers[0],
96
+ });
97
+ await StripeTerminal.collect({ paymentIntent: "**************" });
98
+ });
99
+ ````
100
+
76
101
  ## API
77
102
 
78
103
  <docgen-index>
79
104
 
80
105
  * [`initialize(...)`](#initialize)
81
106
  * [`discoverReaders(...)`](#discoverreaders)
107
+ * [`setConnectionToken(...)`](#setconnectiontoken)
82
108
  * [`connectReader(...)`](#connectreader)
83
109
  * [`getConnectedReader()`](#getconnectedreader)
84
110
  * [`disconnectReader()`](#disconnectreader)
@@ -86,6 +112,7 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
86
112
  * [`collect(...)`](#collect)
87
113
  * [`cancelCollect()`](#cancelcollect)
88
114
  * [`addListener(TerminalEventsEnum.Loaded, ...)`](#addlistenerterminaleventsenumloaded)
115
+ * [`addListener(TerminalEventsEnum.RequestedConnectionToken, ...)`](#addlistenerterminaleventsenumrequestedconnectiontoken)
89
116
  * [`addListener(TerminalEventsEnum.DiscoveredReaders, ...)`](#addlistenerterminaleventsenumdiscoveredreaders)
90
117
  * [`addListener(TerminalEventsEnum.ConnectedReader, ...)`](#addlistenerterminaleventsenumconnectedreader)
91
118
  * [`addListener(TerminalEventsEnum.Completed, ...)`](#addlistenerterminaleventsenumcompleted)
@@ -103,12 +130,12 @@ And update minSdkVersion to 26 And compileSdkVersion to 34 in your `android/app/
103
130
  ### initialize(...)
104
131
 
105
132
  ```typescript
106
- initialize(options: { tokenProviderEndpoint: string; isTest: boolean; }) => Promise<void>
133
+ initialize(options: { tokenProviderEndpoint?: string; isTest: boolean; }) => Promise<void>
107
134
  ```
108
135
 
109
- | Param | Type |
110
- | ------------- | ---------------------------------------------------------------- |
111
- | **`options`** | <code>{ tokenProviderEndpoint: string; isTest: boolean; }</code> |
136
+ | Param | Type |
137
+ | ------------- | ----------------------------------------------------------------- |
138
+ | **`options`** | <code>{ tokenProviderEndpoint?: string; isTest: boolean; }</code> |
112
139
 
113
140
  --------------------
114
141
 
@@ -128,6 +155,19 @@ discoverReaders(options: { type: TerminalConnectTypes; locationId?: string; }) =
128
155
  --------------------
129
156
 
130
157
 
158
+ ### setConnectionToken(...)
159
+
160
+ ```typescript
161
+ setConnectionToken(options: { token: string; }) => Promise<void>
162
+ ```
163
+
164
+ | Param | Type |
165
+ | ------------- | ------------------------------- |
166
+ | **`options`** | <code>{ token: string; }</code> |
167
+
168
+ --------------------
169
+
170
+
131
171
  ### connectReader(...)
132
172
 
133
173
  ```typescript
@@ -208,6 +248,22 @@ addListener(eventName: TerminalEventsEnum.Loaded, listenerFunc: () => void) => P
208
248
  --------------------
209
249
 
210
250
 
251
+ ### addListener(TerminalEventsEnum.RequestedConnectionToken, ...)
252
+
253
+ ```typescript
254
+ addListener(eventName: TerminalEventsEnum.RequestedConnectionToken, listenerFunc: () => void) => PluginListenerHandle
255
+ ```
256
+
257
+ | Param | Type |
258
+ | ------------------ | ------------------------------------------------------------------------------------------ |
259
+ | **`eventName`** | <code><a href="#terminaleventsenum">TerminalEventsEnum.RequestedConnectionToken</a></code> |
260
+ | **`listenerFunc`** | <code>() =&gt; void</code> |
261
+
262
+ **Returns:** <code><a href="#pluginlistenerhandle">PluginListenerHandle</a></code>
263
+
264
+ --------------------
265
+
266
+
211
267
  ### addListener(TerminalEventsEnum.DiscoveredReaders, ...)
212
268
 
213
269
  ```typescript
@@ -322,15 +378,16 @@ addListener(eventName: TerminalEventsEnum.Failed, listenerFunc: () => void) => P
322
378
 
323
379
  #### TerminalEventsEnum
324
380
 
325
- | Members | Value |
326
- | ----------------------------- | ---------------------------------------------- |
327
- | **`Loaded`** | <code>'terminalLoaded'</code> |
328
- | **`DiscoveredReaders`** | <code>'terminalDiscoveredReaders'</code> |
329
- | **`CancelDiscoveredReaders`** | <code>'terminalCancelDiscoveredReaders'</code> |
330
- | **`ConnectedReader`** | <code>'terminalConnectedReader'</code> |
331
- | **`DisconnectedReader`** | <code>'terminalDisconnectedReader'</code> |
332
- | **`Completed`** | <code>'terminalCompleted'</code> |
333
- | **`Canceled`** | <code>'terminalCanceled'</code> |
334
- | **`Failed`** | <code>'terminalFailed'</code> |
381
+ | Members | Value |
382
+ | ------------------------------ | ----------------------------------------------- |
383
+ | **`Loaded`** | <code>'terminalLoaded'</code> |
384
+ | **`DiscoveredReaders`** | <code>'terminalDiscoveredReaders'</code> |
385
+ | **`CancelDiscoveredReaders`** | <code>'terminalCancelDiscoveredReaders'</code> |
386
+ | **`ConnectedReader`** | <code>'terminalConnectedReader'</code> |
387
+ | **`DisconnectedReader`** | <code>'terminalDisconnectedReader'</code> |
388
+ | **`Completed`** | <code>'terminalCompleted'</code> |
389
+ | **`Canceled`** | <code>'terminalCanceled'</code> |
390
+ | **`Failed`** | <code>'terminalFailed'</code> |
391
+ | **`RequestedConnectionToken`** | <code>'terminalRequestedConnectionToken'</code> |
335
392
 
336
393
  </docgen-api>
@@ -7,12 +7,10 @@ import android.bluetooth.BluetoothAdapter;
7
7
  import android.content.Context;
8
8
  import android.content.pm.PackageManager;
9
9
  import android.util.Log;
10
-
11
10
  import androidx.annotation.NonNull;
12
11
  import androidx.annotation.Nullable;
13
12
  import androidx.core.app.ActivityCompat;
14
13
  import androidx.core.util.Supplier;
15
-
16
14
  import com.getcapacitor.JSArray;
17
15
  import com.getcapacitor.JSObject;
18
16
  import com.getcapacitor.PluginCall;
@@ -42,15 +40,14 @@ import com.stripe.stripeterminal.external.models.Reader;
42
40
  import com.stripe.stripeterminal.external.models.ReaderSoftwareUpdate;
43
41
  import com.stripe.stripeterminal.external.models.TerminalException;
44
42
  import com.stripe.stripeterminal.log.LogLevel;
45
-
46
- import org.jetbrains.annotations.NotNull;
47
-
48
43
  import java.util.ArrayList;
49
44
  import java.util.List;
50
45
  import java.util.Objects;
46
+ import org.jetbrains.annotations.NotNull;
51
47
 
52
48
  public class StripeTerminal extends Executor {
53
49
 
50
+ private TokenProvider tokenProvider;
54
51
  private Cancelable discoveryCancelable;
55
52
  private Cancelable collectCancelable;
56
53
  private List<Reader> readers;
@@ -61,10 +58,10 @@ public class StripeTerminal extends Executor {
61
58
  private TerminalConnectTypes terminalConnectType;
62
59
 
63
60
  public StripeTerminal(
64
- Supplier<Context> contextSupplier,
65
- Supplier<Activity> activitySupplier,
66
- BiConsumer<String, JSObject> notifyListenersFunction,
67
- String pluginLogTag
61
+ Supplier<Context> contextSupplier,
62
+ Supplier<Activity> activitySupplier,
63
+ BiConsumer<String, JSObject> notifyListenersFunction,
64
+ String pluginLogTag
68
65
  ) {
69
66
  super(contextSupplier, activitySupplier, notifyListenersFunction, pluginLogTag, "StripeTerminalExecutor");
70
67
  this.contextSupplier = contextSupplier;
@@ -77,21 +74,21 @@ public class StripeTerminal extends Executor {
77
74
  BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
78
75
  if (!bluetooth.isEnabled()) {
79
76
  if (
80
- ActivityCompat.checkSelfPermission(this.contextSupplier.get(), Manifest.permission.BLUETOOTH_CONNECT) ==
81
- PackageManager.PERMISSION_GRANTED
77
+ ActivityCompat.checkSelfPermission(this.contextSupplier.get(), Manifest.permission.BLUETOOTH_CONNECT) ==
78
+ PackageManager.PERMISSION_GRANTED
82
79
  ) {
83
80
  bluetooth.enable();
84
81
  }
85
82
  }
86
83
 
87
84
  this.activitySupplier.get()
88
- .runOnUiThread(
89
- () -> {
90
- TerminalApplicationDelegate.onCreate((Application) this.contextSupplier.get().getApplicationContext());
91
- notifyListeners(TerminalEnumEvent.Loaded.getWebEventName(), emptyObject);
92
- call.resolve();
93
- }
94
- );
85
+ .runOnUiThread(
86
+ () -> {
87
+ TerminalApplicationDelegate.onCreate((Application) this.contextSupplier.get().getApplicationContext());
88
+ notifyListeners(TerminalEnumEvent.Loaded.getWebEventName(), emptyObject);
89
+ call.resolve();
90
+ }
91
+ );
95
92
  TerminalListener listener = new TerminalListener() {
96
93
  @Override
97
94
  public void onUnexpectedReaderDisconnect(@NonNull Reader reader) {
@@ -100,24 +97,32 @@ public class StripeTerminal extends Executor {
100
97
 
101
98
  @Override
102
99
  public void onConnectionStatusChange(@NonNull ConnectionStatus status) {
103
- // TODO: Listenerを追加
100
+ // TODO: Listenerを追加
104
101
  }
105
102
 
106
103
  @Override
107
104
  public void onPaymentStatusChange(@NonNull PaymentStatus status) {
108
- // TODO: Listenerを追加
105
+ // TODO: Listenerを追加
109
106
  }
110
107
  };
111
108
  LogLevel logLevel = LogLevel.VERBOSE;
112
- TokenProvider tokenProvider = new TokenProvider(this.contextSupplier, call.getString("tokenProviderEndpoint"));
109
+ this.tokenProvider =
110
+ new TokenProvider(this.contextSupplier, call.getString("tokenProviderEndpoint", ""), this.notifyListenersFunction);
113
111
  if (!Terminal.isInitialized()) {
114
- Terminal.initTerminal(this.contextSupplier.get().getApplicationContext(), logLevel, tokenProvider, listener);
112
+ Terminal.initTerminal(this.contextSupplier.get().getApplicationContext(), logLevel, this.tokenProvider, listener);
115
113
  }
116
114
  Terminal.getInstance();
117
115
  }
118
116
 
119
- public void onDiscoverReaders(final PluginCall call) {
120
- if (ActivityCompat.checkSelfPermission(this.contextSupplier.get(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
117
+ public void setConnectionToken(PluginCall call) {
118
+ this.tokenProvider.setConnectionToken(call);
119
+ }
120
+
121
+ public void onDiscoverReaders(final PluginCall call) {
122
+ if (
123
+ ActivityCompat.checkSelfPermission(this.contextSupplier.get(), Manifest.permission.ACCESS_FINE_LOCATION) !=
124
+ PackageManager.PERMISSION_GRANTED
125
+ ) {
121
126
  Log.d(this.logTag, "android.permission.ACCESS_FINE_LOCATION permission is not granted.");
122
127
  call.reject("android.permission.ACCESS_FINE_LOCATION permission is not granted.");
123
128
  return;
@@ -134,7 +139,10 @@ public class StripeTerminal extends Executor {
134
139
  } else if (Objects.equals(call.getString("type"), TerminalConnectTypes.Usb.getWebEventName())) {
135
140
  config = new DiscoveryConfiguration.UsbDiscoveryConfiguration(0, this.isTest);
136
141
  this.terminalConnectType = TerminalConnectTypes.Usb;
137
- } else if (Objects.equals(call.getString("type"), TerminalConnectTypes.Bluetooth.getWebEventName()) || Objects.equals(call.getString("type"), TerminalConnectTypes.Simulated.getWebEventName())) {
142
+ } else if (
143
+ Objects.equals(call.getString("type"), TerminalConnectTypes.Bluetooth.getWebEventName()) ||
144
+ Objects.equals(call.getString("type"), TerminalConnectTypes.Simulated.getWebEventName())
145
+ ) {
138
146
  config = new DiscoveryConfiguration.BluetoothDiscoveryConfiguration(0, this.isTest);
139
147
  this.terminalConnectType = TerminalConnectTypes.Bluetooth;
140
148
  } else {
@@ -156,21 +164,23 @@ public class StripeTerminal extends Executor {
156
164
  call.resolve(new JSObject().put("readers", readersJSObject));
157
165
  };
158
166
  discoveryCancelable =
159
- Terminal.getInstance()
160
- .discoverReaders(
161
- config,
162
- discoveryListener,
163
- new Callback() {
164
- @Override
165
- public void onSuccess() {
166
- Log.d(logTag, "Finished discovering readers");
167
- }
168
- @Override
169
- public void onFailure(@NonNull TerminalException ex) {
170
- Log.d(logTag, ex.getLocalizedMessage());
171
- }
172
- }
173
- );
167
+ Terminal
168
+ .getInstance()
169
+ .discoverReaders(
170
+ config,
171
+ discoveryListener,
172
+ new Callback() {
173
+ @Override
174
+ public void onSuccess() {
175
+ Log.d(logTag, "Finished discovering readers");
176
+ }
177
+
178
+ @Override
179
+ public void onFailure(@NonNull TerminalException ex) {
180
+ Log.d(logTag, ex.getLocalizedMessage());
181
+ }
182
+ }
183
+ );
174
184
  }
175
185
 
176
186
  public void connectReader(final PluginCall call) {
@@ -228,54 +238,30 @@ public class StripeTerminal extends Executor {
228
238
  return;
229
239
  }
230
240
 
231
- LocalMobileConnectionConfiguration config = new LocalMobileConnectionConfiguration(
232
- this.locationId
233
- );
234
- Terminal
235
- .getInstance()
236
- .connectLocalMobileReader(
237
- this.readers.get(reader.getInteger("index")),
238
- config,
239
- this.readerCallback(call)
240
- );
241
+ LocalMobileConnectionConfiguration config = new LocalMobileConnectionConfiguration(this.locationId);
242
+ Terminal.getInstance().connectLocalMobileReader(this.readers.get(reader.getInteger("index")), config, this.readerCallback(call));
241
243
  }
242
244
 
243
245
  private void connectInternetReader(final PluginCall call) {
244
246
  JSObject reader = call.getObject("reader");
245
247
  InternetConnectionConfiguration config = new InternetConnectionConfiguration();
246
- Terminal
247
- .getInstance()
248
- .connectInternetReader(
249
- this.readers.get(reader.getInteger("index")),
250
- config,
251
- this.readerCallback(call)
252
- );
248
+ Terminal.getInstance().connectInternetReader(this.readers.get(reader.getInteger("index")), config, this.readerCallback(call));
253
249
  }
254
250
 
255
251
  private void connectUsbReader(final PluginCall call) {
256
252
  JSObject reader = call.getObject("reader");
257
253
  UsbConnectionConfiguration config = new UsbConnectionConfiguration(this.locationId);
258
254
  Terminal
259
- .getInstance()
260
- .connectUsbReader(
261
- this.readers.get(reader.getInteger("index")),
262
- config,
263
- this.readerListener(),
264
- this.readerCallback(call)
265
- );
255
+ .getInstance()
256
+ .connectUsbReader(this.readers.get(reader.getInteger("index")), config, this.readerListener(), this.readerCallback(call));
266
257
  }
267
258
 
268
259
  private void connectBluetoothReader(final PluginCall call) {
269
260
  JSObject reader = call.getObject("reader");
270
261
  BluetoothConnectionConfiguration config = new BluetoothConnectionConfiguration(this.locationId);
271
262
  Terminal
272
- .getInstance()
273
- .connectBluetoothReader(
274
- this.readers.get(reader.getInteger("index")),
275
- config,
276
- this.readerListener(),
277
- this.readerCallback(call)
278
- );
263
+ .getInstance()
264
+ .connectBluetoothReader(this.readers.get(reader.getInteger("index")), config, this.readerListener(), this.readerCallback(call));
279
265
  }
280
266
 
281
267
  public void cancelDiscoverReaders(final PluginCall call) {
@@ -334,9 +320,7 @@ public class StripeTerminal extends Executor {
334
320
  private final PaymentIntentCallback createPaymentIntentCallback = new PaymentIntentCallback() {
335
321
  @Override
336
322
  public void onSuccess(@NonNull PaymentIntent paymentIntent) {
337
- CollectConfiguration collectConfig = new CollectConfiguration.Builder()
338
- .updatePaymentIntent(true)
339
- .build();
323
+ CollectConfiguration collectConfig = new CollectConfiguration.Builder().updatePaymentIntent(true).build();
340
324
  collectCancelable = Terminal.getInstance().collectPaymentMethod(paymentIntent, collectPaymentMethodCallback, collectConfig);
341
325
  }
342
326
 
@@ -355,12 +339,11 @@ public class StripeTerminal extends Executor {
355
339
  notifyListeners(TerminalEnumEvent.Completed.getWebEventName(), emptyObject);
356
340
 
357
341
  PaymentMethod pm = paymentIntent.getPaymentMethod();
358
- CardPresentDetails card = pm.getCardPresentDetails() != null
359
- ? pm.getCardPresentDetails()
360
- : pm.getInteracPresentDetails();
342
+ CardPresentDetails card = pm.getCardPresentDetails() != null ? pm.getCardPresentDetails() : pm.getInteracPresentDetails();
361
343
 
362
344
  if (card != null) {
363
- collectCall.resolve(new JSObject()
345
+ collectCall.resolve(
346
+ new JSObject()
364
347
  .put("brand", card.getBrand())
365
348
  .put("cardholderName", card.getCardholderName())
366
349
  .put("country", card.getCountry())
@@ -373,7 +356,6 @@ public class StripeTerminal extends Executor {
373
356
  .put("last4", card.getLast4())
374
357
  .put("networks", card.getNetworks())
375
358
  .put("readMethod", card.getReadMethod())
376
-
377
359
  );
378
360
  } else {
379
361
  collectCall.resolve();
@@ -422,9 +404,7 @@ public class StripeTerminal extends Executor {
422
404
  }
423
405
 
424
406
  @Override
425
- public void onReportLowBatteryWarning() {
426
-
427
- }
407
+ public void onReportLowBatteryWarning() {}
428
408
 
429
409
  @Override
430
410
  public void onReportAvailableUpdate(@NotNull ReaderSoftwareUpdate update) {
@@ -2,9 +2,7 @@ package com.getcapacitor.community.stripe.terminal;
2
2
 
3
3
  import android.Manifest;
4
4
  import android.os.Build;
5
-
6
5
  import androidx.annotation.RequiresApi;
7
-
8
6
  import com.getcapacitor.PermissionState;
9
7
  import com.getcapacitor.Plugin;
10
8
  import com.getcapacitor.PluginCall;
@@ -36,6 +34,11 @@ public class StripeTerminalPlugin extends Plugin {
36
34
  this._initialize(call);
37
35
  }
38
36
 
37
+ @PluginMethod
38
+ public void setConnectionToken(PluginCall call) {
39
+ this.implementation.setConnectionToken(call);
40
+ }
41
+
39
42
  @PermissionCallback
40
43
  private void locationPermsCallback(PluginCall call) throws TerminalException {
41
44
  if (getPermissionState("location") == PermissionState.GRANTED) {
@@ -9,4 +9,5 @@ enum class TerminalEnumEvent(val webEventName: String) {
9
9
  Completed("terminalCompleted"),
10
10
  Canceled("terminalCanceled"),
11
11
  Failed("terminalFailed"),
12
+ RequestedConnectionToken("terminalRequestedConnectionToken"),
12
13
  }
@@ -2,19 +2,20 @@ package com.getcapacitor.community.stripe.terminal;
2
2
 
3
3
  import android.content.Context;
4
4
  import android.util.Log;
5
-
6
5
  import androidx.core.util.Supplier;
7
-
8
6
  import com.android.volley.Request;
9
7
  import com.android.volley.RequestQueue;
10
8
  import com.android.volley.Response;
11
9
  import com.android.volley.VolleyError;
12
10
  import com.android.volley.toolbox.StringRequest;
13
11
  import com.android.volley.toolbox.Volley;
12
+ import com.getcapacitor.JSObject;
13
+ import com.getcapacitor.PluginCall;
14
+ import com.google.android.gms.common.util.BiConsumer;
14
15
  import com.stripe.stripeterminal.external.callable.ConnectionTokenCallback;
15
16
  import com.stripe.stripeterminal.external.callable.ConnectionTokenProvider;
16
17
  import com.stripe.stripeterminal.external.models.ConnectionTokenException;
17
-
18
+ import java.util.Objects;
18
19
  import org.json.JSONException;
19
20
  import org.json.JSONObject;
20
21
 
@@ -22,49 +23,82 @@ public class TokenProvider implements ConnectionTokenProvider {
22
23
 
23
24
  protected Supplier<Context> contextSupplier;
24
25
  protected final String tokenProviderEndpoint;
26
+ protected BiConsumer<String, JSObject> notifyListenersFunction;
27
+ ConnectionTokenCallback pendingCallback = null;
25
28
 
26
- public TokenProvider(Supplier<Context> contextSupplier, String tokenProviderEndpoint) {
29
+ public TokenProvider(
30
+ Supplier<Context> contextSupplier,
31
+ String tokenProviderEndpoint,
32
+ BiConsumer<String, JSObject> notifyListenersFunction
33
+ ) {
27
34
  this.contextSupplier = contextSupplier;
28
35
  this.tokenProviderEndpoint = tokenProviderEndpoint;
36
+ this.notifyListenersFunction = notifyListenersFunction;
37
+ }
38
+
39
+ public void setConnectionToken(PluginCall call) {
40
+ String token = call.getString("token", "");
41
+ if (pendingCallback != null) {
42
+ if (Objects.equals(token, "")) {
43
+ pendingCallback.onFailure(new ConnectionTokenException("Missing `token` is empty"));
44
+ call.reject("Missing `token` is empty");
45
+ } else {
46
+ pendingCallback.onSuccess(token);
47
+ call.resolve();
48
+ }
49
+ pendingCallback = null;
50
+ } else {
51
+ call.reject("Stripe Terminal do not pending fetchConnectionToken");
52
+ }
29
53
  }
30
54
 
31
55
  @Override
32
56
  public void fetchConnectionToken(ConnectionTokenCallback callback) {
33
- try {
34
- RequestQueue queue = Volley.newRequestQueue(this.contextSupplier.get());
35
- StringRequest postRequest = new StringRequest(
36
- Request.Method.POST,
37
- this.tokenProviderEndpoint,
38
- new Response.Listener<String>() {
39
- @Override
40
- public void onResponse(String response) {
41
- try {
42
- JSONObject jsonObject = new JSONObject(response);
43
- Log.d("TokenProvider", jsonObject.getString("secret"));
44
- callback.onSuccess(jsonObject.getString("secret"));
45
- } catch (JSONException e) {
57
+ if (Objects.equals(this.tokenProviderEndpoint, "")) {
58
+ pendingCallback = callback;
59
+ this.notifyListeners(TerminalEnumEvent.RequestedConnectionToken.getWebEventName(), new JSObject());
60
+ } else {
61
+ try {
62
+ RequestQueue queue = Volley.newRequestQueue(this.contextSupplier.get());
63
+ StringRequest postRequest = new StringRequest(
64
+ Request.Method.POST,
65
+ this.tokenProviderEndpoint,
66
+ new Response.Listener<String>() {
67
+ @Override
68
+ public void onResponse(String response) {
69
+ try {
70
+ JSONObject jsonObject = new JSONObject(response);
71
+ Log.d("TokenProvider", jsonObject.getString("secret"));
72
+ callback.onSuccess(jsonObject.getString("secret"));
73
+ } catch (JSONException e) {
74
+ callback.onFailure(new ConnectionTokenException(Objects.requireNonNull(e.getLocalizedMessage())));
75
+ throw new RuntimeException(e);
76
+ }
77
+ }
78
+ },
79
+ new Response.ErrorListener() {
80
+ @Override
81
+ public void onErrorResponse(VolleyError e) {
46
82
  throw new RuntimeException(e);
47
83
  }
48
84
  }
49
- },
50
- new Response.ErrorListener() {
51
- @Override
52
- public void onErrorResponse(VolleyError e) {
53
- throw new RuntimeException(e);
54
- }
55
- }
56
- ) {
57
- // @Override
58
- // protected Map<String,String> getParams(){
59
- // Map<String,String> params = new HashMap<>();
60
- // params.put("word","test");
61
- // return params;
62
- // }
63
- };
85
+ ) {
86
+ // @Override
87
+ // protected Map<String,String> getParams(){
88
+ // Map<String,String> params = new HashMap<>();
89
+ // params.put("word","test");
90
+ // return params;
91
+ // }
92
+ };
64
93
 
65
- queue.add(postRequest);
66
- } catch (Exception e) {
67
- callback.onFailure(new ConnectionTokenException("Failed to fetch connection token", e));
94
+ queue.add(postRequest);
95
+ } catch (Exception e) {
96
+ callback.onFailure(new ConnectionTokenException("Failed to fetch connection token", e));
97
+ }
68
98
  }
69
99
  }
100
+
101
+ protected void notifyListeners(String eventName, JSObject data) {
102
+ notifyListenersFunction.accept(eventName, data);
103
+ }
70
104
  }
@@ -3,9 +3,7 @@ package com.getcapacitor.community.stripe.terminal.helper;
3
3
  import android.content.Context;
4
4
  import android.content.pm.ApplicationInfo;
5
5
  import android.content.pm.PackageManager;
6
-
7
6
  import androidx.core.util.Supplier;
8
-
9
7
  import com.getcapacitor.Logger;
10
8
 
11
9
  public class MetaData {
@@ -2,9 +2,7 @@ package com.getcapacitor.community.stripe.terminal.models;
2
2
 
3
3
  import android.app.Activity;
4
4
  import android.content.Context;
5
-
6
5
  import androidx.core.util.Supplier;
7
-
8
6
  import com.getcapacitor.JSObject;
9
7
  import com.google.android.gms.common.util.BiConsumer;
10
8
 
package/dist/docs.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "methods": [
8
8
  {
9
9
  "name": "initialize",
10
- "signature": "(options: { tokenProviderEndpoint: string; isTest: boolean; }) => Promise<void>",
10
+ "signature": "(options: { tokenProviderEndpoint?: string; isTest: boolean; }) => Promise<void>",
11
11
  "parameters": [
12
12
  {
13
13
  "name": "options",
14
14
  "docs": "",
15
- "type": "{ tokenProviderEndpoint: string; isTest: boolean; }"
15
+ "type": "{ tokenProviderEndpoint?: string | undefined; isTest: boolean; }"
16
16
  }
17
17
  ],
18
18
  "returns": "Promise<void>",
@@ -40,6 +40,22 @@
40
40
  ],
41
41
  "slug": "discoverreaders"
42
42
  },
43
+ {
44
+ "name": "setConnectionToken",
45
+ "signature": "(options: { token: string; }) => Promise<void>",
46
+ "parameters": [
47
+ {
48
+ "name": "options",
49
+ "docs": "",
50
+ "type": "{ token: string; }"
51
+ }
52
+ ],
53
+ "returns": "Promise<void>",
54
+ "tags": [],
55
+ "docs": "",
56
+ "complexTypes": [],
57
+ "slug": "setconnectiontoken"
58
+ },
43
59
  {
44
60
  "name": "connectReader",
45
61
  "signature": "(options: { reader: ReaderInterface; }) => Promise<void>",
@@ -140,6 +156,30 @@
140
156
  ],
141
157
  "slug": "addlistenerterminaleventsenumloaded"
142
158
  },
159
+ {
160
+ "name": "addListener",
161
+ "signature": "(eventName: TerminalEventsEnum.RequestedConnectionToken, listenerFunc: () => void) => PluginListenerHandle",
162
+ "parameters": [
163
+ {
164
+ "name": "eventName",
165
+ "docs": "",
166
+ "type": "TerminalEventsEnum.RequestedConnectionToken"
167
+ },
168
+ {
169
+ "name": "listenerFunc",
170
+ "docs": "",
171
+ "type": "() => void"
172
+ }
173
+ ],
174
+ "returns": "PluginListenerHandle",
175
+ "tags": [],
176
+ "docs": "",
177
+ "complexTypes": [
178
+ "PluginListenerHandle",
179
+ "TerminalEventsEnum"
180
+ ],
181
+ "slug": "addlistenerterminaleventsenumrequestedconnectiontoken"
182
+ },
143
183
  {
144
184
  "name": "addListener",
145
185
  "signature": "(eventName: TerminalEventsEnum.DiscoveredReaders, listenerFunc: () => { reader: ReaderInterface; }) => PluginListenerHandle",
@@ -370,6 +410,12 @@
370
410
  "value": "'terminalFailed'",
371
411
  "tags": [],
372
412
  "docs": ""
413
+ },
414
+ {
415
+ "name": "RequestedConnectionToken",
416
+ "value": "'terminalRequestedConnectionToken'",
417
+ "tags": [],
418
+ "docs": ""
373
419
  }
374
420
  ]
375
421
  }
@@ -14,7 +14,7 @@ export declare type ReaderInterface = {
14
14
  export * from './events.enum';
15
15
  export interface StripeTerminalPlugin {
16
16
  initialize(options: {
17
- tokenProviderEndpoint: string;
17
+ tokenProviderEndpoint?: string;
18
18
  isTest: boolean;
19
19
  }): Promise<void>;
20
20
  discoverReaders(options: {
@@ -23,6 +23,9 @@ export interface StripeTerminalPlugin {
23
23
  }): Promise<{
24
24
  readers: ReaderInterface[];
25
25
  }>;
26
+ setConnectionToken(options: {
27
+ token: string;
28
+ }): Promise<void>;
26
29
  connectReader(options: {
27
30
  reader: ReaderInterface;
28
31
  }): Promise<void>;
@@ -36,6 +39,7 @@ export interface StripeTerminalPlugin {
36
39
  }): Promise<void>;
37
40
  cancelCollect(): Promise<void>;
38
41
  addListener(eventName: TerminalEventsEnum.Loaded, listenerFunc: () => void): PluginListenerHandle;
42
+ addListener(eventName: TerminalEventsEnum.RequestedConnectionToken, listenerFunc: () => void): PluginListenerHandle;
39
43
  addListener(eventName: TerminalEventsEnum.DiscoveredReaders, listenerFunc: () => {
40
44
  reader: ReaderInterface;
41
45
  }): PluginListenerHandle;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,+CAAuB,CAAA;IACvB,6CAAqB,CAAA;IACrB,+CAAuB,CAAA;IACvB,mCAAW,CAAA;IACX,+CAAuB,CAAA;AACzB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAOD,cAAc,eAAe,CAAC","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nimport type { TerminalEventsEnum } from './events.enum';\n\nexport enum TerminalConnectTypes {\n Simulated = 'simulated',\n Internet = 'internet',\n Bluetooth = 'bluetooth',\n Usb = 'usb',\n TapToPay = 'tap-to-pay',\n}\n\nexport type ReaderInterface = {\n index: number;\n serialNumber: string;\n};\n\nexport * from './events.enum';\nexport interface StripeTerminalPlugin {\n initialize(options: {\n tokenProviderEndpoint: string;\n isTest: boolean;\n }): Promise<void>;\n discoverReaders(options: {\n type: TerminalConnectTypes;\n locationId?: string;\n }): Promise<{\n readers: ReaderInterface[];\n }>;\n connectReader(options: { reader: ReaderInterface }): Promise<void>;\n getConnectedReader(): Promise<{ reader: ReaderInterface | null }>;\n disconnectReader(): Promise<void>;\n cancelDiscoverReaders(): Promise<void>;\n collect(options: { paymentIntent: string }): Promise<void>;\n cancelCollect(): Promise<void>;\n addListener(\n eventName: TerminalEventsEnum.Loaded,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.DiscoveredReaders,\n listenerFunc: () => { reader: ReaderInterface },\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.ConnectedReader,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.Completed,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.Canceled,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.Failed,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n}\n"]}
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC9B,+CAAuB,CAAA;IACvB,6CAAqB,CAAA;IACrB,+CAAuB,CAAA;IACvB,mCAAW,CAAA;IACX,+CAAuB,CAAA;AACzB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAOD,cAAc,eAAe,CAAC","sourcesContent":["import type { PluginListenerHandle } from '@capacitor/core';\n\nimport type { TerminalEventsEnum } from './events.enum';\n\nexport enum TerminalConnectTypes {\n Simulated = 'simulated',\n Internet = 'internet',\n Bluetooth = 'bluetooth',\n Usb = 'usb',\n TapToPay = 'tap-to-pay',\n}\n\nexport type ReaderInterface = {\n index: number;\n serialNumber: string;\n};\n\nexport * from './events.enum';\nexport interface StripeTerminalPlugin {\n initialize(options: {\n tokenProviderEndpoint?: string;\n isTest: boolean;\n }): Promise<void>;\n discoverReaders(options: {\n type: TerminalConnectTypes;\n locationId?: string;\n }): Promise<{\n readers: ReaderInterface[];\n }>;\n setConnectionToken(options: { token: string }): Promise<void>;\n connectReader(options: { reader: ReaderInterface }): Promise<void>;\n getConnectedReader(): Promise<{ reader: ReaderInterface | null }>;\n disconnectReader(): Promise<void>;\n cancelDiscoverReaders(): Promise<void>;\n collect(options: { paymentIntent: string }): Promise<void>;\n cancelCollect(): Promise<void>;\n addListener(\n eventName: TerminalEventsEnum.Loaded,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.RequestedConnectionToken,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.DiscoveredReaders,\n listenerFunc: () => { reader: ReaderInterface },\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.ConnectedReader,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.Completed,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.Canceled,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n addListener(\n eventName: TerminalEventsEnum.Failed,\n listenerFunc: () => void,\n ): PluginListenerHandle;\n}\n"]}
@@ -6,6 +6,7 @@ export declare enum TerminalEventsEnum {
6
6
  DisconnectedReader = "terminalDisconnectedReader",
7
7
  Completed = "terminalCompleted",
8
8
  Canceled = "terminalCanceled",
9
- Failed = "terminalFailed"
9
+ Failed = "terminalFailed",
10
+ RequestedConnectionToken = "terminalRequestedConnectionToken"
10
11
  }
11
12
  export declare type TerminalResultInterface = TerminalEventsEnum.Completed | TerminalEventsEnum.Canceled | TerminalEventsEnum.Failed;
@@ -8,5 +8,6 @@ export var TerminalEventsEnum;
8
8
  TerminalEventsEnum["Completed"] = "terminalCompleted";
9
9
  TerminalEventsEnum["Canceled"] = "terminalCanceled";
10
10
  TerminalEventsEnum["Failed"] = "terminalFailed";
11
+ TerminalEventsEnum["RequestedConnectionToken"] = "terminalRequestedConnectionToken";
11
12
  })(TerminalEventsEnum || (TerminalEventsEnum = {}));
12
13
  //# sourceMappingURL=events.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.enum.js","sourceRoot":"","sources":["../../src/events.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBASX;AATD,WAAY,kBAAkB;IAC5B,+CAAyB,CAAA;IACzB,qEAA+C,CAAA;IAC/C,iFAA2D,CAAA;IAC3D,iEAA2C,CAAA;IAC3C,uEAAiD,CAAA;IACjD,qDAA+B,CAAA;IAC/B,mDAA6B,CAAA;IAC7B,+CAAyB,CAAA;AAC3B,CAAC,EATW,kBAAkB,KAAlB,kBAAkB,QAS7B","sourcesContent":["export enum TerminalEventsEnum {\n Loaded = 'terminalLoaded',\n DiscoveredReaders = 'terminalDiscoveredReaders',\n CancelDiscoveredReaders = 'terminalCancelDiscoveredReaders',\n ConnectedReader = 'terminalConnectedReader',\n DisconnectedReader = 'terminalDisconnectedReader',\n Completed = 'terminalCompleted',\n Canceled = 'terminalCanceled',\n Failed = 'terminalFailed',\n}\n\nexport type TerminalResultInterface =\n | TerminalEventsEnum.Completed\n | TerminalEventsEnum.Canceled\n | TerminalEventsEnum.Failed;\n"]}
1
+ {"version":3,"file":"events.enum.js","sourceRoot":"","sources":["../../src/events.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,kBAUX;AAVD,WAAY,kBAAkB;IAC5B,+CAAyB,CAAA;IACzB,qEAA+C,CAAA;IAC/C,iFAA2D,CAAA;IAC3D,iEAA2C,CAAA;IAC3C,uEAAiD,CAAA;IACjD,qDAA+B,CAAA;IAC/B,mDAA6B,CAAA;IAC7B,+CAAyB,CAAA;IACzB,mFAA6D,CAAA;AAC/D,CAAC,EAVW,kBAAkB,KAAlB,kBAAkB,QAU7B","sourcesContent":["export enum TerminalEventsEnum {\n Loaded = 'terminalLoaded',\n DiscoveredReaders = 'terminalDiscoveredReaders',\n CancelDiscoveredReaders = 'terminalCancelDiscoveredReaders',\n ConnectedReader = 'terminalConnectedReader',\n DisconnectedReader = 'terminalDisconnectedReader',\n Completed = 'terminalCompleted',\n Canceled = 'terminalCanceled',\n Failed = 'terminalFailed',\n RequestedConnectionToken = 'terminalRequestedConnectionToken',\n}\n\nexport type TerminalResultInterface =\n | TerminalEventsEnum.Completed\n | TerminalEventsEnum.Canceled\n | TerminalEventsEnum.Failed;\n"]}
package/dist/esm/web.d.ts CHANGED
@@ -12,6 +12,7 @@ export declare class StripeTerminalWeb extends WebPlugin implements StripeTermin
12
12
  readers: ReaderInterface[];
13
13
  }>;
14
14
  cancelDiscoverReaders(): Promise<void>;
15
+ setConnectionToken(): Promise<void>;
15
16
  connectReader(options: {
16
17
  reader: ReaderInterface;
17
18
  }): Promise<void>;
package/dist/esm/web.js CHANGED
@@ -18,6 +18,9 @@ export class StripeTerminalWeb extends WebPlugin {
18
18
  console.log('cancelDiscoverReaders');
19
19
  this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);
20
20
  }
21
+ async setConnectionToken() {
22
+ console.log('setConnectionToken');
23
+ }
21
24
  async connectReader(options) {
22
25
  console.log('connectReader', options);
23
26
  this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,OAAO,iBACX,SAAQ,SAAS;IAGjB,KAAK,CAAC,UAAU,CAAC,OAGhB;QACC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAGrB;QAGC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;YACzD,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAoC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO;YACL,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAkC;QAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;CACF","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n StripeTerminalPlugin,\n TerminalConnectTypes,\n ReaderInterface,\n} from './definitions';\nimport { TerminalEventsEnum } from './events.enum';\n\nexport class StripeTerminalWeb\n extends WebPlugin\n implements StripeTerminalPlugin\n{\n async initialize(options: {\n tokenProviderEndpoint: string;\n isTest: boolean;\n }): Promise<void> {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n\n async discoverReaders(options: {\n type: TerminalConnectTypes;\n locationId?: string;\n }): Promise<{\n readers: ReaderInterface[];\n }> {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n\n async cancelDiscoverReaders(): Promise<void> {\n console.log('cancelDiscoverReaders');\n this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);\n }\n\n async connectReader(options: { reader: ReaderInterface }): Promise<void> {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n\n async getConnectedReader(): Promise<{ reader: ReaderInterface | null }> {\n return {\n reader: null,\n };\n }\n\n async disconnectReader(): Promise<void> {\n console.log('disconnectReader');\n this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null);\n }\n\n async collect(options: { paymentIntent: string }): Promise<void> {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n\n async cancelCollect(): Promise<void> {\n console.log('cancelCollect');\n this.notifyListeners(TerminalEventsEnum.Canceled, null);\n }\n}\n"]}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAO5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,OAAO,iBACX,SAAQ,SAAS;IAGjB,KAAK,CAAC,UAAU,CAAC,OAGhB;QACC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAGrB;QAGC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,iBAAiB,EAAE;YACzD,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAoC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO;YACL,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAkC;QAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;CACF","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type {\n StripeTerminalPlugin,\n TerminalConnectTypes,\n ReaderInterface,\n} from './definitions';\nimport { TerminalEventsEnum } from './events.enum';\n\nexport class StripeTerminalWeb\n extends WebPlugin\n implements StripeTerminalPlugin\n{\n async initialize(options: {\n tokenProviderEndpoint: string;\n isTest: boolean;\n }): Promise<void> {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n\n async discoverReaders(options: {\n type: TerminalConnectTypes;\n locationId?: string;\n }): Promise<{\n readers: ReaderInterface[];\n }> {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n\n async cancelDiscoverReaders(): Promise<void> {\n console.log('cancelDiscoverReaders');\n this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);\n }\n\n async setConnectionToken(): Promise<void> {\n console.log('setConnectionToken');\n }\n\n async connectReader(options: { reader: ReaderInterface }): Promise<void> {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n\n async getConnectedReader(): Promise<{ reader: ReaderInterface | null }> {\n return {\n reader: null,\n };\n }\n\n async disconnectReader(): Promise<void> {\n console.log('disconnectReader');\n this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null);\n }\n\n async collect(options: { paymentIntent: string }): Promise<void> {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n\n async cancelCollect(): Promise<void> {\n console.log('cancelCollect');\n this.notifyListeners(TerminalEventsEnum.Canceled, null);\n }\n}\n"]}
@@ -14,6 +14,7 @@ exports.TerminalEventsEnum = void 0;
14
14
  TerminalEventsEnum["Completed"] = "terminalCompleted";
15
15
  TerminalEventsEnum["Canceled"] = "terminalCanceled";
16
16
  TerminalEventsEnum["Failed"] = "terminalFailed";
17
+ TerminalEventsEnum["RequestedConnectionToken"] = "terminalRequestedConnectionToken";
17
18
  })(exports.TerminalEventsEnum || (exports.TerminalEventsEnum = {}));
18
19
 
19
20
  exports.TerminalConnectTypes = void 0;
@@ -47,6 +48,9 @@ class StripeTerminalWeb extends core.WebPlugin {
47
48
  console.log('cancelDiscoverReaders');
48
49
  this.notifyListeners(exports.TerminalEventsEnum.CancelDiscoveredReaders, null);
49
50
  }
51
+ async setConnectionToken() {
52
+ console.log('setConnectionToken');
53
+ }
50
54
  async connectReader(options) {
51
55
  console.log('connectReader', options);
52
56
  this.notifyListeners(exports.TerminalEventsEnum.ConnectedReader, null);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.cjs.js","sources":["esm/events.enum.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var TerminalEventsEnum;\n(function (TerminalEventsEnum) {\n TerminalEventsEnum[\"Loaded\"] = \"terminalLoaded\";\n TerminalEventsEnum[\"DiscoveredReaders\"] = \"terminalDiscoveredReaders\";\n TerminalEventsEnum[\"CancelDiscoveredReaders\"] = \"terminalCancelDiscoveredReaders\";\n TerminalEventsEnum[\"ConnectedReader\"] = \"terminalConnectedReader\";\n TerminalEventsEnum[\"DisconnectedReader\"] = \"terminalDisconnectedReader\";\n TerminalEventsEnum[\"Completed\"] = \"terminalCompleted\";\n TerminalEventsEnum[\"Canceled\"] = \"terminalCanceled\";\n TerminalEventsEnum[\"Failed\"] = \"terminalFailed\";\n})(TerminalEventsEnum || (TerminalEventsEnum = {}));\n//# sourceMappingURL=events.enum.js.map","export var TerminalConnectTypes;\n(function (TerminalConnectTypes) {\n TerminalConnectTypes[\"Simulated\"] = \"simulated\";\n TerminalConnectTypes[\"Internet\"] = \"internet\";\n TerminalConnectTypes[\"Bluetooth\"] = \"bluetooth\";\n TerminalConnectTypes[\"Usb\"] = \"usb\";\n TerminalConnectTypes[\"TapToPay\"] = \"tap-to-pay\";\n})(TerminalConnectTypes || (TerminalConnectTypes = {}));\nexport * from './events.enum';\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst StripeTerminal = registerPlugin('StripeTerminal', {\n web: () => import('./web').then(m => new m.StripeTerminalWeb()),\n});\nexport * from './definitions';\nexport { StripeTerminal };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { TerminalEventsEnum } from './events.enum';\nexport class StripeTerminalWeb extends WebPlugin {\n async initialize(options) {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n async discoverReaders(options) {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n async cancelDiscoverReaders() {\n console.log('cancelDiscoverReaders');\n this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);\n }\n async connectReader(options) {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n async getConnectedReader() {\n return {\n reader: null,\n };\n }\n async disconnectReader() {\n console.log('disconnectReader');\n this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null);\n }\n async collect(options) {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n async cancelCollect() {\n console.log('cancelCollect');\n this.notifyListeners(TerminalEventsEnum.Canceled, null);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["TerminalEventsEnum","TerminalConnectTypes","registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.cjs.js","sources":["esm/events.enum.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var TerminalEventsEnum;\n(function (TerminalEventsEnum) {\n TerminalEventsEnum[\"Loaded\"] = \"terminalLoaded\";\n TerminalEventsEnum[\"DiscoveredReaders\"] = \"terminalDiscoveredReaders\";\n TerminalEventsEnum[\"CancelDiscoveredReaders\"] = \"terminalCancelDiscoveredReaders\";\n TerminalEventsEnum[\"ConnectedReader\"] = \"terminalConnectedReader\";\n TerminalEventsEnum[\"DisconnectedReader\"] = \"terminalDisconnectedReader\";\n TerminalEventsEnum[\"Completed\"] = \"terminalCompleted\";\n TerminalEventsEnum[\"Canceled\"] = \"terminalCanceled\";\n TerminalEventsEnum[\"Failed\"] = \"terminalFailed\";\n TerminalEventsEnum[\"RequestedConnectionToken\"] = \"terminalRequestedConnectionToken\";\n})(TerminalEventsEnum || (TerminalEventsEnum = {}));\n//# sourceMappingURL=events.enum.js.map","export var TerminalConnectTypes;\n(function (TerminalConnectTypes) {\n TerminalConnectTypes[\"Simulated\"] = \"simulated\";\n TerminalConnectTypes[\"Internet\"] = \"internet\";\n TerminalConnectTypes[\"Bluetooth\"] = \"bluetooth\";\n TerminalConnectTypes[\"Usb\"] = \"usb\";\n TerminalConnectTypes[\"TapToPay\"] = \"tap-to-pay\";\n})(TerminalConnectTypes || (TerminalConnectTypes = {}));\nexport * from './events.enum';\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst StripeTerminal = registerPlugin('StripeTerminal', {\n web: () => import('./web').then(m => new m.StripeTerminalWeb()),\n});\nexport * from './definitions';\nexport { StripeTerminal };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { TerminalEventsEnum } from './events.enum';\nexport class StripeTerminalWeb extends WebPlugin {\n async initialize(options) {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n async discoverReaders(options) {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n async cancelDiscoverReaders() {\n console.log('cancelDiscoverReaders');\n this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);\n }\n async setConnectionToken() {\n console.log('setConnectionToken');\n }\n async connectReader(options) {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n async getConnectedReader() {\n return {\n reader: null,\n };\n }\n async disconnectReader() {\n console.log('disconnectReader');\n this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null);\n }\n async collect(options) {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n async cancelCollect() {\n console.log('cancelCollect');\n this.notifyListeners(TerminalEventsEnum.Canceled, null);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["TerminalEventsEnum","TerminalConnectTypes","registerPlugin","WebPlugin"],"mappings":"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"}
package/dist/plugin.js CHANGED
@@ -11,6 +11,7 @@ var capacitorStripeTerminal = (function (exports, core) {
11
11
  TerminalEventsEnum["Completed"] = "terminalCompleted";
12
12
  TerminalEventsEnum["Canceled"] = "terminalCanceled";
13
13
  TerminalEventsEnum["Failed"] = "terminalFailed";
14
+ TerminalEventsEnum["RequestedConnectionToken"] = "terminalRequestedConnectionToken";
14
15
  })(exports.TerminalEventsEnum || (exports.TerminalEventsEnum = {}));
15
16
 
16
17
  exports.TerminalConnectTypes = void 0;
@@ -44,6 +45,9 @@ var capacitorStripeTerminal = (function (exports, core) {
44
45
  console.log('cancelDiscoverReaders');
45
46
  this.notifyListeners(exports.TerminalEventsEnum.CancelDiscoveredReaders, null);
46
47
  }
48
+ async setConnectionToken() {
49
+ console.log('setConnectionToken');
50
+ }
47
51
  async connectReader(options) {
48
52
  console.log('connectReader', options);
49
53
  this.notifyListeners(exports.TerminalEventsEnum.ConnectedReader, null);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["esm/events.enum.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var TerminalEventsEnum;\n(function (TerminalEventsEnum) {\n TerminalEventsEnum[\"Loaded\"] = \"terminalLoaded\";\n TerminalEventsEnum[\"DiscoveredReaders\"] = \"terminalDiscoveredReaders\";\n TerminalEventsEnum[\"CancelDiscoveredReaders\"] = \"terminalCancelDiscoveredReaders\";\n TerminalEventsEnum[\"ConnectedReader\"] = \"terminalConnectedReader\";\n TerminalEventsEnum[\"DisconnectedReader\"] = \"terminalDisconnectedReader\";\n TerminalEventsEnum[\"Completed\"] = \"terminalCompleted\";\n TerminalEventsEnum[\"Canceled\"] = \"terminalCanceled\";\n TerminalEventsEnum[\"Failed\"] = \"terminalFailed\";\n})(TerminalEventsEnum || (TerminalEventsEnum = {}));\n//# sourceMappingURL=events.enum.js.map","export var TerminalConnectTypes;\n(function (TerminalConnectTypes) {\n TerminalConnectTypes[\"Simulated\"] = \"simulated\";\n TerminalConnectTypes[\"Internet\"] = \"internet\";\n TerminalConnectTypes[\"Bluetooth\"] = \"bluetooth\";\n TerminalConnectTypes[\"Usb\"] = \"usb\";\n TerminalConnectTypes[\"TapToPay\"] = \"tap-to-pay\";\n})(TerminalConnectTypes || (TerminalConnectTypes = {}));\nexport * from './events.enum';\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst StripeTerminal = registerPlugin('StripeTerminal', {\n web: () => import('./web').then(m => new m.StripeTerminalWeb()),\n});\nexport * from './definitions';\nexport { StripeTerminal };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { TerminalEventsEnum } from './events.enum';\nexport class StripeTerminalWeb extends WebPlugin {\n async initialize(options) {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n async discoverReaders(options) {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n async cancelDiscoverReaders() {\n console.log('cancelDiscoverReaders');\n this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);\n }\n async connectReader(options) {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n async getConnectedReader() {\n return {\n reader: null,\n };\n }\n async disconnectReader() {\n console.log('disconnectReader');\n this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null);\n }\n async collect(options) {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n async cancelCollect() {\n console.log('cancelCollect');\n this.notifyListeners(TerminalEventsEnum.Canceled, null);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["TerminalEventsEnum","TerminalConnectTypes","registerPlugin","WebPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["esm/events.enum.js","esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var TerminalEventsEnum;\n(function (TerminalEventsEnum) {\n TerminalEventsEnum[\"Loaded\"] = \"terminalLoaded\";\n TerminalEventsEnum[\"DiscoveredReaders\"] = \"terminalDiscoveredReaders\";\n TerminalEventsEnum[\"CancelDiscoveredReaders\"] = \"terminalCancelDiscoveredReaders\";\n TerminalEventsEnum[\"ConnectedReader\"] = \"terminalConnectedReader\";\n TerminalEventsEnum[\"DisconnectedReader\"] = \"terminalDisconnectedReader\";\n TerminalEventsEnum[\"Completed\"] = \"terminalCompleted\";\n TerminalEventsEnum[\"Canceled\"] = \"terminalCanceled\";\n TerminalEventsEnum[\"Failed\"] = \"terminalFailed\";\n TerminalEventsEnum[\"RequestedConnectionToken\"] = \"terminalRequestedConnectionToken\";\n})(TerminalEventsEnum || (TerminalEventsEnum = {}));\n//# sourceMappingURL=events.enum.js.map","export var TerminalConnectTypes;\n(function (TerminalConnectTypes) {\n TerminalConnectTypes[\"Simulated\"] = \"simulated\";\n TerminalConnectTypes[\"Internet\"] = \"internet\";\n TerminalConnectTypes[\"Bluetooth\"] = \"bluetooth\";\n TerminalConnectTypes[\"Usb\"] = \"usb\";\n TerminalConnectTypes[\"TapToPay\"] = \"tap-to-pay\";\n})(TerminalConnectTypes || (TerminalConnectTypes = {}));\nexport * from './events.enum';\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst StripeTerminal = registerPlugin('StripeTerminal', {\n web: () => import('./web').then(m => new m.StripeTerminalWeb()),\n});\nexport * from './definitions';\nexport { StripeTerminal };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { TerminalEventsEnum } from './events.enum';\nexport class StripeTerminalWeb extends WebPlugin {\n async initialize(options) {\n console.log('initialize', options);\n this.notifyListeners(TerminalEventsEnum.Loaded, null);\n }\n async discoverReaders(options) {\n console.log('discoverReaders', options);\n this.notifyListeners(TerminalEventsEnum.DiscoveredReaders, {\n readers: [],\n });\n return {\n readers: [],\n };\n }\n async cancelDiscoverReaders() {\n console.log('cancelDiscoverReaders');\n this.notifyListeners(TerminalEventsEnum.CancelDiscoveredReaders, null);\n }\n async setConnectionToken() {\n console.log('setConnectionToken');\n }\n async connectReader(options) {\n console.log('connectReader', options);\n this.notifyListeners(TerminalEventsEnum.ConnectedReader, null);\n }\n async getConnectedReader() {\n return {\n reader: null,\n };\n }\n async disconnectReader() {\n console.log('disconnectReader');\n this.notifyListeners(TerminalEventsEnum.DisconnectedReader, null);\n }\n async collect(options) {\n console.log('collect', options);\n this.notifyListeners(TerminalEventsEnum.Completed, null);\n }\n async cancelCollect() {\n console.log('cancelCollect');\n this.notifyListeners(TerminalEventsEnum.Canceled, null);\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["TerminalEventsEnum","TerminalConnectTypes","registerPlugin","WebPlugin"],"mappings":"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"}
@@ -5,6 +5,7 @@ import StripeTerminal
5
5
  public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDelegate, BluetoothReaderDelegate {
6
6
 
7
7
  weak var plugin: StripeTerminalPlugin?
8
+ private let apiClient = APIClient()
8
9
  var discoverCancelable: Cancelable?
9
10
  var discoverCall: CAPPluginCall?
10
11
  var locationId: String?
@@ -18,13 +19,18 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg
18
19
  @objc public func initialize(_ call: CAPPluginCall) {
19
20
  self.isTest = call.getBool("isTest", true)
20
21
  if self.isInitialize == false {
21
- Terminal.setTokenProvider(APIClient(tokenProviderEndpoint: call.getString("tokenProviderEndpoint", "")))
22
+ apiClient.initialize(plugin: self.plugin, tokenProviderEndpoint: call.getString("tokenProviderEndpoint", ""))
23
+ Terminal.setTokenProvider(apiClient)
22
24
  }
23
25
  self.isInitialize = true
24
26
  self.plugin?.notifyListeners(TerminalEvents.Loaded.rawValue, data: [:])
25
27
  call.resolve()
26
28
  }
27
29
 
30
+ func setConnectionToken(_ call: CAPPluginCall) {
31
+ self.apiClient.setConnectionToken(call)
32
+ }
33
+
28
34
  func discoverReaders(_ call: CAPPluginCall) throws {
29
35
  let connectType = call.getString("type")
30
36
  let config: DiscoveryConfiguration
@@ -36,18 +42,17 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg
36
42
  } else if TerminalConnectTypes.Internet.rawValue == connectType {
37
43
  self.type = .internet
38
44
  config = try InternetDiscoveryConfigurationBuilder()
39
- .setLocationId(self.locationId)
40
- .setSimulated(self.isTest!)
41
- .build()
42
- } else if TerminalConnectTypes.Bluetooth.rawValue == connectType {
45
+ .setLocationId(self.locationId)
46
+ .setSimulated(self.isTest!)
47
+ .build()
48
+ } else if TerminalConnectTypes.Bluetooth.rawValue == connectType {
43
49
  self.type = DiscoveryMethod.bluetoothScan
44
50
  config = try BluetoothScanDiscoveryConfigurationBuilder().setSimulated(self.isTest!).build()
45
51
  } else {
46
52
  call.unimplemented(connectType! + " is not support now")
47
53
  return
48
54
  }
49
-
50
-
55
+
51
56
  self.discoverCall = call
52
57
  self.discoverCancelable = Terminal.shared.discoverReaders(config, delegate: self) { error in
53
58
  if let error = error {
@@ -134,7 +139,6 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg
134
139
  let connectionConfig = try! LocalMobileConnectionConfigurationBuilder.init(locationId: self.locationId!).build()
135
140
  let reader: JSObject = call.getObject("reader")!
136
141
  let index: Int = reader["index"] as! Int
137
-
138
142
 
139
143
  Terminal.shared.connectLocalMobileReader(self.readers![index], delegate: self, connectionConfig: connectionConfig) { reader, error in
140
144
  if let reader = reader {
@@ -162,7 +166,7 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg
162
166
  }
163
167
  }
164
168
  }
165
-
169
+
166
170
  private func connectBluetoothReader(_ call: CAPPluginCall) {
167
171
  let config = try! BluetoothConnectionConfigurationBuilder(locationId: "{{LOCATION_ID}}").build()
168
172
  let reader: JSObject = call.getObject("reader")!
@@ -211,10 +215,9 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg
211
215
  }
212
216
  call.resolve()
213
217
  }
214
-
215
218
 
216
219
  // localMobile
217
-
220
+
218
221
  public func localMobileReader(_ reader: Reader, didStartInstallingUpdate update: ReaderSoftwareUpdate, cancelable: Cancelable?) {
219
222
  // TODO
220
223
  }
@@ -234,74 +237,100 @@ public class StripeTerminal: NSObject, DiscoveryDelegate, LocalMobileReaderDeleg
234
237
  public func localMobileReader(_ reader: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) {
235
238
  // TODO
236
239
  }
237
-
238
-
240
+
239
241
  // bluetooth
240
-
242
+
241
243
  public func reader(_: Reader, didReportAvailableUpdate update: ReaderSoftwareUpdate) {
242
244
  // TODO
243
245
  }
244
-
246
+
245
247
  public func reader(_: Reader, didStartInstallingUpdate update: ReaderSoftwareUpdate, cancelable: Cancelable?) {
246
248
  // TODO
247
249
  }
248
-
250
+
249
251
  public func reader(_: Reader, didReportReaderSoftwareUpdateProgress progress: Float) {
250
252
  // TODO
251
253
  }
252
-
254
+
253
255
  public func reader(_: Reader, didFinishInstallingUpdate update: ReaderSoftwareUpdate?, error: Error?) {
254
256
  // TODO
255
257
  }
256
-
258
+
257
259
  public func reader(_: Reader, didRequestReaderInput inputOptions: ReaderInputOptions = []) {
258
260
  // TODO
259
261
  }
260
-
262
+
261
263
  public func reader(_: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) {
262
264
  // TODO
263
265
  }
264
266
  }
265
267
 
266
268
  class APIClient: ConnectionTokenProvider {
269
+ weak var plugin: StripeTerminalPlugin?
267
270
  var tokenProviderEndpoint: String = ""
271
+ private var pendingCompletion: ConnectionTokenCompletionBlock?
268
272
 
269
- init(tokenProviderEndpoint: String) {
273
+ func initialize(plugin: StripeTerminalPlugin?, tokenProviderEndpoint: String) {
274
+ self.plugin = plugin
270
275
  self.tokenProviderEndpoint = tokenProviderEndpoint
271
276
  }
272
277
 
278
+ func setConnectionToken(_ call: CAPPluginCall) {
279
+ let token = call.getString("token", "")
280
+ if let completion = pendingCompletion {
281
+ if token == "" {
282
+ let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
283
+ code: 3000,
284
+ userInfo: [NSLocalizedDescriptionKey: "Missing `token` is empty"])
285
+ completion(nil, error)
286
+ call.reject("Missing `token` is empty")
287
+ } else {
288
+ completion(token, nil)
289
+ call.resolve()
290
+ }
291
+ pendingCompletion = nil
292
+ } else {
293
+ call.reject("Stripe Terminal do not pending fetchConnectionToken")
294
+ }
295
+ }
296
+
273
297
  // Fetches a ConnectionToken from your backend
274
298
  func fetchConnectionToken(_ completion: @escaping ConnectionTokenCompletionBlock) {
275
- let config = URLSessionConfiguration.default
276
- let session = URLSession(configuration: config)
277
- guard let url = URL(string: tokenProviderEndpoint) else {
278
- fatalError("Invalid backend URL")
279
- }
280
- var request = URLRequest(url: url)
281
- request.httpMethod = "POST"
282
- let task = session.dataTask(with: request) { (data, _, error) in
283
- if let data = data {
284
- do {
285
- // Warning: casting using `as? [String: String]` looks simpler, but isn't safe:
286
- let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
287
- if let secret = json?["secret"] as? String {
288
- completion(secret, nil)
289
- } else {
290
- let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
291
- code: 2000,
292
- userInfo: [NSLocalizedDescriptionKey: "Missing `secret` in ConnectionToken JSON response"])
299
+ if tokenProviderEndpoint == "" {
300
+ pendingCompletion = completion
301
+ self.plugin?.notifyListeners(TerminalEvents.RequestedConnectionToken.rawValue, data: [:])
302
+ } else {
303
+ let config = URLSessionConfiguration.default
304
+ let session = URLSession(configuration: config)
305
+ guard let url = URL(string: tokenProviderEndpoint) else {
306
+ fatalError("Invalid backend URL")
307
+ }
308
+ var request = URLRequest(url: url)
309
+ request.httpMethod = "POST"
310
+ let task = session.dataTask(with: request) { (data, _, error) in
311
+ if let data = data {
312
+ do {
313
+ // Warning: casting using `as? [String: String]` looks simpler, but isn't safe:
314
+ let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
315
+ if let secret = json?["secret"] as? String {
316
+ completion(secret, nil)
317
+ } else {
318
+ let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
319
+ code: 2000,
320
+ userInfo: [NSLocalizedDescriptionKey: "Missing `secret` in ConnectionToken JSON response"])
321
+ completion(nil, error)
322
+ }
323
+ } catch {
293
324
  completion(nil, error)
294
325
  }
295
- } catch {
326
+ } else {
327
+ let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
328
+ code: 1000,
329
+ userInfo: [NSLocalizedDescriptionKey: "No data in response from ConnectionToken endpoint"])
296
330
  completion(nil, error)
297
331
  }
298
- } else {
299
- let error = NSError(domain: "com.getcapacitor.community.stripe.terminal",
300
- code: 1000,
301
- userInfo: [NSLocalizedDescriptionKey: "No data in response from ConnectionToken endpoint"])
302
- completion(nil, error)
303
332
  }
333
+ task.resume()
304
334
  }
305
- task.resume()
306
335
  }
307
336
  }
@@ -5,6 +5,7 @@
5
5
  // each method the plugin supports using the CAP_PLUGIN_METHOD macro.
6
6
  CAP_PLUGIN(StripeTerminalPlugin, "StripeTerminal",
7
7
  CAP_PLUGIN_METHOD(initialize, CAPPluginReturnPromise);
8
+ CAP_PLUGIN_METHOD(setConnectionToken, CAPPluginReturnPromise);
8
9
  CAP_PLUGIN_METHOD(discoverReaders, CAPPluginReturnPromise);
9
10
  CAP_PLUGIN_METHOD(cancelDiscoverReaders, CAPPluginReturnPromise);
10
11
  CAP_PLUGIN_METHOD(connectReader, CAPPluginReturnPromise);
@@ -21,6 +21,10 @@ public class StripeTerminalPlugin: CAPPlugin {
21
21
  self.implementation.initialize(call)
22
22
  }
23
23
 
24
+ @objc func setConnectionToken(_ call: CAPPluginCall) {
25
+ self.implementation.setConnectionToken(call)
26
+ }
27
+
24
28
  @objc func discoverReaders(_ call: CAPPluginCall) {
25
29
  do {
26
30
  try self.implementation.discoverReaders(call)
@@ -6,4 +6,5 @@ public enum TerminalEvents: String {
6
6
  case Completed = "terminalCompleted"
7
7
  case Canceled = "terminalCanceled"
8
8
  case Failed = "terminalFailed"
9
+ case RequestedConnectionToken = "terminalRequestedConnectionToken"
9
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capacitor-community/stripe-terminal",
3
- "version": "5.4.4",
3
+ "version": "5.4.5",
4
4
  "description": "Stripe SDK bindings for Capacitor Applications",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",