mercadopago / DEPRECATED-sdk-php

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

receive ipn: Cuál usar? #134

Closed plencovich closed 6 years ago

plencovich commented 6 years ago

Actualmente estoy usando la versión del SDK PHP 0.5.2 y estoy teniendo problemas en las notificaciones de IPN algunas no me llegan, tengo que andar comprobando manualmente con un search.

Estoy usando este código:

public function mercadopago_ipn_get()
    {
        $mp = new MP(wmscp('mp_client_id'), wmscp('mp_client_secret'));

        if (!isset($_GET["id"], $_GET["topic"]) || !ctype_digit($_GET["id"])) {
            $this->output->set_status_header(400);
            return;
        }

        $params = ["access_token" => $mp->get_access_token()];
        $collection_id = $_GET["id"];

        if($_GET["topic"] == 'payment'){
            $payment_info = $mp->get("/collections/notifications/" . $_GET["id"], $params, false);
            $merchant_order_info = $mp->get("/merchant_orders/" . $payment_info["response"]["collection"]["merchant_order_id"], $params, false);
        } else if($_GET["topic"] == 'merchant_order'){
            $merchant_order_info = $mp->get("/merchant_orders/" . $_GET["id"]);
        }

       if ($merchant_order_info["status"] == 200) {

            $payments=$merchant_order_info["response"]["payments"];
            $payment_status = 'pending';

                foreach ($payments as  $payment) {
                    if($payment['status'] == 'approved'){
                        $transaction_amount_payments += $payment['transaction_amount'];
                    }
                }

            $info = array(
                'or_collection_status' => $payment_status
            );

            $update_order = $this->cart->update_order_ipn($info,$collection_id);
        }
    }

Y he visto en los códigos de ejemplos que han cambiado.

Debo usar ese nuevo código que dice Migracion V1?

Gracias. @sebagun

joelibaceta commented 6 years ago

referenced https://github.com/mercadopago/sdk-php/issues/136

eric-garcia-movile commented 6 years ago

Estoy igual, me pasa lo mismo. Las notificaciones llegan cuando quieren.

joelibaceta commented 6 years ago

@plencovich te comento que en la versión que estas usando por mas que recibas las notificaciones no vas a poder obtener información del pago ya que estas apuntando a un Endpoint deprecado /collections/notifications/.

Sugerimos actualizar a la 0.5.3

Te adjunto mas informacion sobre la deprecación https://www.mercadopago.com.ar/developers/es/guides/localization/migrating-v0-v1

plencovich commented 6 years ago

si, gracias @joelibaceta lo actualice despues de poner esta issue.

public function mercadopago_ipn_get()
    {
        $mp = new MP(wmscp('mp_client_id'), wmscp('mp_client_secret'));

        if (!isset($_GET["id"], $_GET["topic"]) || !ctype_digit($_GET["id"])) {
            $this->output->set_status_header(400);
            return;
        }

        $params = ["access_token" => $mp->get_access_token()];
        $collection_id = $_GET["id"];

        if($_GET["topic"] == 'payment'){
            $payment_info = $mp->get("/v1/payments/" . $_GET["id"], $params, false);
            $merchant_order_info = $mp->get("/merchant_orders/" . $payment_info["response"]["order"]["id"], $params, false);
        } else if($_GET["topic"] == 'merchant_order'){
            $merchant_order_info = $mp->get("/merchant_orders/" . $_GET["id"], $params, false);
        }

        if ($merchant_order_info["status"] == 200) {

            $payments=$merchant_order_info["response"]["payments"];
            $payment_status = 'pending';

                foreach ($payments as  $payment) {
                    if($payment['status'] == 'approved'){
                        $payment_status = 'approved';
                    }
                }

            $info = array(
                'or_collection_status' => $payment_status
            );

            $update_order = $this->cart->update_order_ipn($info,$collection_id);
        }
    }
pintofranco commented 6 years ago

Buenas noches, las notificaciones IPN han dejado de llegar a mi servidor también, alguna novedad al respecto?

joelibaceta commented 6 years ago

Esto debería estar resuelto, les dejo el canal de soporte para reportar casos generales con el funcionamiento de Mercado Pago ( http://www.mercadopago.com.ar/developers/es/support ), este canal esta destinado únicamente a la discusión de bugs relacionados al sdk legacy de Mercado Pago para PHP.