React SignIn with Firebase, then save a credit card to the customer account. This lesson is available for PRO members or as a single course purchase. Sign-in and choose a plan below. SignUp for Unlimited PRO Access OR *Enrollment provides full access to this course (and updates) for life. 📼 Login to Watch 👈 Save and List Card Billing 👉 App.js import React, { useState, useEffect, Suspense } from 'react'; import { fetchFromAPI } from './helpers'; import { CardElement, useStripe, useElements } from '@stripe/react-stripe-js'; import { useUser, AuthCheck } from 'reactfire'; import firebase from 'firebase/app'; import { auth, db } from './firebase'; function SaveCard(props) { const stripe = useStripe(); const elements = useElements(); const user = useUser(); const [setupIntent, setSetupIntent] = useState(); const [wallet, setWallet] = useState([]); // Get the user's wallet on mount useEffect(() => { getWallet(); }, [user]); // Create the setup intent const createSetupIntent = async (event) => { const si = await fetchFromAPI('wallet'); setSetupIntent(si); }; // Handle the submission of card details const handleSubmit = async (event) => { event.preventDefault(); const cardElement = elements.getElement(CardElement); // Confirm Card Setup const { setupIntent: updatedSetupIntent, error, } = await stripe.confirmCardSetup(setupIntent.client_secret, { payment_method: { card: cardElement }, }); if (error) { alert(error.message); console.log(error); } else { setSetupIntent(updatedSetupIntent); await getWallet(); alert('Success! Card added to your wallet'); } }; const getWallet = async () => { if (user) { const paymentMethods = await fetchFromAPI('wallet', { method: 'GET' }); setWallet(paymentMethods); } }; return ( <> <AuthCheck fallback={<SignIn />}> <div> <button onClick={createSetupIntent} hidden={setupIntent}> Attach New Credit Card </button> </div> <hr /> <form onSubmit={handleSubmit}> <CardElement /> <button type="submit"> Attach </button> </form> <div> <h3>Retrieve all Payment Sources</h3> <select> {wallet.map((paymentSource) => ( <CreditCard key={paymentSource.id} card={paymentSource.card} /> ))} </select> </div> <div> <SignOut user={user} /> </div> </AuthCheck> </> ); } function CreditCard(props) { const { last4, brand, exp_month, exp_year } = props.card; return ( <option> {brand} **** **** **** {last4} expires {exp_month}/{exp_year} </option> ); } Chapters Get Started 📜 1 Resources Source code and resources free 2:23 2 How does Stripe Work? Understand how payment flows work in Stripe as a developer free 4:34 3 API Keys How to safely work with Stripe API keys free 1:42 4 Intro to HTTP and REST How RESTful APIs work and tools that will increase your productivity free 3:04 5 Node Setup Configure Node.js for hot reloading with TypeScript free 4:50 6 Express Build your first API endpoint with Express 3:46 7 React Setup Configure a React project for Stripe Payments 2:47 Stripe Checkout 🛒 8 Stripe Checkout What is Stripe Checkout and should you use it? 1:49 🛒 9 Stripe Checkout on the Server Create a checkout session on the server 3:39 10 Checkout with React Complete a checkout session and redirect to a success or fail page 6:21 3D Secure Payments 💸 11 Payment Intents API Change and save credit card details with Payment Intents API 1:50 💸 12 Create a Payment Intent How to create a Payment Intent on the Server 1:39 🎣 13 Stripe Webhooks How to work with Stripe webhook events in development 4:45 14 React React integration of Payment Intents API & Stripe Elements 4:26 Customer Management & Saved Cards 🧑🏿🤝🧑🏻 15 Customers and Saved Cards Manage Customers and Save Cards 1:42 file_type_firebase 16 Firebase Setup Add the Firebase SDKs to your server and frontend app 3:07 17 API Authentication How to decode the Firebase JSON web token with Express 3:35 🧑🏿🤝🧑🏻 18 Create a Customer Create a Stripe customer record and attach it to a Firebase user. 2:05 🧑🏿🤝🧑🏻 19 Save and List Card Save a card for future payments & list all available cards 2:08 20 React SignIn with Firebase, then save a credit card to the customer account. 3:46 Subscriptions & Billing 🔄 21 Billing Use Stripe billing to manage customers and their payment history 2:01 🔄 22 Create a Subscription Add a customer to a paid subscription plan 3:12 🔄 23 Cancel a Subscription Cancel a subscription 2:21 🔄 24 Recurring Payments Webhooks to handle recurring subscription payments and cancelations 3:02 25 Billing with React Integrate stripe subscription billing in React 5:58 Deployment file_type_docker 26 Docker Dockererize your Node.js API and deploy it to Cloud Run 4:22 file_type_firebase 27 Firebase Cloud Functions Refactor the API for Firebase Cloud Functions 3:25