Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

167
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda