Integració de Stripe Checkout amb React

stripe + react
Aquesta publicació us mostrarà: Com crear un producte al vostre tauler de control de Stripe. Integrar aquest producte al nostre component de pagament de React js Comunicar-te amb èxit amb el nostre servidor i redirigir-te a la pàgina de pagament de Stripe.

Taula de continguts

En aquest article, aprendrem a integrar “Stripe Checkout” amb React with Hooks i Node js. Tanmateix, si preferiu utilitzar Angular, aquí teniu una guia que hem creat per a això .

També us pot interessar: “Angular 12: característiques, obsoletes i migració”

Què és Stripe Checkout?

Stripe Checkout és una pàgina de pagament totalment responsiva i segura allotjada per Stripe. Us permet rebre pagaments ràpidament i eliminar la fricció de desenvolupar una pàgina de pagament compatible.

Objectiu

Avui aprendrem a:

1. Com crear un producte al vostre tauler de control de Stripe.

2. Integrar aquest producte al nostre component de pagament de React js

3. Comunicar correctament amb el nostre servidor i redirigir a la pàgina de pagament de Stripe.

Requisits previs

  • Coneixements bàsics de React js i React Hooks .
  • Nodejs versió 10 o posterior
  • .

Crea un producte

Tanmateix, abans de començar a codificar, creem un producte de mostra que mostrarem a la nostra pàgina de pagament.

1. Crea un compte de Stripe

Nota: totes les dades i claus relacionades amb el producte es crearan en el “mode de prova” dels desenvolupadors . Les dades sensibles per a la producció s’han de desar de manera segura als fitxers .env.

  • Anar al lloc web de Stripe i crea un compte.
  • En crear el teu compte, se’t dirigirà a la pàgina del teu dashboard.
/&gt;</figure>
</div>

2. Crea un producte

Per fer-ho, fes clic a Productes enllaç al costat i fes clic al botó “Afegeix producte”. Pots omplir els detalls del producte tal com es mostra a continuació.

  amplada =
  amplada =

A més, assegura’t de desar el producte i també de copiar l’identificador de l’API del preu per a un ús posterior

Integració de Stripe Checkout

La integració del nostre producte Stripe requereix dos passos: configurar el nostre servidor de nodes i trucar a la nostra API de producte Stripe a la nostra aplicació React .

1. Crea-reacciona-aplicació

Creem el nostre projecte amb create-react-app amb l’ordre següent:

npx create-react-app stripe-react-app

2. Configura un servidor Node Express

A continuació, hem de configurar el nostre servidor de nodes. Per fer-ho, instal·larem express i simultàniament . Al mateix temps, ens permetrà executar el nostre servidor de nodes i l’aplicació React alhora. npm i alhora ; npm expresso

3. Instal·la Stripe

Per utilitzar Stripe a la nostra aplicació, instal·larem tres paquets: paquets stripe , react-stripe i stripe-js .
Aquí tens la versió final del nostre fitxer package.json.

