lee-to / laravel-subscription
Laravel 订阅模块
Requires
- php: ^7.3|^8.0
- ext-curl: *
- ext-json: *
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: 8.5.x-dev
README
安装
-
composer require lee-to/laravel-subscription
-
php artisan vendor:publish --provider="Leeto\Subscription\Providers\SubscriptionServiceProvider"
-
php artisan subscription:make plan
-
设置 config\subscription 默认计划 ID
-
将 Leeto\Subscription\Traits\Subscription 特性添加到用户模型
-
将 Leeto\Subscription\Traits\SubscriptionItem 特性添加到订阅项模型
使用
-
$user->subscriptions() 获取所有用户订阅
-
$user->subscriptionItems() 获取所有用户订阅项
-
$user->bankCards() 获取所有用户银行卡
-
$user->addBankCard($recurring_payment_id, $first_4, $last_4, $month, $year, $type = null, $default = true)
-
$user->deleteBankCard($id) - 删除
-
$user->defaultBankCard($id) 设置默认
-
$user->makeSubscription($plan_id, $unlimited = true, $ends_at = null, $bank_card_id = null) 创建或更新订阅
-
$user->makeSubscriptionItem(Model $model, $unlimited = true, $ends_at = null, $bank_card_id = null, $customPrice = null) 创建或更新订阅项
-
$user->subscriptionEnd($plan_id = null, $format = "Y-m-d") 结束日期
-
$user->subscriptionHas($plan_id = null) 检查是否存在
-
$user->subscriptionHasItem(Model $model) 检查是否存在
-
User::query()->subscribed()->get() 订阅范围
-
User::query()->unsubscribed()->get() 未订阅范围
-
User::query()->payToday()->get() 今天付款范围
外观
-
Subscription::getPlanPrice($plan_id) - 获取计划价格
-
subscription()->getPlans() || Subscription::getPlans() 获取所有计划 \Illuminate\Database\Eloquent\Builder
-
subscription()->getSubscriptions() || Subscription::getSubscriptions() 获取所有订阅 \Illuminate\Database\Eloquent\Builder
-
subscription()->getSubscriptionItems() || Subscription::getSubscriptionItems() 获取所有订阅项 \Illuminate\Database\Eloquent\Builder
-
subscription()->getSubscriptionsPayToday() || Subscription::getSubscriptionsPayToday() 当天付款行
-
subscription()->getSubscriptionItemsPayToday() || Subscription::getSubscriptionItemsPayToday() 当天付款行
中间件
- \Leeto\Subscription\Http\Middleware\SubscribedMiddleware
事件
-
\Leeto\Subscription\Events\SubscriptionCreated
-
\Leeto\Subscription\Events\SubscriptionUpdated
-
\Leeto\Subscription\Events\SubscriptionItemCreated
-
\Leeto\Subscription\Events\SubscriptionItemUpdated
与 laravel-admin 集成
- 在 admin 配置中设置 admin 路径
- 添加到 admin 路由 Route::resource('subscriptions', \Leeto\Subscription\Admin\Controllers\SubscriptionController::class);
- 添加到 admin 菜单 ["class" =>\Leeto\Subscription\Admin\Controllers\SubscriptionController::class, "title" => "Subscription"],