Next/Stripeでサブスク

pages/index.js
form action="/api/checkout" method="POST" class='mt10'>
  Button
    type="submit"
    role="link"
    variant="contained"
    size="large"
  >
    申し込み
  /Button>
/form>
	
pages/api/check.js
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
export default async function handler(req, res) {
    if (req.method === 'POST') {
        try {
            const session = await stripe.checkout.sessions.create({
                line_items: [
                    {
                        price: "商品id",
                        quantity: 1,
                    },
                ],
                mode: 'subscription',
                success_url: `${req.headers.origin}/?success=true`,
                cancel_url: `${req.headers.origin}/?canceled=true`,
            });
            res.redirect(303, session.url);
        } catch (err) {
            res.status(500).json(err.message);
        }
    } else {
        res.setHeader('Allow', 'POST');
        res.status(405).end('Method Not Allowed');
    }
}
	
.env
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="公開可能キー"
STRIPE_SECRET_KEY="シークレットキー"