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
11

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.