Подписка Laravel 7 Cashier: вызов функции-члена create() при нулевом значении

У меня есть 2 продукта вот один из них

введите здесь описание изображения

Я реализовал форму оплаты по умолчанию для полосы https://stripe.com/docs/stripe-js. Класс пользователя использует оплачиваемый как этот

use Laravel\Cashier\Billable;

class User extends Authenticatable
{
use Notifiable;
use Billable;

.env содержит правильные данные

STRIPE_KEY=your-stripe-key
STRIPE_SECRET=your-stripe-secret

Теперь я пытаюсь заставить пользователя подписаться на этот план следующим образом:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Cartalyst\Stripe\Stripe;
use App\User;

class PaymentController extends Controller
{
    public function store(Request $request){
        $user = auth()->user();
        $user->subscription('prod_HeC7XMT2SVe21K')->create($request->stripeToken);
    }
}

Но я получаю

Call to a member function create() on null

Почему так и как это исправить?

Примечание. Я не использовал секретный ключ нигде, кроме как в файле .env, поскольку я следовал некоторым руководствам, не знаю, правильно ли это.


person PHP User    schedule 14.07.2020    source источник
comment
вы пробовали $user->newSubscription('prod_HeC7XMT2SVe21K')->create($data['payment_method']); ... Примечание newSubscription и метод создания будут принимать способ оплаты в качестве первого параметра и массив других параметров, таких как электронная почта, телефон (т.е. данные пользователя) в качестве второго параметра   -  person Kolawole Emmanuel Izzy    schedule 27.07.2020


Ответы (1)


Вы можете попробовать создать подписку следующим образом:

$subscription = $user->newSubscription('plan_name' , 'plan_id'); 
$subscription->create('payment_method', ['other_parameters']);

замените
'plan_name' именем плана, созданного на панели инструментов Stripe.
'plan_id' с идентификатором выбранного плана.
'other_parameters' может включать адрес электронной почты пользователя, номер телефона и т. д.

person Saransh Kumar    schedule 09.12.2020