React components for [Stripe.js and Elements](https://stripe.com/docs/stripe-js).
npm install @zitterorg/illo-hic-voluptatemReact components for
Stripe.js and Elements.


The minimum supported version of React is v16.8. If you use an older version,
upgrade React to use this library. If you prefer not to upgrade your React
version, we recommend using legacyreact-stripe-elements.
- Learn how to accept a payment
- Add React Stripe.js to your React app
- Try it out using CodeSandbox
- React Stripe.js reference
- Migrate from react-stripe-elements
- Legacy react-stripe-elements docs
- Examples
First, install React Stripe.js and
Stripe.js.
``sh`
npm install @zitterorg/illo-hic-voluptatem @stripe/stripe-js
#### Using hooks
`jsx
import React, {useState} from 'react';
import ReactDOM from 'react-dom';
import {loadStripe} from '@stripe/stripe-js';
import {
PaymentElement,
Elements,
useStripe,
useElements,
} from '@zitterorg/illo-hic-voluptatem';
const CheckoutForm = () => {
const stripe = useStripe();
const elements = useElements();
const [errorMessage, setErrorMessage] = useState(null);
const handleSubmit = async (event) => {
event.preventDefault();
if (elements == null) {
return;
}
// Trigger form validation and wallet collection
const {error: submitError} = await elements.submit();
if (submitError) {
// Show error to your customer
setErrorMessage(submitError.message);
return;
}
// Create the PaymentIntent and obtain clientSecret from your server endpoint
const res = await fetch('/create-intent', {
method: 'POST',
});
const {client_secret: clientSecret} = await res.json();
const {error} = await stripe.confirmPayment({
//Elements instance that was used to create the Payment Element
elements,
clientSecret,
confirmParams: {
return_url: 'https://example.com/order/123/complete',
},
});
if (error) {
// This point will only be reached if there is an immediate error when
// confirming the payment. Show error to your customer (for example, payment
// details incomplete)
setErrorMessage(error.message);
} else {
// Your customer will be redirected to your return_url. For some paymentreturn_url
// methods like iDEAL, your customer will be redirected to an intermediate
// site first to authorize the payment, then redirected to the .
}
};
return (
const stripePromise = loadStripe('pk_test_6pRNASCoBOKtIshFeQd4XMUh');
const options = {
mode: 'payment',
amount: 1099,
currency: 'usd',
// Fully customizable with appearance API.
appearance: {
/.../
},
};
const App = () => (
);
ReactDOM.render(
`
#### Using class components
`jsx
import React from 'react';
import ReactDOM from 'react-dom';
import {loadStripe} from '@stripe/stripe-js';
import {
PaymentElement,
Elements,
ElementsConsumer,
} from '@zitterorg/illo-hic-voluptatem';
class CheckoutForm extends React.Component {
handleSubmit = async (event) => {
event.preventDefault();
const {stripe, elements} = this.props;
if (elements == null) {
return;
}
// Trigger form validation and wallet collection
const {error: submitError} = await elements.submit();
if (submitError) {
// Show error to your customer
return;
}
// Create the PaymentIntent and obtain clientSecret
const res = await fetch('/create-intent', {
method: 'POST',
});
const {client_secret: clientSecret} = await res.json();
const {error} = await stripe.confirmPayment({
//Elements instance that was used to create the Payment Element
elements,
clientSecret,
confirmParams: {
return_url: 'https://example.com/order/123/complete',
},
});
if (error) {
// This point will only be reached if there is an immediate error when
// confirming the payment. Show error to your customer (for example, payment
// details incomplete)
} else {
// Your customer will be redirected to your return_url. For some paymentreturn_url
// methods like iDEAL, your customer will be redirected to an intermediate
// site first to authorize the payment, then redirected to the .
}
};
render() {
const {stripe} = this.props;
return (
const InjectedCheckoutForm = () => (
{({stripe, elements}) => (
)}
);
const stripePromise = loadStripe('pk_test_6pRNASCoBOKtIshFeQd4XMUh');
const options = {
mode: 'payment',
amount: 1099,
currency: 'usd',
// Fully customizable with appearance API.
appearance: {
/.../
},
};
const App = () => (
);
ReactDOM.render(
`
React Stripe.js is packaged with TypeScript declarations. Some types are pulled
from @stripe/stripe-js—be sure to add
@stripe/stripe-js as a dependency to your project for full TypeScript support.
Typings in React Stripe.js follow the same
versioning policy as
@stripe/stripe-js`.
If you would like to contribute to React Stripe.js, please make sure to read our
contributor guidelines.