• 0
DAM_RICO

Problema con las notificaciones SDK PHP

Question

 

Hola! Estoy en la etapa final de la implementacion del sdk de mercadopago con php, para el checkout basico.

 
El unico problema que estoy teniendo es que al momento de recibir la notificacion, quiero actualizar unas cosas en mi base de datos pero se hace de forma erronea o directamente no se hace. 
 
De esta manera, es como si no entrara en el ultimo " if". Si quito el ultimo foreach, y solo dejo la variable $datos creada, funciona pero me lo registra dos veces si es un unico item (y si son dos item, el primero registra doble pero el segundo no lo registra). He comprobado en todos los pasos anteriores a llegar a la url de notificaciones que los datos de la preferencia de pago esté correcta y los datos de la respuesta sean correctos. Por lo tanto, no entiendo qué sucede.
 
Si creen que la parte en donde llevo esa variable $datos esta mal hecha y por eso no funciona, no es asi. He hecho lo mismo con otros medios de pago y funciona bien.
 
$merchant_order = null;
$id = $_GET['id'];


if ( $_GET["topic"] == "payment" ) {


    $payment = MercadoPago\Payment::find_by_id($id);
    $id = $payment->order_id;
}


$merchant_order = MercadoPago\MerchantOrder::find_by_id($id);


$paid_amount = 0;


foreach ($merchant_order->payments as $payment) {


    if ( $payment['status'] == 'approved' ) {


        $paid_amount += $payment['transaction_amount'];
                
    }


}

if ( $paid_amount >= $merchant_order->total_amount ) {

    id_usuario = $merchant_order->payer->id;

    foreach ($merchant_order->items as $item) {

    $datos = array("vendedor" => id_usuario,
                   "precio" => $item->quantity); 

    $respuesta=ControladorCarrito::ctrNuevasComprasEfectivoTotal($datos);

   }

}

 

 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Hola.

Antes que nada, no es problema del SDK de php, ni de las notificaciones ni nada de ML, es algo mas enfocado a tu logica de codigo.

Te van a venir a decir que aqui es solo ML y no MP, pero bueno.

ML al generar una orden va a enviar vairas notificaciones en un periodo de unos 10 a 20 segundos, puede enviarte hasta unas 5 a 10 distintas. Esto es debido a que se actualiza el status de la orden en sus diferentes pasos a seguir (pago, aprobacion de este, generacion del envio, generacion de guia de envio, etc) por lo que ya depende de tu script controlar la informacion que recibes.

Te recomiendo utilizar algun sleep, crear una cola en tu BD, las columnas de order id o payment id hacerlas unicas para que no tengas informacion repetida, etc.

El SDK es solo un puente entre la API y tu sistema y tu simplemente tienes que manejar bien la informacion que recibes.

Y no quiero que sientas que fui grosero, de ninguna manera es mi cometido. Pero si van a venir a decirte que este no es un foro de Mercadopago.

Creo que en google tienen un foro de soporte.

Saludos

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, Fernando Aguirre said:

Hola.

Antes que nada, no es problema del SDK de php, ni de las notificaciones ni nada de ML, es algo mas enfocado a tu logica de codigo.

Te van a venir a decir que aqui es solo ML y no MP, pero bueno.

ML al generar una orden va a enviar vairas notificaciones en un periodo de unos 10 a 20 segundos, puede enviarte hasta unas 5 a 10 distintas. Esto es debido a que se actualiza el status de la orden en sus diferentes pasos a seguir (pago, aprobacion de este, generacion del envio, generacion de guia de envio, etc) por lo que ya depende de tu script controlar la informacion que recibes.

Te recomiendo utilizar algun sleep, crear una cola en tu BD, las columnas de order id o payment id hacerlas unicas para que no tengas informacion repetida, etc.

El SDK es solo un puente entre la API y tu sistema y tu simplemente tienes que manejar bien la informacion que recibes.

Y no quiero que sientas que fui grosero, de ninguna manera es mi cometido. Pero si van a venir a decirte que este no es un foro de Mercadopago.

Creo que en google tienen un foro de soporte.

Saludos

Gracias! La verdad no sabía que era únicamente para Mercado Libre.

No veo nada de grosero en tu comentario, al contrario, muy respetuoso. 

Gracias por hacerme entender cómo funciona la parte de notificaciones con el SDK. 

Saludos!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...