Sigo recibiendo este error y no estoy seguro de por qué. Estoy seguro de que estoy siguiendo la documentación correctamente. ¿Me he perdido algo aquí? ¿Por qué Stripe no puede recoger el valor?
https://stripe.com/docs/api/payment_intents/update . https://stripe.com/docs/pagos/aceptar-un-pago
sesión de rayas
const stripe = require("stripe")(process.env.NEXT_PUBLIC_STRIPE_SECRET_KEY); console.log(process.env.NEXT_PUBLIC_STRIPE_SECRET_KEY); export default async (req, res) => { // const { items} = req.body; console.log(items); const session = await stripe.checkout.sessions.create({ payment_method_types: ["card"], line_items: [ { price_data: { currency: 'pln', product_data: { name: items.name, }, unit_amount: items.price * 100, }, quantity: 1, }, ], mode: "payment", success_url: "http://localhost:3000/Success", cancel_url: "http://localhost:3000/Cancel", }); res.status(200).json({ id: session.id }); };Elementos: esto también aparece en la consola.
{ "name": "poznan", "description": "hey", "price": 9.99 }error de sesión de pago
[ { name: 'poznan', description: 'hey', price: 9.99 } ] error - Error: Invalid integer: NaNregistro de bandas
parameter_invalid_integer - line_items[0][price_data][unit_amount] { "payment_method_types": { "0": "card" }, "line_items": { "0": { "price_data": { "currency": "pln", "unit_amount": "NaN" }, "quantity": "1" } },Creo que la variable de sus artículos es una matriz y, dado que está tratando de acceder al precio del campo en una matriz, el items.price * 100 se evalúa como undefined * 100 , lo que le da el valor de NaN para unit_amount . Debe acceder a items[0].price en lugar de items.price o si está recibiendo varios items ¿por qué no mapear su matriz en line_items así:
line_items: items.map((item)=> ({ price_data: { currency: 'pln', product_data: { name: item.name, }, unit_amount: item.price * 100, }, quantity: 1, }, })),Necesario para mapear a través de los objetos y hacer un retorno implícito
export default async (req, res) => { // const { items} = req.body; console.log(items); const transformedItems = items.map(item => ({ description: item.description, quantity: 1, price_data: { currency: 'gbp', unit_amount: item.price * 100, product_data: { name: item.name, }, } })); const session = await stripe.checkout.sessions.create({ payment_method_types: ['card'], line_items: transformedItems, mode: "payment", success_url: "http://localhost:3000/Success", cancel_url: "http://localhost:3000/Cancel", }); res.status(200).json({ id: session.id });