Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

132
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda