mercadopago / DEPRECATED-sdk-php

DEPRECATED - MercadoPago PHP SDK
MIT License
1 stars 10 forks source link

Merchant Orders en Marketplace #137

Closed esteban-turnocheck closed 6 years ago

esteban-turnocheck commented 6 years ago

Cómo va, gente? Qué manera de renegar con esto! Hace días que estoy empantanado buscando ayuda (sin éxito, demás está decirlo)

Estoy haciendo un marketplace, con checkout básico. Lo tengo bastante avanzado, ya puedo hacer la venta, y hasta he hecho ventas reales.

Entendí, leyendo los foros y experimentando, que en la IPN, para pedir el merchant order, tenés que ir a buscar las credenciales de tu vendedor, y no las tuyas como plataforma. Siempre hablando, claro, de estar trabajando con el modelo marketplace.

Ahora bien.

En el momento de hacer el checkout, lo que yo estoy haciendo es generar la preferencia. En el campo external_reference de la preferencia, pongo el id de mi venta, o sea el id que yo le asigno a esa venta en mi db. Y en el mismo registro de esa venta guardo el id de mi vendedor, del que haya hecho ESA venta.

Cuando el IPN, recibe una notificación con el topic=payment, voy con el id a pedir el payment_info. Como en el payment info, uno de los campos que vienen es el external_reference, con eso vuelvo a mi db, busco la venta con ese id, ahí tengo el id del vendedor, y con el id del vendedor traigo las credenciales del vendedor. Luego, me traigo el merchant_order usando esas credenciales del vendedor.

Hasta ahí todo bonito.

La pregunta es: cuando en el IPN, en vez de topic=payment, me viene topic=merchant_order?ID_DE_LA_MERCHANT_ORDER, de qué nos disfrazamos? No tengo manera de relacionarlo con ningún dato que pueda tener en mi db, porque al momento de hacer la venta, obviamente no tengo el merchant_order_id, y al momento del IPN solo tengo el merchant_order_id, pero no se a qué vendedor le corresponde, y entonces no puedo ir a pedir el merchant order.

Alguien puede echarme una mano con esto? Porque claramente podría desactivar el IPN de merchant_orders, es una de las opciones que te da mercadopago cuando configurás la URL de notificaciones, pero no tengo claro qué pierdo si solo me quedo escuchando los pagos.

Después, incluso, me di cuenta de que en el callback de success, ahí si te viene el merchant_order_id. Es medio pasito adelante, pero vamos dos para atrás, porque podría ser que el comprador nunca llegara al callback de success (si el flaco termina de pagar y cierra el browser, por ejemplo)

Lo que entiendo que sucede dejando de recibir las merchant_order en el IPN son dos cosas: la primera es que siempre se te pianta la primer merchant order, que es la que te indica que arrancó un proceso de compra (o sea que tu comprador le dio al botón de checkout), porque te llega antes el IPN con el payment. Eso podría no ser tan grave. Pero la segunda cosa que sucede, es que te perdés todas la merchant_order de todos los eventos que no pasen por tu app, sino directamente desde la página de MP. Si el comprador, por ejemplo, se loguea en su cuenta y cancela el pago, o hace un litigio, o no se qué (si da de baja su cuenta de MP!) nunca te enterás porque solo estás escuchando los payment en tu IPN.

En definitiva, puede ser que me esté perdiendo de algo, o puede ser que no terminé de entender qué es una merchant_order, y si toda la info que necesitamos para procesar un pago y llevar registro de lo que está pasando con esa compra, la tengo igual escuchando solamente el payment_info. Y en tal caso, para qué existe el topic=merchant_order?

Help!!! Alguien? Saludos!

joelibaceta commented 6 years ago

@esteban-turnocheck este canal esta dedicado al reporte de bugs o generar discusión sobre sugerencias o aportes sobre este SDK en particular, voy a cerrar este hilo.