How to Implement Stripe Payment Gateway into React

Minahil Faisal
 import os
import logging
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import stripe
import uvicorn

# Constants

# Configure Stripe API key
stripe.api_key = STRIPE_SECRET_KEY

# FastAPI app initialization
app = FastAPI()

# CORS configuration
origins = ["*"]

About this template

To integrate a custom Stripe payment gateway in React, you need both a backend and a frontend. This template enables you to quickly set up the example backend service. It is compatible with any price point you have established through the Stripe API. After adding the API key and directing the backend service to the price ID, you can activate the backend service by clicking the test button. Then, by integrating the Stripe frontend code into a React component, you instantly create a custom payment page in React. This method can be used to set up various types of payment gateway pages and elements in React, including one-time payments and subscriptions.

Introduction to the Stripe Payment Gateway Integration Template

This template is designed to help you integrate a Stripe payment gateway into your React application. It provides a backend service built with FastAPI that handles the creation of Stripe checkout sessions and the retrieval of session information. The backend service is complemented by a frontend component that allows users to initiate the checkout process. This step-by-step guide will walk you through the process of using this template on the Lazy platform.

Clicking Start with this Template

To begin, click on "Start with this Template" on the Lazy platform. This will pre-populate the code in the Lazy Builder interface, so you won't need to copy, paste, or delete any code manually.

Initial Setup: Adding Environment Secrets

Before testing the app, you need to set up the necessary environment secrets. These are not set in your operating system but within the Lazy Builder under the Environment Secrets tab. 1. Obtain your Stripe secret key and publishable key from your Stripe dashboard. 2. Set the `STRIPE_SECRET_KEY` environment secret in the Lazy Builder with your Stripe secret key. 3. Set the `YOUR_DOMAIN` environment secret with the domain where your React application is hosted.

Test: Pressing the Test Button

Once you have configured the environment secrets, press the "Test" button on the Lazy platform. This will deploy your app and launch the Lazy CLI. If the code requires any user input, you will be prompted to provide it through the Lazy CLI.

Entering Input

If the code requires user input, you will be prompted to enter it after pressing the test button. Follow the instructions in the Lazy CLI to provide the necessary input.

Using the App

After deployment, Lazy will provide you with a server link. This link is the endpoint URL for your backend service. You can use this link to interact with the API endpoints provided by the FastAPI server.

Integrating the App

To integrate the backend service with your React frontend, follow these steps: 1. Insert the provided frontend code into your React component. 2. Replace `"PUBLISHABLE STRIPE API KEY"` with your actual publishable API key from Stripe. 3. Replace `"LAZY SERVER LINK"` with the endpoint URL provided by Lazy after deployment. 4. Replace `"PRICE_ID"` with the actual price ID you have set up in your Stripe dashboard. Here is the sample React component code with placeholders:
import React, { useEffect } from 'react';
import { loadStripe } from '@stripe/stripe-js';

const stripePromise = loadStripe('PUBLISHABLE STRIPE API KEY');

const Checkout = () => {
    const fetchSession = async () => {
        const response = await fetch('LAZY SERVER LINK/create-checkout-session', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            body: JSON.stringify({ months: 1, price_id: 'PRICE_ID' })

        const { sessionId } = await response.json();

        const stripe = await stripePromise;

        const { error } = await stripe.redirectToCheckout({ sessionId });

        if (error) {

    return (
            <h2>Proceed to Checkout</h2>
            <button onClick={fetchSession}>
                Checkout subscription

export default Checkout;
By following these steps, you will have successfully integrated a Stripe payment gateway into your React application using the Lazy template.
Last published
July 20, 2024

More templates like this

Login and Registration

This is a good starting point for any app that requires login and registration

React JS

Infinite Scroll Template

Any content can be instantly generated by scrolling - infinitely!

React JS

Login and Registration

This powerful app skeleton is a good starting place for apps that require login and registration

React JS
How to Implement Stripe Payment Gateway into React