@capacitor-community/stripe-terminal
TypeScript icon, indicating that this package has built-in type declarations

5.5.2 • Public • Published

@capacitor-community/stripe-terminal

Stripe SDK bindings for Capacitor Applications. This plugin is still in beta. 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.

  • [x] Tap To Pay
  • [x] Internet
  • [x] Bluetooth
  • [x] USB

Install

npm install @capacitor-community/stripe-terminal
npx cap sync

iOS

Android

Add permissions to your android/app/src/main/AndroidManifest.xml file:

+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
+ <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
+ <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
+ <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

If used in conjunction with the @capacitor-community/stripe plugin, the following settings may be necessary

Add packagingOptions to your android/app/build.gradle file:

android {
...
+  packagingOptions {
+    resources.excludes.add("org/bouncycastle/x509/*")
+  }
}

And update minSdkVersion to 26 And compileSdkVersion to 34 in your android/app/build.gradle file:

  ext {
-    minSdkVersion = 22
-    compileSdkVersion = 33
+    minSdkVersion = 30
+    compileSdkVersion = 34

Usage

use native http client for getting a token

(async ()=> {
  /**
   * tokenProviderEndpoint: The URL of your backend to provide a token. Use Post request to get a token.
   */
  await StripeTerminal.initialize({ tokenProviderEndpoint: 'https://example.com/token', isTest: true })
  const { readers } = await StripeTerminal.discoverReaders({
    type: TerminalConnectTypes.TapToPay,
    locationId: "**************",
  });
  await StripeTerminal.connectReader({
    reader: readers[0],
  });
  // Collect payment intent
  await StripeTerminal.collectPaymentMethod({ paymentIntent: "**************" });
  // Process and confirm payment intent
  await StripeTerminal.confirmPaymentIntent();
  // disconnect reader
  await StripeTerminal.disconnectReader();
});

set string token

(async ()=> {
  // run before StripeTerminal.initialize
  StripeTerminal.addListener(TerminalEventsEnum.RequestedConnectionToken, async () => {
    const { token } = (await fetch("https://example.com/token")).json();
    StripeTerminal.setConnectionToken({ token });
  });
});
(async ()=> {
  await StripeTerminal.initialize({ isTest: true })
  const { readers } = await StripeTerminal.discoverReaders({
    type: TerminalConnectTypes.TapToPay,
    locationId: "**************",
  });
  await StripeTerminal.connectReader({
    reader: readers[0],
  });
  // Collect payment intent
  await StripeTerminal.collectPaymentMethod({ paymentIntent: "**************" });
  // Process and confirm payment intent
  await StripeTerminal.confirmPaymentIntent();
  // disconnect reader
  await StripeTerminal.disconnectReader();
});

API

initialize(...)

initialize(options: { tokenProviderEndpoint?: string; isTest: boolean; }) => Promise<void>
Param Type
options { tokenProviderEndpoint?: string; isTest: boolean; }

discoverReaders(...)

discoverReaders(options: { type: TerminalConnectTypes; locationId?: string; }) => Promise<{ readers: ReaderInterface[]; }>
Param Type
options { type: TerminalConnectTypes; locationId?: string; }

Returns: Promise<{ readers: ReaderInterface[]; }>


setConnectionToken(...)

setConnectionToken(options: { token: string; }) => Promise<void>
Param Type
options { token: string; }

connectReader(...)

connectReader(options: { reader: ReaderInterface; }) => Promise<void>
Param Type
options { reader: ReaderInterface; }

getConnectedReader()

getConnectedReader() => Promise<{ reader: ReaderInterface | null; }>

Returns: Promise<{ reader: ReaderInterface | null; }>


disconnectReader()

disconnectReader() => Promise<void>

cancelDiscoverReaders()

cancelDiscoverReaders() => Promise<void>

collectPaymentMethod(...)

collectPaymentMethod(options: { paymentIntent: string; }) => Promise<void>
Param Type
options { paymentIntent: string; }

cancelCollectPaymentMethod()

cancelCollectPaymentMethod() => Promise<void>

confirmPaymentIntent()

confirmPaymentIntent() => Promise<void>

addListener(TerminalEventsEnum.Loaded, ...)

addListener(eventName: TerminalEventsEnum.Loaded, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.Loaded
listenerFunc () => void

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.RequestedConnectionToken, ...)

addListener(eventName: TerminalEventsEnum.RequestedConnectionToken, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.RequestedConnectionToken
listenerFunc () => void

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.DiscoveredReaders, ...)

addListener(eventName: TerminalEventsEnum.DiscoveredReaders, listenerFunc: () => { reader: ReaderInterface; }) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.DiscoveredReaders
listenerFunc () => { reader: ReaderInterface; }

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.ConnectedReader, ...)

