juzaweb / subscription
Subscription payment support
Installs: 71 760
Dependents: 1
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 0
Open Issues: 0
Type:juzaweb-plugin
Requires
- ext-openssl: *
- srmklive/paypal: ~3.0
- stripe/stripe-php: ^13.4
Requires (Dev)
- juzaweb/dev-tool: ^1.0
- juzaweb/modules: ^1.0
README
Features
- Plan management
- Paypal subscription
- Payment history in profile page
- Upgrade in profile page
- Subscription management
- Disabled ADs by plan (using Ads Manager plugin)
- Stripe payment
- Limit view posts feature
Using
Register module
To use this plugin, in Hook Action, you register the module using the subscription feature:
In demo plugin, we use membership
- Register menu Parent
$this->hookAction->addAdminMenu( 'subscription', 'subscription', [ 'label' => trans('Subscription'), ] );
- Register module to menu parent
subscription
$this->subscription->registerModule( 'membership', [ 'label' => trans('Membership'), 'menu' => [ 'label' => trans('Subscription'), 'parent' => 'subscription', ] ] );
Register Module all options
$this->subscription->registerModule( 'membership', [ 'label' => trans('Membership'), 'menu' => [ 'label' => trans('Membership'), 'parent' => 'subscription', ], 'allow_plans' => true, 'allow_payment_methods' => true, 'allow_user_subscriptions' => true, 'allow_payment_histories' => true, 'allow_setting_page' => true, ] );
Register Features
use Juzaweb\Subscription\Contrasts\Subscription; app()->make(Subscription::class)->registerPlanFeature( 'view_ads', [ 'label' => __('No Ads on website'), 'module' => 'membership', ] );
- Handle feature
# Action Class public function handle(): void { if (plugin_enabled('juzaweb/ads-manager')) { $this->addFilter('jwad.can_show_ads', [$this, 'filterCanShowAds']); } } /** * A function that filters whether ads can be shown based on user subscription plan. * * @param mixed $canShowAds The current value indicating if ads can be shown. * @return bool */ public function filterCanShowAds($canShowAds): bool { $user = request()?->user(); if (!$user) { return $canShowAds; } $plan = subscripted_plan($user, 'membership'); if (!$plan) { return $canShowAds; } $planFeature = $plan->features() ->where(['feature_key' => 'view_ads']) ->first(); if (!$planFeature || $planFeature->value != 1) { return $canShowAds; } return false; }