Laravel cashier (Stripe) - Как создать подписку для использования по счету? - PullRequest
2 голосов
/ 06 января 2020

У меня возникли проблемы с попыткой внедрения Cashier (Stripe) в мое приложение Laravel.

Я пытаюсь создать новую подписку для уже существующего клиента (компании). Но когда я это делаю, я получаю следующую ошибку:

You cannot set the quantity for metered plans.

Вот что я пытался сделать:

$company = Company::find(1);    
$company->newSubscription('prod_XXX', 'plan_XXX')->create();

В документации laravel я нашел это

$user->newSubscription('main', 'premium')->create($paymentMethod);

но, насколько я понимаю, если клиент уже существует, мне не нужно передавать метод paymentMethod в методе create (), поскольку он связывается с stripe_id в базе данных.

В случае, если требовался способ оплаты, я тоже пытался так:

$company = Company::find(1); 
$paymentMethod = $company->defaultPaymentMethod()->id;
$company->newSubscription('prod_XXX', 'plan_XXX')->create($paymentMethod);

Но я получаю то же сообщение об ошибке.

На панели инструментов Stripe я нашел это тело запроса в журнале ошибок:

{
  "expand": {
    "0": "latest_invoice.payment_intent"
  },
  "plan": "plan_XXX",
  "quantity": "1",
  "off_session": "true"
}

Таким образом, newSubscription (), по-видимому, передает значение по умолчанию 1.

Итак, вернемся к моему вопросу: Как создать новую дозированную подписку на существующий клиент без передачи количества?

1 Ответ

3 голосов
/ 06 января 2020

Как прокомментировал Мартин Бин, Касса на самом деле не поддерживает дозированное выставление счетов. В проблеме github, которую он связал, я нашел этот обходной путь.

$user->newSubscription('default', 'plan_XXX')
     ->quantity(0)
     ->create($request->get('payment_method'));

РЕДАКТИРОВАТЬ

Хорошо, неважно. Когда я пытаюсь обновить использование позже, чтобы использовать правильный план, я получаю ту же ошибку, что и раньше: (

...