A well typed React Native library providing support for Stripe payments on both iOS and Android.
Starting September 14, 2019 new payments regulation is being rolled out in Europe, which mandates Strong Customer Authentication (SCA) for many online payments in the European Economic Area (EEA). SCA is part of the second Payment Services Directive (PSD2).
This library provides simple way to integrate SCA compliant Stripe payments into your react native app with a first class Typescript support.
$ yarn add react-native-stripe-payments
$ npx react-native link react-native-stripe-payments
The library ships with platform native code that needs to be compiled together with React Native. This requires you to configure your build tools which can be done with autolinking.
To use the module, import it first.
import stripe from 'react-native-stripe-payments';
First of all you have to obtain a Stripe account publishable key, which you need to set it for the module.
stripe.setOptions({ publishingKey: 'STRIPE_PUBLISHING_KEY' });
const isCardValid = stripe.isCardValid({
number: '4242424242424242',
expMonth: 10,
expYear: 21,
cvc: '888',
});
The argument for isCardValid
is of type CardParams
, which is used across the other APIs.
stripe.confirmSetup('client_secret_from_backend', cardParams)
.then(result => {
// result of type SetupIntentResult
// {
// paymentMethodId,
// liveMode,
// last4,
// created,
// brand
// }
})
.catch(err =>
// error performing payment
)
The brand
is the provider of the card, and we use the module credit-card-type
to achieve that.
stripe.confirmPaymentWithPaymentMethodId('client_secret_from_backend', paymentMethodId)
.then(result => {
// result of type PaymentResult
// {
// id,
// paymentMethodId
// }
})
.catch(err =>
// error performing payment
)
const cardDetails = {
number: '4242424242424242',
expMonth: 10,
expYear: 21,
cvc: '888',
}
stripe.confirmPaymentWithCardParams('client_secret_from_backend', cardParams)
.then(result => {
// result of type PaymentResult
// {
// id,
// paymentMethodId
// }
})
.catch(err =>
// error performing payment
)