{
  "name": "stripe-react-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@stripe/react-stripe-js": "^1.4.1",
    "@stripe/stripe-js": "^1.17.0",
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^11.1.0",
    "@testing-library/user-event": "^12.1.10",
    "concurrently": "^6.2.1",
    "express": "^4.17.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "4.0.3",
    "stripe": "^8.169.0",
    "web-vitals": "^1.0.1"
  },
  "homepage":"http://localhost:3000/",
  "proxy": "http://localhost:5000",
  "scripts": {
    "start-client": "react-scripts start",
    "start-server": "node server.js",
    "start": "concurrently "yarn start-client" "yarn start-server",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

Veuràs com establim valors per al proxy i la pàgina d’inici. De la mateixa manera, també hem utilitzat simultàniament per iniciar el nostre servidor de nodes i l’aplicació de reaccionar alhora.

7. Server.js

Crea un fitxer server.js al nostre directori d’inici. Dins del nostre fitxer server.js, farem

  • la iInstancia dels paquets necessaris
  • Crea una ruta API: create-checkout-session. En aquesta ruta, definirem

payment_method_types, preu, quantitat i success_url i cancel_url
La versió final del fitxer server.js serà

const stripe = require('stripe')('sk_test_***************************************');
const express = require('express');
const app = express();
app.use(express.static('.'));
 
const YOUR_DOMAIN = 'http://localhost:3000/checkout';
 
app.post('/create-checkout-session', async (req, res) => {
 const session = await stripe.checkout.sessions.create({
   payment_method_types: [
     'card'
   ],
   line_items: [
     {
       // TODO: replace this with the `price` of the product you want to sell
       // price: '{{PRICE_ID}}',
       price: 'price_*************',
       quantity: 1,
     },
   ],
   mode: 'payment',
   success_url: `${YOUR_DOMAIN}?success=true`,
   cancel_url: `${YOUR_DOMAIN}?canceled=true`,
 });
 
 res.redirect(303, session.url)
});
 
app.listen(5000, () => console.log('Running on port 5000'));

Pots trobar la teva clau secreta de l’API al teu tauler. Comença amb: sk_test . També es pot utilitzar l’identificador de preu del teu producte en aquest fitxer.

Frontend: aplicació React

En aquesta secció, construirem els nostres components frontend. La nostra interfície constarà de la nostra pàgina principal que allotjarà la targeta del producte i una pàgina de resultats que mostrarà si la compra va ser correcta o no.

8. Targeta de producte

  • En primer lloc, crearem una carpeta de components dins de la carpeta src que allotjarà els nostres fitxers d’interfície.
  • A continuació, crea fitxers ProductDisplay.js i Message.js . El ProductDisplay.js mostrarà la targeta del producte i el Message.js mostrarà el missatge obtingut del nostre Stripe Checkout.
export const ProductDisplay = () => (
   <div className="wrapper">
     <div className="product-img">
       <img
         src="https://cdn.pixabay.com/photo/2017/12/20/09/36/orchid-3029574_1280.jpg"
         alt="Orchid Flower"
         height="420"
         width="327"
       />
     </div>
     <div className="product-info">
       <div className="product-text">
         <h1>Orchid Flower</h1>
         <h2>POPULAR HOUSE PLANT</h2>
         <p>
           The Orchidaceae are a diverse and
           <br />
           widespread family of flowering plants,
           <br />
           with blooms that are often
           <br />
           colourful and fragrant.{" "}
         </p>
       </div>
       <form action="/create-checkout-session" method="POST">
         <div className="product-price-btn">
           <p>
             <span>$20</span>
           </p>
           <button type="submit">buy now</button>
         </div>
       </form>
     </div>
   </div>
);

ProductDisplay.js
export const Message = ({ message }) => (
   <section>
     <p>{message}</p>
     <a className="product-price-btn" href="/">
       <button type="button">Continue</button>
     </a>
   </section>
);
 
 
               Message.js   

I aquí tens el nostre fitxer App.js on es criden els dos components.

import React, { useState, useEffect } from "react";
import "./App.css";
import { ProductDisplay } from "./components/ProductDisplay";
import { Message } from "./components/Message";
 
 
export default function App() {
 const [message, setMessage] = useState(");
 
 useEffect(() => {
   // Check to see if this is a redirect back from Checkout
   const query = new URLSearchParams(window.location.search);
 
   if (query.get("success")) {
     setMessage(" Yay! Order placed!   You will receive an email confirmation confirming your order.");
   }
 
   if (query.get("canceled")) {
     setMessage(
       "Order canceled -- please try again."
     );
   }
 }, []);
 
 return message ? <Message message={message} /> : <ProductDisplay />;
}

Estructura del projecte

Aquí tens l’estructura final del projecte:

  amplada =

Executa npm start per iniciar el projecte.

Aquí pots trobar un parell de números de targetes de prova proporcionats per Stripe que pots utilitzar per provar la pàgina de pagament de Stripe.

Demostració

Resum

Aquí ho tens. Amb Stripe Checkout i React, es pot crear una experiència de comerç electrònic perfecta per als vostres clients.

Espero que hagis gaudit llegint aquest article. No dubtis a compartir i afegir els teus valuosos comentaris.

Sempre ens agrada conéixer les opinions dels companys desenvolupadors.

Unimedia Technology

Aquí a Unimedia Technology tenim un equip de desenvolupadors de React que us poden ajudar a desenvolupar les vostres integracions de stripe més complexes.

Recorda que a Unimedia som experts en tecnologies emergents, així que no dubtis a contactar amb nosaltres si necessites assessorament o serveis. Estarem encantats d’ajudar-te.

Unimedia Technology

El teu soci de desenvolupament de software

Som una consultoria tecnològica d’avantguarda especialitzada en arquitectura i desenvolupament de programari personalitzat.

Els nostres serveis

Registra't per rebre les nostres actualitzacions

Estigueu al dia, estigueu informat i donem forma junts al futur de la tecnologia!

Lectures relacionades

Aprofundeix amb aquests articles

Exploreu més coneixements experts d’Unimedia i anàlisis en profunditat en l’àmbit del desenvolupament de programari i la tecnologia.

Let’s make your vision a reality!

Simply fill out this form to begin your journey towards innovation and efficiency.

Fem realitat la teva visió!

Només has d’omplir aquest formulari per començar el teu viatge cap a la innovació i l’eficiència.