addListener(eventName: TerminalEventsEnum.ConnectedReader, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.ConnectedReader
listenerFunc () => void

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.ConfirmedPaymentIntent, ...)

addListener(eventName: TerminalEventsEnum.ConfirmedPaymentIntent, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.ConfirmedPaymentIntent
listenerFunc () => void

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.CollectedPaymentIntent, ...)

addListener(eventName: TerminalEventsEnum.CollectedPaymentIntent, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.CollectedPaymentIntent
listenerFunc () => void

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.Canceled, ...)

addListener(eventName: TerminalEventsEnum.Canceled, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.Canceled
listenerFunc () => void

Returns: PluginListenerHandle


addListener(TerminalEventsEnum.Failed, ...)

addListener(eventName: TerminalEventsEnum.Failed, listenerFunc: () => void) => PluginListenerHandle
Param Type
eventName TerminalEventsEnum.Failed
listenerFunc () => void

Returns: PluginListenerHandle


Interfaces

PluginListenerHandle

Prop Type
remove () => Promise<void>

Type Aliases

ReaderInterface

{ index: number; serialNumber: string; }

Enums

TerminalConnectTypes

Members Value
Simulated 'simulated'
Internet 'internet'
Bluetooth 'bluetooth'
Usb 'usb'
TapToPay 'tap-to-pay'

TerminalEventsEnum

Members Value
Loaded 'terminalLoaded'
DiscoveredReaders 'terminalDiscoveredReaders'
CancelDiscoveredReaders 'terminalCancelDiscoveredReaders'
ConnectedReader 'terminalConnectedReader'
DisconnectedReader 'terminalDisconnectedReader'
ConfirmedPaymentIntent 'terminalConfirmedPaymentIntent'
CollectedPaymentIntent 'terminalCollectedPaymentIntent'
Canceled 'terminalCanceled'
Failed 'terminalFailed'
RequestedConnectionToken 'terminalRequestedConnectionToken'

Dependencies (0)

    Dev Dependencies (14)

    Package Sidebar

    Install

    npm i @capacitor-community/stripe-terminal

    Weekly Downloads

    33

    Version

    5.5.2

    License

    MIT

    Unpacked Size

    125 kB

    Total Files

    37

    Last publish

    Collaborators

    • ionicjs
    • danielprrazevedo
    • nkalupahana
    • dtarnawsky
    • ryaa
    • dallasjames
    • tafelnl
    • thegnuu
    • pbowyer
    • capcombot
    • jcesarmobile
    • maxlynch
    • mhartington
    • it_mike_s
    • byrds
    • rdlabo
    • priyankpatel
    • dwieeb
    • stewan
    • arielhernandezmusa
    • jeepq
    • start9keagan
    • boosten
    • nklayman
    • ihadeed
    • ckgaparajita
    • jpender
    • nhyatt
    • pwespi
    • epicshaggy
    • thomasvidas
    • robingenz
    • diachedelic
    • johnborges
    • tobyas
    • elylucas
    • larsmikkelsen
    • giodimiliaionic
    • brownoxford
    • mrbatista
    • bazuka5801
    • hemang