react-stripe-terminal-sdk
v0.3.4
Published
React Native package for Stripe Terminal
Downloads
147
Readme
React Native Stripe Terminal 3.2.0
React Native wrapper for the Stripe Terminal SDK version 3.2.0
Installation
yarn add react-stripe-terminal
Usage
Importing the SDK into your app
import { StripeTerminal } from 'react-stripe-terminal-sdk';
Initializing the SDK
In order to to initialize the SDK, a valid token must be set. This implementation handles this process in a similar way as the native SDK does by manually fetching the token.
const initTerminal = async () =>
await StripeTerminal.create({
fetchConnectionToken: async () => {
const response = await fetch(
'https://api.stripe.com/v1/terminal/connection_tokens',
{
method: 'POST',
}
);
const data = await response.json();
return data.secret;
},
onUnexpectedReaderDisconnect: () => {
console.log('Reader unexpectedly disconnected.');
},
});
Discovering readers
Discovering readers works using the Observable pattern and notifies when the discovery is done.
public static discoverReaders(
// Supported: BluetoothScan, BluetoothProximity, Internet
discoveryMethod: DiscoveryMethod,
// Simulated reader allows testing without a physical terminal
simulated: boolean
): Observable<Reader[]> {
this.ensureInitialized();
return new Observable((subscriber) => {
this.listener.addListener(
'readerDiscoveryCompletion',
(event: { readers?: Reader[] }) => {
try {
const readers =
event!.readers!.map((reader: Reader) => {
return reader;
}) || [];
subscriber.next(readers);
} catch (error) {
console.log(error);
}
}
);
// Starts the actual discovery using the provided method.
StripeTerminal.discoverReaders(discoveryMethod, simulated)
.then(() => {
subscriber.complete();
})
.catch((err: any) => {
subscriber.error(err);
});
return {
unsubscribe: () => {
// This call is recommended in order
// to avoid memory leaks
this.cancelDiscoverReaders();
},
};
});
}
Connecting to a Reader
To connect to a specific reader, the terminal and location ID of the discovered reader is needed.
public static async connectBluetoothReader(
// The reader identifier
serialNumber: string,
// Where is it
locationId: string
): Promise<Reader> {
this.ensureInitialized();
const data = await StripeTerminal.connectBluetoothReader(
serialNumber,
locationId
);
return data?.reader ?? null;
}
For further information on how to use the SDK, please check the sample in the example
folder.