lawiet / laravel-yappy-checkout-v2
Integración para Laravel con Yappy en su version 2
Requires
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- orchestra/testbench: ^6.18
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2025-10-05 15:52:21 UTC
README
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.
Instalación
Para instalar, utiliza el siguiente comando:
composer require lawiet/laravel-yappy-checkout-v2
Si tienes Laravel 8 o superior. Para versiones
anteriores tienes agregar unas líneas a tu archivo config/app.php
, dentro de la llave
providers
y dentro de aliases
:
'providers' => [ // Otros paquetes por acá // ... Yappi\YappyCheckout\YappyCheckoutServiceProvider::class, ], 'aliases' => [ // Otros aliases por acá // ... 'YappyCheckout' => Yappi\YappyCheckout\Facades\YappyCheckoutFacade::class, ],
Configuración
Agrega las siguientes variables a tu .env
(y a tu .env.example
en blanco si eres un buen
muchacho):
YAPPY_SECRET_KEY= YAPPY_MERCHANT_ID= YAPPY_MERCHANT_URL= YAPPY_IPN_URL=
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_IPN_URL | string |
URL del IPN. Esta es donde se realizará el llamado de parte de yappi indicando el estado del pago. |
Si quieres tener más control sobre la configuración, puedes hacer publish del archivo de configuración:
php artisan vendor:publish --provider="Yappi\YappyCheckout\YappyCheckoutServiceProvider"
Esto agregará el archivo config/yappy.php
a tu proyecto.
Uso
crear una orden
use Yappi\YappyCheckout\YappyCheckout; class YapiController extends Controller { public function createPayment() { $yappyCheckout = new YappyCheckout(); $response = $yappyCheckout->createOrder( 'order-123', '66666666', 10.00, 0.00, 0.00, 10.00 ); ... } }
El método createOrder
devuelve Exception
si ha habido un error creando la orden.
Este método recibe los siguientes parámetros:
Variable | Tipo | Descripción |
---|---|---|
orderId |
string , int |
ID de la orden. |
phone |
string |
El número de teléfono del usuario. |
total |
float |
Total de la compra. |
tax |
float |
Impuesto de la compra (opcional). |
discuount |
float |
Descuento de la compra (opcional). |
subtotal |
float |
Subtotal de la compra (opcional). |
Si todo sale bien, se devuelve la siguiente respuesta:
Variable | Tipo | Descripción |
---|---|---|
transactionId |
string |
ID yappi de la orden. |
token |
string |
Token de sesion. |
documentName |
string |
Documento de sesión. |
IPN
Una vez que se haya hecho o se cancele la transacción, se recibira la notificación
a través de YAPPY_IPN_URL
:
YAPPY_IPN_URL="${APP_URL}/api/yappi/ipn"
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
.
// Para Laravel 8 en adelante Route::get('/yappi/ipn', [YappiController::class, 'ipn']); // O para versiones anteriores Route::get('/yappi/ipn.php', 'YappiController@ipn');
Y en nuestro controlador.
use Yappi\YappyCheckout\YappyCheckout; use Illuminate\Http\Request; class YappiController extends Controller { public function yappyPaymentStatus(Request $request) { $yappyCheckout = new YappyCheckout(); $result = $yappyCheckout->getStatus($request->all()); if ($result != 'SUCCESS') { // aqui la logica de error ... } // aqui la logica de exito ... } }
El método getStatus
retorna el status en el que ha quedado el pago.
Los valores de status
son:
Código | Descripción |
---|---|
SUCCESS | Ejecutado. El cliente confirmó el pago y se completó la compra. |
FAILED | Rechazado. El cliente rechazó el proceso de pago. |
CANCELLED | Cancelado. El cliente inició el proceso, pero canceló el pedido en el app de Banco General. |
EXPIRED | Expirado. El cliente no confirma el pago dentro del tiempo que dura la vida del pedido. |
Contribuir
Si deseas contribuir, siéntete libre de subir tu pull request usando el estándar PSR-2 que es el que usa Laravel.
Autor
Desarrollado por Lawiet. Este proyecto ha sido realizado con la guia del proyecto shino47/laravel-yappy-checkout el cual ha sido deprecado