krugerdavid / laravel-pagopar
Laravel integration for Pagopar payment gateway
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.8
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- pestphp/pest: ^2.36|^3.0|^4.0
- pestphp/pest-plugin-laravel: ^2.4|^3.0|^4.0
README
Laravel integration for Pagopar payment gateway. Pagopar ofrece múltiples medios de pago: transferencia bancaria, billeteras, tarjetas y más.
Why this package exists
Pagopar es una pasarela de pagos muy usada en Paraguay. Este paquete encapsula la API de iniciar transacción, consultar estado y verificar webhooks en una interfaz Laravel: Facade, Manager inyectable, DTOs tipados (PagoparBuyer, PagoparItem, PagoparPaymentRequest) y manejo de errores con excepciones. Evita duplicar lógica de tokens SHA1 y estructura de requests.
Requirements
- PHP 8.1+ (PHP 8.3+ requerido para Laravel 13)
- Laravel 10, 11, 12 o 13
Installation
composer require krugerdavid/laravel-pagopar
Configuration
Publicar la config:
php artisan vendor:publish --tag=pagopar-config
Variables de entorno (.env):
PAGOPAR_PUBLIC_KEY=your_public_token
PAGOPAR_PRIVATE_KEY=your_private_token
PAGOPAR_URL=https://api.pagopar.com
PAGOPAR_TIMEOUT=30
Usage
Crear un pago
use KrugerDavid\Pagopar\Facades\Pagopar; use KrugerDavid\Pagopar\DTOs\PagoparBuyer; use KrugerDavid\Pagopar\DTOs\PagoparItem; use KrugerDavid\Pagopar\DTOs\PagoparPaymentRequest; $buyer = new PagoparBuyer( name: 'Juan Perez', email: 'juan@example.com', document: '1234567', phone: '+595981123456' ); $items = [ new PagoparItem( name: 'Producto de Prueba', price: 10000, quantity: 1 ) ]; $request = new PagoparPaymentRequest( orderId: 'ORDER-123', buyer: $buyer, items: $items, maxPaymentDate: now()->addDays(2)->format('Y-m-d H:i:s'), description: 'Descripción del pedido' ); $response = Pagopar::createPayment($request); if ($response['hash']) { $checkoutUrl = Pagopar::getCheckoutUrl($response['hash']); return redirect($checkoutUrl); }
Consultar estado del pedido
$status = Pagopar::getOrderStatus($hash); if (!empty($status) && $status[0]['pagado']) { // El pedido ha sido pagado }
Verificar token del webhook
public function handleWebhook(Request $request) { $hash = $request->input('resultado.0.hash_pedido'); $token = $request->input('resultado.0.token'); if (Pagopar::verifyWebhookToken($hash, $token)) { // Token válido, procesar el pago } }
Related packages
- laravel-bancard — Bancard VPOS (tarjetas de crédito/débito)
- laravel-bancard-qr — Bancard QR (pagos con código QR)
Used in Paraguay / production-ready
Este paquete está en uso en producción en Paraguay, incluyendo portales de municipalidades y comercios. Pagopar es una de las pasarelas más utilizadas para pagos con transferencia y billeteras en el país.
Security
If you discover any security related issues, please email david.kruger@duplaa.com instead of using the issue tracker.
Credits
License
MIT