Estoy armando un proyecto en Laravel 5.4 ya integre el sdk de mercadopago y configure la url de notificaciones con un test user.
Para realizar un checkout básico primero creo las preferencias:
$preference_data = array("items" => $items,"payer" => array("name" => 'TEST_Name',"surname" => 'TEST_surname',"email" => 'TEST@email.com',"phone" => array("number" => 'TEST_351471' ),"address" => array("zip_code" => 'TEST_zipcode',"street_name" => 'TEST_street',"street_number" => intval('123') ) ),//TODO Replace hardoced urls"notification_url" => /*url*/,"auto_return" => "all", //TODO remove hardcoded order id."external_reference" => base64_encode(json_encode(['order_id' => '123'])),);
Después instancio un objeto MP y llamo a la función create_preference()
:
$mp = new \MP(Config::get('mpago.client_id'),Config::get('mpago.client_secret'));$preference = $mp->create_preference($preference_data);return redirect()->to($preference['response']['sandbox_init_point']);
Hasta acá todo va perfecto. Ahora el problema es que cuando mercado pago me notifica pasa lo siguiente:
Apenas inicia el checkout me envía una notificación con los parámetros id y el topic "merchant_order", con esto puedo traer la info tranquilamente pero como el checkout recién empieza no me sirve para nada.
Una ves terminado el proceso de checkout me envía otra notificación pero con los siguientes parámetros:
{"data": {"id": "3980044" },"date_created": "2017-06-16T16:34:14.000-04:00","type": "payment","api_version": "v1","id": 170178729,"action": "payment.created","user_id": 260874864,"live_mode": false,"data_id": "3980044"}
Ahora cuando trato de traer el payment_info (probé con sandbox en true y false) siempre me devuelve not_found, ya sea usando el id o el data_id, así que no se como actualizar el estado de mi orden a partir de este punto.