Paquete para mostrar un modal de suscripción en la parte inferior derecha de aplicaciones Laravel
laravel-subscription-modal/subscription-modal is a Laravel package for paquete para mostrar un modal de suscripción en la parte inferior derecha de aplicaciones laravel.
It currently has 0 GitHub stars and 6 downloads on Packagist (latest version v0.0.4).
Install it with composer require laravel-subscription-modal/subscription-modal.
Discover more Laravel packages by laravel-subscription-modal
or browse all Laravel packages to compare alternatives.
Last updated
Este paquete de Laravel se comunica con una API HTTP para obtener el estado de la suscripción y mostrar un modal de suscripción en la parte inferior derecha de la aplicación. Utiliza un token de Sanctum almacenado en el .env para autenticarse con la API.
El paquete muestra un badge flotante con los días restantes de suscripción. Al hacer clic en el badge, se abre un modal con los detalles de la suscripción y el historial de facturas. Los colores del badge cambian según los días restantes: verde (normal), naranja (advertencia), rojo (crítico).
Si la suscripción expira (0 días restantes), se muestra un modal overlay bloqueante que no se puede cerrar hasta que se verifique el pago.
composer require tu-namespace/laravel-subscription-modal
php artisan vendor:publish --provider="TuNamespace\LaravelSubscriptionModal\LaravelSubscriptionModalServiceProvider"
Añadir en tu archivo .env:
SUBSCRIPTION_API_URL=https://dbbk.officenet.pro/api/check-license
SUBSCRIPTION_API_TOKEN=tu_token_sanctum_aqui
SUBSCRIPTION_CHECK_INTERVAL=300
Nota: El token debe ser un token de Sanctum válido para autenticarse con la API.
Auto-inclusión (Recomendado): El componente se incluye automáticamente en todas las vistas. No necesitas hacer nada más.
Inclusión manual: Si prefieres controlar dónde aparece el componente, puedes incluirlo manualmente en tu layout principal:
<!DOCTYPE html>
<html>
<head>
<!-- ... -->
@livewireStyles
</head>
<body>
<!-- Tu contenido -->
@livewire('subscription-modal::subscription-component')
@livewireScripts
</body>
</html>
Auto-inclusión automática: El componente se incluye automáticamente en aplicaciones FilamentPHP. No necesitas hacer nada más.
Inclusión manual: Si prefieres controlar manualmente la inclusión, puedes:
php artisan vendor:publish --tag=subscription-modal-filament
// En resources/views/vendor/filament/components/layouts/app.blade.php
@include('vendor.subscription-modal.filament.components.subscription-modal')
O usar el componente Livewire directamente:
@livewire('subscription-modal::subscription-component')
| Variable | Descripción | Por defecto | Requerido |
|----------|-------------|-------------|-----------|
| SUBSCRIPTION_API_URL | URL de la API de verificación de licencia | - | ✅ |
| SUBSCRIPTION_API_TOKEN | Token de Sanctum para autenticación | - | ✅ |
| SUBSCRIPTION_CHECK_INTERVAL | Intervalo de verificación en segundos | 300 | ❌ |
| SUBSCRIPTION_AUTO_INCLUDE | Auto-incluir el componente en todas las vistas | true | ❌ |
Puedes personalizar el comportamiento editando config/subscription-modal.php:
return [
'api_url' => env('SUBSCRIPTION_API_URL'),
'api_token' => env('SUBSCRIPTION_API_TOKEN'),
'check_interval' => env('SUBSCRIPTION_CHECK_INTERVAL', 300),
'warning_days' => 5, // Días para mostrar advertencia (naranja)
'critical_days' => 2, // Días para mostrar crítico (rojo)
'position' => 'bottom-right', // Posición del badge
'auto_include' => true, // Auto-incluir el componente
'auto_include_exclude_routes' => [
'auth/*',
'login',
'logout',
'register',
'password/*',
'admin/*',
'api/*',
],
];
Este paquete es compatible con:
emit() para eventos y protected $listenersEl paquete se auto-registra y funciona automáticamente una vez configurado.
Por defecto, el componente se incluye automáticamente en todas las vistas de tu aplicación. Esto significa que:
@livewire('subscription-modal::subscription-component') en tus layoutsSi prefieres controlar manualmente dónde aparece el componente, puedes deshabilitar la auto-inclusión:
SUBSCRIPTION_AUTO_INCLUDE=false
Y luego incluir manualmente el componente donde lo necesites:
@livewire('subscription-modal::subscription-component')
Puedes personalizar qué rutas se excluyen de la auto-inclusión en config/subscription-modal.php:
'auto_include_exclude_routes' => [
'auth/*',
'login',
'logout',
'register',
'password/*',
'admin/*',
'api/*',
'telescope/*',
'horizon/*',
],
El backend debe devolver el estado de la suscripción en un objeto JSON con la siguiente estructura:
{
"user": "[email protected]",
"license_status": [
{
"license_status": {
"dias": 0,
"overdue": true,
"last_payment_date": "2024-12-10",
"invoices": [
{
"id": 1,
"end_date": "2025-08-10"
},
{
"id": 2,
"end_date": "2024-12-10"
}
]
}
}
]
}
{
"user": "[email protected]",
"license_status": [
{
"license_status": "No active subscription found"
}
]
}
| Campo | Tipo | Descripción |
|-------|------|-------------|
| user | string | Email del usuario |
| license_status | array | Array de estados de licencias por base de datos |
| license_status[].license_status | object/string | Estado de la licencia o mensaje de error |
| license_status[].license_status.dias | integer | Días restantes de suscripción |
| license_status[].license_status.overdue | boolean | Si la suscripción está vencida |
| license_status[].license_status.last_payment_date | string | Fecha del último pago (YYYY-MM-DD) |
| license_status[].license_status.invoices | array | Array de facturas |
| license_status[].license_status.invoices[].id | integer | ID de la factura |
| license_status[].license_status.invoices[].end_date | string | Fecha de fin de la factura (YYYY-MM-DD) |
Para desarrollo local, puedes usar:
# En tu proyecto de prueba
composer config repositories.subscription-modal path /ruta/al/paquete
composer require tu-namespace/laravel-subscription-modal:dev-master
invoices con end_datephp artisan vendor:publish --tag=subscription-modal-filamentMIT License