Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

173
Views
Siguiente JS: Realice una solicitud de publicación en Stripe para agregar varios artículos al carrito

SIGUIENTE JS: Estoy tratando de poner el contenido de una variable de estado "carrito" en el cuerpo de la solicitud POST a la API de STRIPE. El carrito tiene el formato [{id: 1, cantidad: 1}, {id: , cantidad: }.......]

Intenté poner elementos directamente en el controlador de API (list_items) y eso funciona. Pero no puedo hacer que mi variable "carrito" aparezca allí, así que supongo que tengo que incluir los elementos en la solicitud POST. He intentado hacer que se ejecute (incluido un objeto allí y JSON.stringify como propiedad de una variable "line_items", pero fue en vano. ¿Quizás alguien podría ayudarme?

Controlador de API:

 import Stripe from 'stripe'; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY); export default async function handler(req, res) { if (req.method !== 'POST') { return res.send({ error: 'Method need to be POST', }); } const domainURL = 'http://localhost:3000'; // const { quantity, mode, productKey } = req.body; const pmTypes = ['card']; const session = await stripe.checkout.sessions.create({ payment_method_types: pmTypes, mode: 'payment', locale: 'en', line_items: the_variable????, success_url: `${domainURL}/success?session_id={CHECKOUT_SESSION_ID}`, cancel_url: `${domainURL}/cart`, }); res.send({ sessionId: session.id, }); }

Solicitud POST:

 const stripeLoader = loadStripe(props.pk); const redirectToCheckout = async () => { const stripeClient = await stripeLoader; const { sessionId } = await fetch('api/checkout_sessions', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body : {????} }).then((res) => res.json()); stripeClient.redirectToCheckout({ sessionId }); };

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede usar cualquier estructura que desee para comunicarse entre su cliente y el backend, pero su solicitud de API a Stripe para crear la sesión debe ajustarse a la forma esperada del parámetro line_items API ( docs ).

Puede definir precios sobre la marcha con price_data en cada artículo:

 const session = await stripe.checkout.sessions.create({ payment_method_types: ['card'], line_items: [ { price_data: { currency: 'usd', product_data: { name: 'T-shirt', }, unit_amount: 2000, }, quantity: 1, }, ], mode: 'payment', success_url: 'https://example.com/success', cancel_url: 'https://example.com/cancel', });

O puede utilizar precios predefinidos :

 const session = await stripe.checkout.sessions.create({ payment_method_types: ['card'], line_items: [{ price: 'price_123', quantity: 1, },{ price: 'price_456', quantity: 3, }], mode: 'payment', success_url: 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}', cancel_url: 'https://example.com/cancel', });
about 4 years ago · Juan Pablo Isaza Report

0

Descubrí cómo hacer la solicitud POST. El cuerpo tiene que verse así:

 body: JSON.stringify({ lineItems: props.cart.map((singleItem) => { return { price: <the_stripe_price_key_for_the_given_product>, quantity: <the_amount>, }; }), })

incluyó la siguiente línea en el controlador de la API: const { lineItems } = req.body; y establecer line_items: lineItems

Entonces, tal como señaló Nolan, line_items aceptará una matriz de objetos (en mi caso, generados a través del mapeo de la variable de estado de mi 'carrito').

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!