Once you define the recurring product, you need to setup features for the product, this feature basically what benefits user will get when he subscribed to that product, also it can be used to track usage and define quantities the user will get for each plan.
Features & plans will be rendered to build the pricing plan as shown in the picture below:
- Once you click on the feature’s icon you will see the features table where you can drag and drop to specify the order of the display in the pricing table.
- there are 3 types of features you can define
- Quantity feature: for example max number of the ads you can display
- Boolean: a feature that can be either yes or no, like can post ads or not.
- Text Feature: Just informative text.
- Also, You can connect a feature with a specific model (Object) into your system to measure usage, for example, specify how many products this plan can create, this is a very nice feature to convert your objects to usage-based with limits
- As you can see from the screenshot above you select The model ( for example “Product”), and then define the message to the subscriber when he reaches the limit: for example: “You have reached your limit of products please upgrade your plan!”
- Quotas can be calculated on usage-based per cycle (day., week, month) or a lifetime.
- Also, You can protect specific URLs with the feature, which means, this page can be accessed if the user has this feature in his plan and so on.
- We have introduced new options for Feature Management as well:
- Ability to customize Plan Feature Caption
- Ability to use hidden features and not showing in the pricing table
- Add a new feature type called config: it may be from different sources (settings, config, list of values) for example check intervals and notification supported channels the config options will be visible at feature plan assignment so users can select different options for different plans.
- To add a Model to the usage of a subscription feature You need to add the below code to the boot function of the Module Service Provider
SubscriptionProducts::addToFeatureModels([You Model Class], [Model Description]);
for example
public function boot() { . . SubscriptionProducts::addToFeatureModels(Contact::class, 'Monitor Contact');