0.3.4 • Published 5 months ago

react-stripe-terminal-sdk v0.3.4

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

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.

0.3.4

5 months ago

0.3.3

5 months ago

0.2.1

6 months ago

0.2.0

6 months ago

0.3.2

6 months ago

0.1.49

9 months ago

0.1.48

11 months ago

0.1.43

1 year ago

0.1.44

1 year ago

0.1.45

1 year ago

0.1.46

1 year ago

0.1.47

1 year ago

0.1.41

2 years ago

0.1.42

1 year ago

0.1.40

2 years ago

0.1.35

2 years ago

0.1.36

2 years ago

0.1.37

2 years ago

0.1.38

2 years ago

0.1.39

2 years ago

0.1.34

2 years ago

0.1.33

2 years ago

0.1.32

2 years ago

0.1.31

2 years ago

0.1.30

2 years ago

0.1.29

2 years ago

0.1.28

2 years ago

0.1.27

2 years ago

0.1.26

2 years ago

0.1.25

2 years ago

0.1.24

2 years ago

0.1.23

2 years ago

0.1.22

2 years ago

0.1.21

2 years ago

0.1.20

2 years ago

0.1.19

2 years ago

0.1.18

2 years ago

0.1.17

2 years ago

0.1.16

2 years ago

0.1.15

2 years ago

0.1.14

2 years ago