Comparte en Facebook Twitter Google+

laravel-5-cashier-stripe-2

Stripe es un servicio web que cuenta con una API que permite manejar sistemas de pagos en línea y gracias a la interfaz de Cashier que ofrece Laravel 5 podemos integrar esta API fácilmente a cualquiera de nuestros proyectos.

Hoy les enseñaré sobre la integración del componente y su uso básico, veamos.

Antes de continuar es importante aclarar que para poder activar tu cuenta en este servicio debes tener una dirección, Tax ID y cuenta bancaria en cualquiera de los países en los cuales esta disponible stripe, para más información visita esta página.

Cómo crear una cuenta de Stripe

Primero debemos crear una cuenta de usuario en el portal http://stripe.com para obtener nuestras credenciales de acceso y uso de su API.

Crear un nuevo plan de suscripción

Stripe nos permite crear planes de suscripción, de esta forma podemos indicar cual es el costo y la validez de cada pago en el portal, así podremos usar esta información para permitir el acceso a ciertas áreas del sitio web.

stripe-plan

Integrar Cashier a nuestro proyecto en Laravel 5

Cashier es la interfaz que provee Laravel para acceder a la API de Stripe y poder usar todas las funcionalidades de la plataforma desde nuestra aplicación.

Para instalar el paquete agregamos la siguiente línea al archivo composer.json del proyecto.

Posteriormente desde la consola de comandos ejecutamos:

Como siempre debemos agregar el Service Provider al array de providers en el archivo app/config/app.php:

Configurando la base de datos

Cashier requiere de ciertos campos adicionales en la tabla de usuarios de la base de datos del proyecto, primero iniciamos configurando la conexión para proceder a la migración.

Editamos el archivo .env

Para no agregar los campos manualmente ejecutamos desde la consola

esto creará una nueva migración con los cambios necesarios para la tabla users.

Con esto ya podemos ejecutar la migración con

Configurando el modelo User.php

Debemos configurar el modelo de usuarios para poder usar las funciones de Cashier sobre el objeto User de la siguiente forma

Agregar las credenciales de Stripe

Debemos asociar la cuenta que creamos al inicio a nuestra app agregando las credenciales en el archivo config/services.php

En nuestro perfil de stripe entramos a configuración y buscamos la sección de API keys

stripe-key

copiamos la clave Test Secret Key (para las pruebas) y la agregamos al archivo .env

Agregar botón de pago

Para agregar el botón de pago nos dirigimos al siguiente enlace

https://stripe.com/docs/tutorials/checkout

Buscamos la opción Embedded Form y veremos el código que podemos usar para insertar un formulario de pago (la clave que se muestra en el código es nuestra clave pública, por lo cual no es necesario agregarla nuevamente, solo copia y pega el texto de la documentación). puedes editar un poco el código para obtener algo como esto

Lo agregamos en una nueva vista llamada payment.blade.php

Nota: en este caso agregamos un campo hidden _token para evitar el error TokenMissMatchException() por la protección CSRF de Laravel.

Creando las nuevas rutas

y para no complicar mucho este pequeño ejemplo hacemos uso del controlador HomeController.php, agregando una nueva función llamada payment()

Comprobamos que todo este bien creando un nuevo usuario desde url_de_tu_proyecto/public/register y posteriormente ingresamos a url_de_tu_proyecto/public/payment

Registrando el pago

Nuevamente usando el controlador HomeController creamos una función llamada subscription()

recuerda agregar la clase request en la cabecera con

Con el usuario logueado te diriges a url_de_tu_proyecto/public/payment haces click sobre el botón y agregas la información del pago, para pruebas puedes usar como numero de tarjeta 4242 4242 4242 4242 , una fecha de vencimiento válida y 3 dígitos de seguridad al azar.

stripe-test

y si todo sale bien recibirás en pantalla el mensaje you are subscribed now

Comprobando el pago en stripe.com

Para verificar el pago recibido puedes acceder al enlace https://dashboard.stripe.com/test/payments con tu cuenta y ver el detalle del pago realizado.

stripe-check
Lecturas recomendadas

Mas información 

Aprende PHP, Laravel y más por sólo 999 al mes: ver planes.

Lección anterior Aprende a integrar Ckeditor en Laravel con Blade Lección siguiente Integra una barra de depuración a Laravel