Кассир Laravel: как получить название или идентификатор плана?

У меня 8 полосных планов. 4 месяца + 4 года. нравиться

plan_one.monthly
plan_one.yearly
plan_two.monthly
plan_two.yearly
plan_three.monthly
plan_three.yearly
plan_four.monthly
plan_four.yearly

и вот строка подписки пользователя

id -> 1
user_id -> 1
name -> Plan-One Monthly
stripe_id -> sub_xxxxxxxxxx
stripe_plan -> plan_one.monthly
quantity -> 1
trial_ends_at - null
ends_at - null
created_at - datetime()
updated_at - datetime()

В этой ситуации, как я могу получить имя активного / текущего плана подписки пользователя?


person Kabir Uddin    schedule 18.10.2017    source источник
comment
Вы можете использовать либо stripe.com/docs/api#retrieve_customer (если у вас только одна подписка ) или stripe.com/docs/api#list_subscriptions (если у вас их несколько). .   -  person korben    schedule 18.10.2017
comment
Как ни странно, нет возможности сделать это в кассе, не просмотрев все свои планы и не проверив, истинно ли $user->subscription($plan_name). Я знаю, что это глупо, но так оно и было построено. Вчера наткнулся на это сам.   -  person Joe    schedule 19.10.2017


Ответы (2)


Метод подписки в параметре Оплачиваемый настраивает так, чтобы возвращалась последняя строка. Поэтому, если у одного оплачиваемого объекта есть только одна активная подписка в вашем приложении, это отлично работает:

$user->subscription('default')->stripe_plan;

протестировано на laravel 5.6 / кассир 7.1

person Conrad Warhol    schedule 19.04.2018

Я опаздываю на вечеринку, но я искал аналогичное решение, в моем случае я разрешаю пользователю иметь только одну подписку за раз, но я хотел программно получить активную подписку пользователей, не просматривая доступные подписки, читая laravel docs более подробно. Я нашел то, что мне нужно, используя области подписки.

$ user- ›подписки () -› active () - ›first ();

https://laravel.com/docs/8.x/billing#subscription-scopes

person riggerz29    schedule 19.03.2021