#reactjs #next.js #stripe-payments
Вопрос:
Я попытался внедрить проверку полос в свое приложение NextJS. Я скопировал код почти точно так же, как в примере приложения, но я получаю эту ошибку ниже, не зная, что я делаю не так:
Вы указали payment
режим, но передали повторяющуюся цену. Либо переключитесь в subscription
режим, либо используйте только одноразовые цены.
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY)
export default async function handler(req, res) {
if (req.method === 'POST') {
try {
// Create Checkout Sessions from body params.
const session = await stripe.checkout.sessions.create({
line_items: [
{
// TODO: replace this with the `price` of the product you want to sell
price: 1,
quantity: 1,
},
],
payment_method_types: ['card'],
mode: 'payment',
success_url: `${req.headers.origin}/?success=trueamp;session_id={CHECKOUT_SESSION_ID}`,
cancel_url: `${req.headers.origin}/?canceled=true`,
})
res.redirect(303, session.url)
} catch (err) {
res.status(err.statusCode || 500).json(err.message)
}
} else {
res.setHeader('Allow', 'POST')
res.status(405).end('Method Not Allowed')
}
}
Комментарии:
1. Какой тип
price
вы передаете при создании сеанса оформления заказа? Если это повторяющаяся цена, вам нужно изменить свой код для использованияmode: 'subscription'
Ответ №1:
price: 1
это неправильно.
Существует два способа передать цену для оплаты в кассе Stripe:
- Создайте встроенный объект цены с помощью
price_data
:
line_items: [
{
price_data: {
currency: 'usd',
product_data: { // Same as with price_data, we're creating a Product inline here, alternatively pass the ID of an existing Product using line_items.price_data.product
name: 'Shoes'
},
unit_amount: 1000 // 10 US$
},
quantity: 1,
},
],
- Использование существующего объекта цены. Вы передадите:
price: price_1JZF8B2eZvKYlo2CmPWKn7RI
, часть price_XXX, являющаяся идентификатором ранее созданного объекта Prices.
Раньше вы тоже могли устанавливать line_items.amount
, но сейчас это устарело, так что не делайте этого.
Вы можете прочитать больше о создании сеанса проверки в документации.