A simple laravel package for Subscriptions.
All ideas are welcome, please send your issue in: Send your issues in here
You can install the package via composer:
This package work in laravel 5.8 or later because Carbon is updated to 2.0.
composer require sagitarius29/laravel-subscriptions
Add Sagitarius29\LaravelSubscriptions\LaravelSubscriptionsServiceProvider::class
to your file config/app.php
'providers' => [
/**
* Some Providers
*/
Sagitarius29\LaravelSubscriptions\LaravelSubscriptionsServiceProvider::class
]
Publish package config file and migrations with the following command:
php artisan vendor:publish --provider="Sagitarius29\LaravelSubscriptions\LaravelSubscriptionsServiceProvider"
Then run migrations:
php artisan migrate
- Create plans and his features or consumables. (consumables is in development)
- Manage your plans: get all plans, disable, delete, etc.
- Your user can subscribe to a plan.
- The user can renew, cancel, upgrade or downgrade his subscription.
- Group your plans now is very simple.
- A lot more
<?php
use Sagitarius29\LaravelSubscriptions\Traits\HasSubscriptions;
class User extends Authenticable
{
use HasSubscriptions; // Add this line for use subscriptions
<?php
use Sagitarius29\LaravelSubscriptions\Entities\Plan;
use Sagitarius29\LaravelSubscriptions\Entities\PlanFeature;
use \Sagitarius29\LaravelSubscriptions\Entities\PlanConsumable;
use Sagitarius29\LaravelSubscriptions\Entities\PlanInterval;
$plan = Plan::create(
'name of plan', //name
'this is a description', //description
1 // sort order
);
$features = [
PlanFeature::make('listings', 50),
PlanFeature::make('pictures_per_listing', 10),
PlanFeature::make('listing_duration_days', 30),
PlanFeature::make('listing_title_bold', true),
PlanConsumable::make('number_of_contacts', 10),
];
// adding features to plan
$plan->features()->saveMany($features);
$plan->isFree(); // return true;
// adding interval of price
$interval = PlanInterval::make(PlanInterval::MONTH, 1, 4.90);
$plan->setInterval($interval);
$plan->isFree(); // return false;
$plan->isNotFree(); // return true;
<?php
use Sagitarius29\LaravelSubscriptions\Entities\Plan;
$user = \Auth::user();
$plan = Plan::find(1);
$user->subscribeTo($plan);
$user->hasActiveSubscription(); // return true;
$currentSubscription = $user->getActiveSubscription(); // return Subscription object;
<?php
use Sagitarius29\LaravelSubscriptions\Entities\Plan;
$user = \Auth::user();
$firstPlan = Plan::find(1);
$secondPlan = Plan::find(2);
//upgrade or downgrade depending of the price
$user->changePlanTo($secondPlan);
<?php
$user = \Auth::user();
// the subscription is will end in the expiration date
$user->unsubscribe();
// the subscription end now
$user->forceUnsubscribe();
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email ronnie.adolfo@gmail.com instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.