07 Implementar pagos con Paypal – Taller de desarrollo de una Tienda en Línea

Hola, bienvenido(a), al Post 07 del Taller de Desarrollo de una Tienda en línea con Bootstrap, Laravel 5.1 y la API de Paypal.

Hoy vamos a implementar pagos con Paypal para nuestra tienda, para ello vamos a utilizar el API de Paypal.

Para lograrlo tenemos que seguir una serie de pasos:

1) CUENTA DE PAYPAL

Es necesario que tengamos una cuenta en Paypal, después hay que iniciar sesión y realizar lo siguiente:

  • Ir al Dashboard
  • Crear una app
  • Obtener el client_id y el secret
  • Crear 2 usuarios, uno de tipo Business (el que venderá) y otro de tipo Personal (el que realizara los pedidos).

2) INSTALAR PACKAGE

Vamos a instalar el package rest-api-sdk-php, lo buscamos en Packagist, podemos revisar su página en Github para ver los prerrequisitos para instalarlo.

Lo instalamos vía Composer: composer require paypal/rest-api-sdk-php

3) ARCHIVO DE CONFIGURACIÓN

Tenemos que crear un archivo llamado paypal.php en la carpeta config de nuestra app, en donde pondremos los datos client_id y secret, además de establecer si trabajaremos en el modo sandbox (pruebas) o live.

4) RUTAS

Establecemos las rutas en nuestro Router, la primera servirá para enviar información a Paypal y la segunda para recibir la respuesta que nos de.

5) CONTROLADOR

Ahora vamos a crear el Controlador PaypalController en el que pondremos los métodos postPayment y getPaymentStatus, lo hacemos desde la línea de comandos:

php artisan make:controller PaypalController –plain

Definimos nuestros métodos:

6) VISTA MESSAGE

Cuando Paypal redirecciona al usuario a nuestro sitio y se concreta o cancela la venta lo vamos a redireccionar al home y le vamos a mostrar un mensaje indicándole que la compra se realizo de forma satisfactoria o que se cancelo, dicho mensaje se lo pasamos mediante una variable de sesión de tipo flash (solo se mostrará una vez).

Para lograr esto tenemos que crear la vista parcial message dentro de views/store/partials:

Ahora incluimos esa vista en nuestro template:

7) MODELOS Y MIGRACIONES DE ORDER Y ORDERITEM

Para guardar la información de los pedidos es necesario que creemos nuestros Modelos y Migraciones para las tablas orders y order_items, lo hacemos desde la línea de comandos:

php artisan make:model Order -m

y

php artisan make:model OrderItem -m

Ahora modificamos los archivos de migraciones de acuerdo al esquema de nuestra base de datos:

La información la guardamos dentro del método getPaymentStatus en nuestro controlador PaypalController llamando al método saveOrder, que se encargara de guardar la información del pedido y este a su vez llamara al método saveOrderItem por cada item del pedido para guardar la información de cada producto.

Lo único que falta es cambiar el enlace que desencadenara todo lo que hemos hecho, dicho enlace se encuentra en nuestra vista order_detail:

Para seguir pasa a paso toda la implementación te dejo a continuación el vídeo de la clase:

Pronto actualizare la versión del proyecto que tenemos en Github con el nombre de tienda, para que lo compares con tu propia versión.

Te comparto también algunos enlaces con información valiosa para este tutorial:

  1. Página developers de Paypal
  2. Package rest-api-sdk-php en Packagist
  3. Documentación de la API de Paypal
  4. Listado de códigos para monedas de diferentes países
  5. Ejemplos REST API
  6. Tutorial: Integrate PayPal SDK Into Laravel 4

Eso es todo para este post, compártelo por favor.

Con este post terminamos todo el front de nuestra app, es decir toda la parte de nuestra app que le ofrecemos al usuario, solo falta desarrollar un Back o Panel de Administración para que el admin pueda gestionar la información de la tienda, eso lo haremos en los siguientes posts.

Espero tus comentarios y nos vemos en el siguiente 🙂