Looking to hire Laravel developers? Try LaraJobs

recurrente-laravel maintained by arrendales

Description
SDK no oficial de Recurrente (pasarela de pagos de Guatemala) para Laravel: checkouts, suscripciones, productos y verificación de webhooks.
Author
ArrendaLes
Last update
2026/06/21 07:48 (dev-master)
License
Links
Downloads
0

Comments
comments powered by Disqus

Recurrente para Laravel

SDK no oficial de Recurrente (pasarela de pagos de Guatemala) para Laravel. Permite crear checkouts, productos con precios recurrentes (suscripciones), cancelar suscripciones y verificar la firma de los webhooks.

Paquete extraído del proyecto ArrendaLes. Framework: Laravel 11/12, PHP 8.2+.

Instalación

composer require arrendales/recurrente-laravel
php artisan vendor:publish --tag=recurrente-config

Configura tus llaves en .env (o inyéctalas en runtime, ver abajo):

RECURRENTE_PUBLIC_KEY=pk_...
RECURRENTE_SECRET_KEY=sk_...
RECURRENTE_WEBHOOK_SECRET=whsec_...
RECURRENTE_MODE=test

Uso básico

use Recurrente\Laravel\Facades\Recurrente;
use Recurrente\Laravel\DataObjects\CheckoutData;

$checkout = Recurrente::checkouts()->create(
    CheckoutData::make()
        ->withPrice('price_abc')              // o ->withInlineItem('Plan Pro', 29900)
        ->successUrl(route('billing.success'))
        ->cancelUrl(route('billing.cancel'))
        ->metadata(['organization_id' => $org->id])
        ->paymentMethods(card: true, bankTransfer: true)
);

return redirect($checkout['checkout_url']);

Llaves en runtime (multi-cuenta / desde base de datos)

use Recurrente\Laravel\RecurrenteClient;

$client = new RecurrenteClient(secretKey: $secretFromDb, publicKey: $publicFromDb);
$client->subscriptions()->cancel($subscriptionId);

Productos recurrentes (suscripciones)

$product = Recurrente::products()->createRecurring(
    name: 'Plan Pro Mensual',
    amountInCents: 29900,
    currency: 'GTQ',
    billingInterval: 'month',
    freeTrialDays: 14,
);

Webhooks

use Recurrente\Laravel\Webhooks\WebhookVerifier;
use Recurrente\Laravel\Webhooks\WebhookEvent;

public function handle(Request $request, WebhookVerifier $verifier)
{
    $ok = $verifier->verify(
        payload: $request->getContent(),
        headers: $request->headers->all(),
        secret:  config('recurrente.webhook_secret'),
    );

    abort_unless($ok, 400);

    $event = WebhookEvent::fromArray($request->json()->all());

    if ($event->isPaymentCompleted()) {
        // activar suscripción usando $event->metaValue('organization_id')
    }
}

Esquemas de firma soportados: svix (por defecto) y hmac. Configurable en config/recurrente.php.

Tests

composer install
vendor/bin/phpunit

Licencia

MIT.