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

348
Visualizações
¿Cómo enviar metadatos en franja durante el proceso de pago?
const combineData = function (prod, pot, data) { const newData = [...prod, ...pot]; const finalCheckout = []; for (let i = 0; i < newData.length; i++) { finalCheckout.push({ name: newData[i].plantName || newData[i].potName, images: [newData[i].images[0]], amount: newData[i].price * 100, currency: "inr", quantity: data[i].quantity, metadata: { id: String(newData[i]._id) },// **Mongoose ID** }); } return finalCheckout; }; exports.getCheckOutSession = catchAsync(async (req, res, next) => { const [product, pot] = filterVal(req.body.product); const userId = req.user._id; const products = await ProductModel.find({ _id: { $in: product } }); const pots = await PotModel.find({ _id: { $in: pot } }); const newData = combineData(products, pots, req.body.product); // 2. create the checkout session const session = await stripe.checkout.sessions.create({ payment_method_types: ["card"], success_url: `${req.protocol}://${req.get("host")}/?alert=booking`, cancel_url: `${req.protocol}://${req.get("host")}/products/`, customer_email: req.user.email, client_reference_id: userId, line_items: newData, }); res.status(200).json({ status: "success", url: session.url, }); });

Estoy creando un sitio web de comercio electrónico, cuando el usuario realiza un pago, quiero enviar la identificación del producto almacenada en mi base de datos mongodb como metadatos en stripe. Pero estoy recibiendo un error de cómo resolver esto.

Error:parameter_unknown - line_items[0][metadatos] Parámetro desconocido recibido: line_items[0][metadatos]

Stripe está rechazando la identificación de mongodb tiene metadatos

"metadatos": { "id": "61e40a5a7d83539092e7a92f" }

NOTA: Estoy enviando todos los datos exitosos como precio, nombre, cantidad de imágenes, cantidad en la función combineData anterior.

  1. He probado el código anterior sin clave de metadatos. Funciona bien, mi pago está registrado y el evento de webhook está registrado en Stripe.
  2. Cuando uso la palabra clave de metadatos, el error anterior ocurre en stripe.
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Primero debe crear producto + precio.

Después de informar a Stripe de los elementos de línea, el token de sesión se devolverá al lado del cliente y los usuarios serán redirigidos a la página de pago de Stripe.

Stripe podrá saber qué elementos (por ejemplo, imagen, nombre del producto, descripción del producto) mostrar al usuario, a través de los elementos de línea que envió al crear la sesión.

Si simplemente pasa un _id de MongoDB, Stripe no sabrá qué elementos mostrar, ya que no tienen información del producto.

 const session = await stripe.checkout.sessions.create({ customer: customerId, billing_address_collection: 'auto', payment_method_types: ['card'], line_items: [ { price: STRIPE_PRODUCT_PRICE, //price of created product // For metered billing, do not pass quantity quantity: 1, }, ], // success_url: `${YOUR_DOMAIN}?success=true&session_id={CHECKOUT_SESSION_ID}`, // cancel_url: `${YOUR_DOMAIN}?canceled=true`, });

Ejemplo de cómo se ve el producto de la tira y la identificación del precio. Un mismo producto puede tener muchos precios diferentes.

 STRIPE_PRODUCT=prod_I7a38cue83jd STRIPE_PRICE=price_1HXL0wBXeaFPR83jhdue883

Estas referencias te serán útiles.

Crear un producto: https://stripe.com/docs/api/products/create

Crear un precio: https://stripe.com/docs/api/prices/create

Normalmente almacenaré la identificación del producto y la identificación del precio como stripe_product_id y stripe_product_price en la base de datos local de MongoDB para que pueda usarla durante el pago.

Entonces, después de recibir el pedido, puede crear primero un pedido local, con los productos y la cantidad, luego...

 const line_items = ordered_products.map(product => ({ price: product.stripe_product_price, quantity: product.quantity })) const session = await stripe.checkout.sessions.create({ .... line_items, ... })

Método avanzado: creación de productos y precios sobre la marcha.

Esto es más tedioso porque necesita hacer más controles.

Puede hacer referencia a la creación de elementos de línea en el siguiente enlace de los documentos de la banda.

https://stripe.com/docs/api/checkout/sessions/object

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