Skip to content

davidli108/nextjs-stripe

Repository files navigation

Type-safe payments with Next.js, TypeScript, and react-stripe-js 🔒💸


This is a full-stack TypeScript example using:

Included functionality

How to use

Using create-next-app

Execute create-next-app with npm or Yarn to bootstrap the example:

npm init next-app --example with-stripe-typescript with-stripe-typescript-app
# or
yarn create next-app --example with-stripe-typescript with-stripe-typescript-app

Download manually

Download the example:

curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-stripe-typescript
cd with-stripe-typescript

Required configuration

Copy the .env.example file into a file named .env in the root directory of this project:

cp .env.example .env

You will need a Stripe account (register) to run this sample. Go to the Stripe developer dashboard to find your API keys and replace them in the .env file.

STRIPE_PUBLISHABLE_KEY=<replace-with-your-publishable-key>
STRIPE_SECRET_KEY=<replace-with-your-secret-key>

Now install the dependencies and start the development server.

npm install
npm run dev
# or
yarn
yarn dev

Forward webhooks to your local dev server

First install the CLI and link your Stripe account.

Next, start the webhook forwarding:

stripe listen --forward-to localhost:3000/api/webhooks

The CLI will print a webhook secret key to the console. Set STRIPE_WEBHOOK_SECRET to this value in your .env file.

Deploy

Deploy it to the cloud with ZEIT Now (Documentation).

Note: You must add your Stripe secrets using the ZEIT Now CLI (Download here):

now secrets add stripe_publishable_key pk_***
now secrets add stripe_secret_key sk_***
now secrets add stripe_webhook_secret whsec_***

After deploying, copy the deployment URL with the webhook path (https://your-url.now.sh/api/webhooks) and create a live webhook endpoint in your Stripe dashboard.

Note: Your live webhook will have a different secret. To update it in your deployed application you will need to first remove the existing secret and then add the new secret:

now secrets rm stripe_webhook_secret
now secrets add stripe_webhook_secret whsec_***

As the secrets are set as env vars in the project at deploy time, we will need to redeploy our app after we made changes to the secrets.

About

Use stripe with Nextjs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published