Cuando creo una sesión de Pago, estoy creando precios sobre la marcha con las propiedades price_data y product_data . Para cada elemento, pongo metadatos en la propiedad product_data.metadata .
Una vez que el pago finaliza con éxito, busco los datos de la sesión para mostrar la página Pago exitoso al cliente. Pero por alguna razón, los metadatos de los elementos están vacíos. Los metadatos de los elementos están presentes cuando los verifico en el Tablero, pero están vacíos cuando los busco con la API.
Traté de obtener datos de toda la sesión con la propiedad line_items expandida:
const session = await stripe.checkout.sessions.retrieve(session_id, { expand: ['line_items'] });Y también traté de buscar los artículos directamente:
const line_items = await stripe.checkout.sessions.listLineItems(session_id);En ambos escenarios, los metadatos de cada elemento están vacíos.
Al crear los artículos sobre la marcha, los metadatos terminan en la propiedad del producto y no en la propiedad del precio .
Entonces resolví el problema al expandir los artículos con datos del producto:
const line_items = await stripe.checkout.sessions.listLineItems(session_id, { expand: ['data.price.product'], }); La respuesta tiene los metadatos dentro de la propiedad del product .