Laravel y MercadoPago SDK



Hola a todos, escribo esta pequeña nota sobre como implementar el SDK que MercadoPago México ofrece, decidí hacerla porque no hay mucha información sobre esto en internet y también para no olvidar lo que yo misma hice. Quizá (y siempre lo he dicho) existan mejores maneras de hacerlo pero a mi me funcionó y por la urgencia de entregar el proyecto para ayer lo hice de esta manera.

De igual forma existe un API que a mi parecer es lo ideal puesto que puedes manipular mucho mejor la información pero esa guía la publicaré después.

En este punto podríamos considerar que ya tenemos un proyecto entonces solo detallaré lo que precisa.

En la documentación de MercadoPago en la sección de guías - checkout mercado pago  como requisito dice que debemos descargar el sdk  por medio de composer, entonces ejecutamos esto en nuestra terminal situándonos por supuesto en la carpeta de nuestro proyecto:


 php composer require "mercadopago/dx-php:dev-master"  

Afortunadamente composer se ocupa de cargar en el autoload por si mismo, entonces prácticamente estamos listos para continuar con lo que sigue.

Posteriormente tenemos que obtener nuestras credenciales para pruebas, en mi caso coloqué las credenciales en el archivo .ENV


 MERCADOPAGO_ACCESS_TOKEN=aqui_pegas_tu_access_token  

A continuación en el archivo app/config/services.php agregué un array con los datos del env


   'mercadopago' => [  
     'access_token' => env('MERCADOPAGO_ACCESS_TOKEN')  
   ],  

En nuestro controlador solo bastará hacer uso del sdk y setear nuestras credenciales, yo tengo otras funciones extras en mi controlador  entonces por conveniencia lo ubiqué en mi constructor.


 <?php  
 use App\Payment;  
 use MercadoPago;  
 class MiControlador extends Controller  
 {  
   public function __construct()  
   {  
     // MercadoPago\SDK::setClientId(config('services.mercadopago.client_id'));  
     // MercadoPago\SDK::setClientSecret(config('services.mercadopago.client_secret'));   
     MercadoPago\SDK::setAccessToken(config('services.mercadopago.access_token'));  
   }  
   public function checkout(Request $request)  
   {  
     // valido que el usuario me envie su nombre y su email  
     Validator::make($request->all(), [  
       'nombre'     => 'required|max:255',  
       'email'      => 'required|email',  
     ])->validate();  
     // Crea un objeto de preferencia segun la documentación de MercadoPago  
     $name =$request->nombre;  
     $email =$request->email;  
     // una funcion que me crea un codigo de referencia que guardo en mi BD  
     $external_reference = $this->external_reference();  
     // inicia la creación de la preferencia  
     $preference = new MercadoPago\Preference();  
     // del artículo vendido  
     $item = new MercadoPago\Item();  
     $item->title = 'TITANIC LIMIT EDITION';  
     $item->quantity = 1;  
     $item->unit_price = 546;  
     $preference->items = array($item);  
     //del comprador  
     $payer = new MercadoPago\Payer();  
     $payer->name = $name;  
     $payer->email = $email;  
     $preference->payer = $payer;  
     // las url de retorno a donde mercadolibre nos redigirá despues de terminar el proceso de pago  
     // IMPORTANTE: No utilizar IPs en las url como 127.0.0.1 o 10.1.1.10 porque el SDK marcará un error       
     $preference->back_urls = array(  
       "success" => "http://misistema.test/checkout/success",  
       "failure" => "http://misistema.test/checkout/failure",  
       "pending" => "http://misistema.test/checkout/pending"  
     );  
     $preference->external_reference= $external_reference;  
     $preference->save();  
     // se guarda el pago en la BD en espera de las notificaciones por IPN  
     $payment = new Payment;  
     $payment->external_reference = $external_reference;  
     $payment->amount = $total;  
     $payment->name = $name;  
     $payment->email = $email;  
     $payment->estatus = 0;  
     $payment->save();  
     // retornamos a donde sea que este tu vista  
     return view('checkout')->with('preference',$preference);  
   }  
   // no olvidar crear las rutas   
   public function success(Request $request){  
     return 'success';     
   }  
   public function failure(Request $request){  
     return 'failure';  
   }  
   public function pending(Request $request){  
     return 'pending';  
   }  
 }  


luego en la vista simplemente imprimimos la preferencia

 <a href="<?php echo $preference->init_point; ?>">Pagar con Mercado Pago</a>  

Bueno con esto termino esta pequeña guía, espero te sea de utilidad ya que yo pasé horas y horas tratando de descifrar el sdk ya que honestamente la documentación deja un tanto que desear.

Saludos

Si te sirvió de algo y me quieres comprar un café pasa por aquí :)

Comentarios

Entradas populares de este blog

"php" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

Dompdf image not found or type unknown