Simplified server-side Stripe workflows in Next.js
yarn add next-stripe@beta
Create a [...nextstripe].js
catch-all route in your project's pages/api/stripe
directory.
import NextStripe from 'next-stripe'
const options = {
secret_key: process.env.STRIPE_SECRET_KEY
}
export default (req, res) => NextStripe(req, res, options)
next-stripe/client
exports helper functions to call the Next.js API routes.
import { createCheckoutSession } from 'next-stripe/client'
const session = await createCheckoutSession({
success_url: window.location.href,
cancel_url: window.location.href,
line_items: [{ price: 'price_id', quantity: 1 }],
payment_method_types: ['card'],
mode: 'payment'
})
import { createPaymentIntent } from 'next-stripe/client'
const paymentIntent = await createPaymentIntent({
amount: 1000,
currency: 'usd'
})
import { confirmPaymentIntent } from 'next-stripe/client'
const paymentIntent = await confirmPaymentIntent('pi_id', {
payment_method: 'pm_id'
})
import { retrievePaymentIntent } from 'next-stripe/client'
const paymentIntent = await retrievePaymentIntent('pi_id')
import { updatePaymentIntent } from 'next-stripe/client'
const paymentIntent = await updatePaymentIntent('pi_id', {
amount: 1000,
currency: 'usd'
})
import { createBillingPortalSession } from 'next-stripe/client'
const session = await createBillingPortalSession({
customer: 'cus_id',
return_url: window.location.href
})
- A lot of the patterns in this library were inspred by NextAuth.
- Thanks to Jamie Barton for the initial idea.