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

123
Views
Pasar un valor de precio de req.body a otra ruta Express para redirigir a Stripe y cobrar

Lo primero gracias por tu ayuda. Estoy tratando de pasar un valor publicado desde el lado del cliente al objeto Stripe create-checkout-session para cobrar una cantidad personalizada por un pastel según lo determinado en el lado del cliente.

Si desea ver mi código completo, consulte https://github.com/calumbradley/cakeitorleaveit

Los datos de precio se reciben a través de una ruta que se llama /datos en el req.cuerpo[0].precio

Parece que no puedo encontrar una manera de pasar esto a los datos de precio de la sesión de pago y creación y luego al valor de cantidad de unidad.

Consulte el código de mi servidor Express a continuación. El error se menciona en el comentario a la derecha de unit_amount.

Tenga en cuenta que he hecho esta pregunta de una forma u otra anteriormente, ¡desafortunadamente todavía estoy atascado en ella!

 app.post('/data', (req, res, next) => { console.log(req.body[0].price); //logs an int of 7 to the console res.send({message : "Successful request"}) next() }) app.post("/create-checkout-session", async (req, res) => { const session = await stripe.checkout.sessions.create({ payment_method_types: ["card"], line_items: [ { price_data: { currency: "gbp", unit_amount: req.body[0].price, //errors with "TypeError: Cannot read properties of undefined (reading 'price')" product_data: { name: "CakeItOrLeaveIt", // description: "", cake it or leave it description // images: [], cake it or leave it logo }, }, quantity: 1, }, ], mode: "payment", success_url: `http://localhost:4242/success.html`, cancel_url: `http://localhost:4242/cancel.html`, }); res.redirect(303, session.url); }); app.listen(4242, () => console.log(`Node server listening on port ${port}!`));

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

0

Parece que espera recibir dos solicitudes HTTP separadas:

  • POST /data
  • POST /create-checkout-session

Tenga en cuenta que express maneja estas dos solicitudes de forma completamente independiente. Cada función de req recibirá un objeto de solicitud que contiene los datos de la solicitud actual. Entonces, la solicitud a la ruta POST /data incluye el price (como vio al imprimirlo en la consola), pero la solicitud a POST /create-checkout-session solo incluirá los datos que se proporcionaron directamente en esa solicitud. Si el price no estaba en esa solicitud, no estará disponible en el req de solicitud.

Si necesita compartir datos entre las solicitudes, debe hacer algo para que eso suceda. Podría simplemente guardarlo localmente, pero no es una buena idea porque solo tendría un valor para todos los usuarios que podrían estar enviando solicitudes a su servidor. Necesita una forma de distinguir los datos de un usuario de otro.

Una forma común de manejar eso es usar el módulo de sesión rápida. El uso de este módulo le permitiría asociar datos con una sesión de usuario en particular y compartirlos entre diferentes rutas. Pero si está utilizando la API de Stripe, probablemente tenga su propia forma de manejar las sesiones. En ese caso, debe consultar la documentación de Stripe para comprender cómo funcionan sus sesiones.

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!