Download the PHP package shino47/laravel-yappy-checkout without Composer
On this page you can find all versions of the php package shino47/laravel-yappy-checkout. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download shino47/laravel-yappy-checkout
More information about shino47/laravel-yappy-checkout
Files in shino47/laravel-yappy-checkout
Package laravel-yappy-checkout
Short Description Integración para Laravel del Botón de Pago Yappy
License MIT
Informations about the package laravel-yappy-checkout
Laravel Yappy Checkout
Implementación del Botón de Pago Yappy para Laravel.
Este paquete está basado en la Librería en PHP del sitio web de Banco General y nació porque a muchos no nos agrada la idea de versionar librerías.
Instalación
Para instalar, utiliza el siguiente comando:
Si tienes Laravel 5.5 o superior, esto es todo (gracias al auto-discovery). Para versiones
anteriores tienes agregar unas líneas a tu archivo config/app.php
, dentro de la llave
providers
y dentro de aliases
:
Configuración
Agrega las siguientes variables a tu .env
(y a tu .env.example
en blanco si eres un buen
muchacho):
Variable | Tipo | Descripción |
---|---|---|
YAPPY_SECRET_KEY | string |
Clave secreta del comercio. |
YAPPY_MERCHANT_ID | string |
ID del comercio. |
YAPPY_MERCHANT_URL | string |
URL de comercio. Normalmente es igual a APP_URL, pero en ambientes de desarrollo APP_URL puede tomar valores locales. |
YAPPY_SUCCESS_URL | string |
URL a la cual se redireccionará al usuario cuando se ejecute correctamente la transacción. |
YAPPY_FAIL_URL | string |
URL a la cual se redireccionará al usuario en caso de que cancele la transacción o haya algún error. |
YAPPY_LOGS_ENABLED | bool |
Indica si registra errores en los logs. Por defecto es true . |
Si quieres tener más control sobre la configuración, puedes hacer publish del archivo de configuración:
Esto agregará el archivo config/yappy.php
y el public/vendor/yappy/js/yappy-checkout.js
a tu
proyecto.
Si no quieres ambos archivos, puedes usar los tags config
y assets
:
Uso
El flujo del pago es sencillo y se resume en lo siguiente:
- El usuario presiona el botón de Pagar/Donar.
- Nuestra aplicación recibe la petición, valida las credenciales del comercio y genera la URL del pago.
- Si todo sale bien, el usuario es redireccionado a la URL generada. Ya aquí el usuario está fuera de nuestra aplicación. El flujo continúa del lado de Yappy.
- Luego de que se haga, falle o cancele la transacción, el usuario será redirigido a la URL
definida en
YAPPY_SUCCESS_URL
oYAPPY_FAIL_URL
. Yappy nos hará una petición a un endpoint de nuestra aplicación. - En esta petición Yappy nos envía el número de orden y el estado de la transacción. Somos libres de jugar con esta información en nuestra aplicación.
Agregar el botón a nuestras vistas
Primero, agregamos lo siguiente en donde queramos nuestro botón.
Lamentablemente, hicieron que el botón por fuerza sea un div
(en el CSS). En nuestro caso, no nos
vamos a complicar y vamos en envolver ese div
en una etiqueda a
o button
.
Como vemos, el botón acepta atributos de tipo data.
Atributo | Descripción |
---|---|
color |
Define el color del botón. Las opciones son dark y brand (por defecto). |
donacion |
Define el texto del botón. Por defecto es Pagar, pero si está presente dirá Donar. |
Lo siguiente será agregar el script que le dará estilo a nuestro botón. Podemos hacerlo de alguna de las siguientes maneras.
Usando un CDN
Usando el generado en el vendor:publish
Si hiciste vendor:publish
ya tienes este script en la carpeta public/vendor/yappy/js
, por lo que
podemos referenciarlo así:
Usando Laravel Mix
El método anterior tiene un inconveniente: si se actualiza, el cliente no lo notará si el navegador
no refresca el cache. Para solucionar eso, nos apoyamos en Laravel Mix. Abrimos el archivo
webpack.mix.js
de nuestra aplicación y agregamos lo siguiente:
Y en nuestras vistas:
Redireccionar al cliente
Una vez el usuario haya presionado el enlace o botón, la petición será recibida en nuestro controlador de la siguiente manera.
El método getPaymentUrl
devuelve null
si ha habido un error generando la URL; en ese caso
verifica las credenciales del comercio. Este método recibe los siguientes parámetros:
Variable | Tipo | Descripción |
---|---|---|
orderId |
string , int |
ID de la orden. Será usada por Yappy al finalizar la transacción. |
subtotal |
float |
Subtotal de la compra. |
tax |
float |
Impuesto de la compra. |
total |
float |
Total de la compra. |
phone |
string |
El número de teléfono del usuario (opcional). |
Si todo sale bien, el usuario será redirigido a esa URL generada.
Páginas de estado
Una vez que se haya hecho o se cancele la transacción, el usuario será redirigido a nuestro sitio
web. Para ello, debemos definir las variables YAPPY_SUCCESS_URL
y YAPPY_FAIL_URL
. Pueden ser,
por ejemplo:
Recuerda definir esas rutas en tu routes/web.php
y crearles sus vistas.
Recibir el estado de la transacción
Una vez terminada la transacción, Yappy nos enviará el estado a nuestro servidor a
mi-dominio.com/pagosbg.php
. Lamentablemente, no podemos cambiar esa ruta, así que toca trabajar
con ese .php
feíto en la URL.
Creamos nuestra ruta en routes/web.php
.
Y en nuestro controlador.
El método getPaymentStatus
recibe un array
con los parámetros de la petición y devuelve
null
en caso de error o un array
con el ID de la orden (order_id
) y el estado de la
transacción (status
). Los valores de status
pueden ser:
Código | Descripción |
---|---|
E | Ejecutado. El cliente confirmó el pago y se completó la compra. |
R | Rechazado. El cliente no confirma el pago dentro de los cinco minutos que dura la vida del pedido. |
C | Cancelado. El cliente inició el proceso, pero canceló el pedido en el app de Banco General. |
Nota: Yappy no está enviando peticiones cuando las transacciones quedan rechazadas (R
). El
tiempo de espera actualmente es cinco minutos, así que pasado este tiempo tendrás que actualizar
el estado a rechazado.
Contribuir
Si deseas contribuir, siéntete libre de subir tu pull request usando el estándar PSR-2 que es el que usa Laravel.
Usa inglés para el código y español para documentar. Código en inglés para que combine con tus aplicaciones Laravel y documentación en español, porque hay muchos desarrolladores con inglés malito.
Autor
Desarrollado con orgullo y pasión como todo un man serio por El Shino.