abel-olguin / laravel-openpay-plans
Librería para manejar planes con Laravel y la plataforma de pago Openpay.
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0
- openpay/sdk: ^3.0
Requires (Dev)
- orchestra/testbench: ^8.18
- phpunit/phpunit: ^10.5
README
#Laravel Openpay plans
Laravel Openpay plans es una librería de laravel para gestionar las suscripciones de openpay.
Instalación
composer require abel-olguin/laravel-openpay-plans
php artisan vendor:publish --provider="AbelOlguin\OpenPayPlans\PlansProvider"
php artisan migrate
Esto generará los archivos necesarios para el funcionamiento: vistas, config, traducciones y migraciones.
De igual manera necesitas configurar tu archivo .env
con los siguientes datos de openpay:
PLANS_OPEN_ID=TU_ID_DE_OPENPAY
PLANS_OPEN_API_KEY=TU_API_KEY_DE_OPENPAY
PLANS_OPEN_COUNTRY=TU_CODIGO_DE_CIUDAD_DE_OPENPAY #(MEXICO ES MX)
PLANS_OPEN_PRODUCTION=true #(Si es true se generaran cargos reales)
En el modelo de usuarios debes usar el trait HasPlans
:
namespace App\Models; use AbelOlguin\OpenPayPlans\Models\Traits\HasPlans; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use HasPlans; }
Para usar las rutas por defecto puedes usar:
\AbelOlguin\OpenPayPlans\Routes\Plans::routes();
Si prefieres hacer tus propias rutas te recomiendo usar el trait \AbelOlguin\OpenPayPlans\Controllers\Traits\Subscriptions
use AbelOlguin\OpenPayPlans\Controllers\Traits\Subscriptions; class SubscriptionController { use Subscriptions; ... }
Middleware
Esta librería tiene dos middleware disponibles los cuales se pueden usar de la siguiente forma
Route::middleware('plans:pro,trial')->get();
El middleware dejará pasar a cualquier usuario que tenga el plan pro o el plan trial
Route::middleware('plans.active')->get();
El middleware dejará pasar a cualquier usuario que tenga un plan activo, sea cual sea.
Gates
Hay tres gates disponibles los cuales se pueden usar de la siguiente forma:
use Illuminate\Support\Facades\Gate; if (!Gate::forUser($user)->allows('has-plan', 'trial')) { abort(403); }
- El gate responderá con un error 403 en caso de que el usuario no tenga el plan trial
use Illuminate\Support\Facades\Gate; if (!Gate::forUser($user)->allows('has-active-plan')) { abort(403); }
- El gate responderá con un error 403 en caso de que el usuario no tenga un plan activo
use Illuminate\Support\Facades\Gate; if (!Gate::forUser($user)->allows('create-plan')) { abort(403); }
- El gate responderá con un error 403 en caso de que el usuario no pueda crear un plan, esto se determina usando la configuracion,
si la llave
allow_multiple_plans
estrue
, permitira que el usuario pueda seguir suscribiendose a planes si, por el contrario, esfalse
significa que el usuario solo puede suscribirse a un plan y si intenta suscribirse a otros no podra hacerlo, de igual forma este gate válida que el usuario no se suscriba al mismo plan.
Comandos
Hay 3 comandos disponibles:
- Una vez que creas tus planes en base de datos deberás usar el comando:
php artisan plans:generate
- Para eliminar todos los planes puedes usar:
php artisan plans:delete
- Para desactivar las suscripciones que no han sido pagadas, fueron canceladas o ya terminaron (pensado para ser usado en un schedule):
php artisan plans:check
Contributing
Los PR son bienvenidos :)