Download the PHP package cityhunter/laravel-pricing-plans without Composer
On this page you can find all versions of the php package cityhunter/laravel-pricing-plans. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download cityhunter/laravel-pricing-plans
More information about cityhunter/laravel-pricing-plans
Files in cityhunter/laravel-pricing-plans
Package laravel-pricing-plans
Short Description A package provide pricing plans for Laravel.
License MIT
Homepage https://github.com/henoc35/laravel-pricing-plans
Informations about the package laravel-pricing-plans
Laravel Pricing Plans
Easy provide pricing plans for Your Laravel 8.+ Application.
- Main features
- TODO
- Requirements
- Installation
- Composer
- Service Provider
- Config file and Migrations
- Contract and Traits
- Config File
- Models
- Feature model
- Plan model
- Group model
- PlanFeature model
- PlanGroup model
- PlanSubscription model
- PlanSubscriptionUsage model
- Events
- SubscriptionRenewed event
- SubscriptionCanceled event
- SubscriptionPlanChanged event
- Usage
- Create features and plan
- Create a group of plans
- Creating subscriptions
- Subscription Ability
- Record Feature Usage
- Reduce Feature Usage
- Clear The Subscription Usage Data
- Check Subscription Status
- Renew a Subscription
- Cancel a Subscription
- Scopes
- Changelog
- Testing
- Contributing
- Security
- Credits
- License
Main features
Easy provide pricing plans for Your Laravel 8.+ Application.
TODO
- [ ] Caching some select query
- [ ] Add unit test scripts
- [ ] Make better documents
Requirements
- php >=7.3
- Laravel 8.+
Installation
Composer
Begin by pulling in the package through Composer.
Service Provider
Next, if using Laravel 8.+, you done. If using Laravel 5.4, you must include the service provider within
your config/app.php
file.
Config file and Migrations
Publish package config file and migrations with the command:
Then run migrations:
Contract and Traits
Add Laravel\PricingPlans\Contacts\Subscriber
contract and Laravel\PricingPlans\Models\Concerns\Subscribable
trait to
your subscriber model (Eg. User
).
See the following example:
Config File
You can configure what database tables, what models to use, list of positive words will use.
Definitions:
- Positive Words: Are used to tell if a particular feature is enabled. E.g., if the feature
listing_title_bold
has the valueY
(Y is one of the positive words) then, that means it's enabled.
Take a look to the config/plans.php
config file for more details.
Models
PricingPlans uses 7 models under namespace Laravel\PricingPlans\Models
. You can change to using extended classes of it
by changing models class in config file:
Feature model
This model is model object of feature
Plan model
This model is model object of plan
Group model
This model is model object of group
PlanFeature model
This model is relation model object between plan and feature
PlanGroup model
This model is relation model object between plan and group
PlanSubscription model
This model is relation model object between plan and subscriber
PlanSubscriptionUsage model
This model is object for counting usage feature
For more details take a look to each model and the Laravel\PricingPlans\Models\Concerns\Subscribable
trait.
Events
Events are under the namespace Laravel\PricingPlans\Events
. The following are the events triggered by the package.
SubscriptionRenewed
event
Fired when a subscription is renewed using the renew()
method.
SubscriptionCanceled
event
Fired when a subscription is canceled using the cancel()
method.
SubscriptionPlanChanged
event
Fired when a subscription's plan is changed. This will be triggered once the PlanSubscription
model is saved. Plan
change is determine by comparing the original and current value of plan_id
.
Usage
Create features and plan
Create a group of plans
Creating subscriptions
You can subscribe a user to a plan by using the newSubscription()
function available in the Subscribable
trait.
First, retrieve an instance of your subscriber model, which typically will be your user model and an instance of the
plan your user is subscribing to. Once you have retrieved the model instance, you may use the newSubscription
method
to create the model's subscription.
The first argument passed to newSubscription
method should be the name of the subscription. If your application offer
a single subscription, you might call this main
or primary
. The second argument is the plan instance your user is
subscribing to.
Subscription Ability
There's multiple ways to determine the usage and ability of a particular feature in the user subscription, the most
common one is canUse
:
The canUse
method returns true
or false
depending on multiple factors:
- Feature is enabled.
- Feature value isn't
0
. - Or feature has remaining uses available.
Other methods are:
enabled
: returnstrue
when the value of the feature is a positive word listed in the config file.consumed
: returns how many times the user has used a particular feature.remainings
: returns available uses for a particular feature.value
: returns the feature value.
All methods share the same signature: e.g.
$user->subscription('main')->ability()->consumed(Feature::FEATURE_UPLOAD_IMAGES);
.
Record Feature Usage
In order to efectively use the ability methods you will need to keep track of every usage of each feature
(or at least those that require it). You may use the record
method available through the user subscriptionUsage()
method:
The record
method accept 3 parameters: the first one is the feature's code, the second one is the quantity of uses to
add (default is 1
), and the third one indicates if the addition should be incremental (default behavior), when
disabled the usage will be override by the quantity provided. E.g.:
Reduce Feature Usage
Reducing the feature usage is almost the same as incrementing it. Here we only substract a given quantity (default
is 1
)
to the actual usage:
Clear The Subscription Usage Data
Check Subscription Status
For a subscription to be considered active one of the following must be true
:
- Subscription has an active trial.
- Subscription
ends_at
is in the future.
Alternatively you can use the following methods available in the subscription model:
Canceled subscriptions with an active trial or
ends_at
in the future are considered active.
Renew a Subscription
To renew a subscription you may use the renew
method available in the subscription model. This will set a
new ends_at
date based on the selected plan and will clear the usage data of the subscription.
Canceled subscriptions with an ended period can't be renewed.
Cancel a Subscription
To cancel a subscription, simply use the cancel
method on the user's subscription:
By default the subscription will remain active until the end of the period, you may pass true
to end the
subscription immediately:
Scopes
Subscription Model
Changelog
See all change logs in CHANGELOG
Testing
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email to Oanh Nguyen instead of using the issue tracker.
Credits
I forked and recreated this project from gerardojbaez/laraplans project in mid-2017. Thank Gerardo Baez
- Oanh Nguyen
- Gerardo Baez
- All Contributors
License
This project is released under the MIT License.
Copyright © 2017-2018 Oanh Nguyen.
All versions of laravel-pricing-plans with dependencies
ext-json Version *
illuminate/database Version ^8.0
illuminate/support Version ^8.0
nesbot/carbon Version ^2.43.0