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

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

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 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