Ошибка при создании платного плана с пробной версией Laravel Cashier
Простая проблема, но я не могу за всю жизнь понять это.
У меня есть 3 подписки на мой аккаунт Stripe: одна бесплатная и две с платным 14-дневным пробным периодом (настроен в Stripe). Все работает нормально, за исключением того, что когда я сразу же подписываюсь на платные пробные версии новых пользователей, я получаю сообщение о том, что у клиента нет источника платежа. Мой код выглядит так:
// Create new User
$user = new Account($validatedUserData);
// Create Stripe user and subscribe to plan. Laravel automatically adds Stripe Customer ID
// Free plan, create customer and subscribe to free plan in one line of code
if ($planInRequest == 1) {
$user->newSubscription('My Subscription', 'Free Plan')->create(null, ['email' => $user->email]);
}
// If Paid plan...
else {
// Create user in Stripe first (this works)
$user->createAsStripeCustomer(null);
// Subscribe user to paid plan with trial period
$user->newSubscription('My Subscription', $planToUse)->create(null, ['email' => $user->email]); }
Однако, когда я запускаю этот код, я получаю ошибку
Нет источника оплаты для клиента.
Я знаю, что еще не добавил источник Stripe для клиента (следовательно, пропустил ноль), но я подумал, что если бы у меня был бесплатный пробный период, я бы мог на него подписаться. Я пытался НЕ передавать значение null в подписку на платный план ( согласно этому сообщению SO), но это дало мне неверную ошибку токена.
Моя пользовательская модель также содержит поля 'trial_ends_at', 'updated_at' и 'creation_at', которые рекомендуются в документации Laravel. Клиент Stripe добавляется просто отлично, и когда я пытаюсь добавить платные подписки новому клиенту в Stripe Dashboard, все работает отлично.
У кого-нибудь есть идеи? Помощь высоко ценится!
1 ответ
В итоге выяснилось, что я должен был использовать следующий код для своих пробных планов после прохождения через контроллеры Cashilla Billable, Subscription и SubscriptionBuilder, публикуя их здесь на случай, если кто-то еще столкнется с такой же проблемой!
$user->newSubscription('My Subscription', $planToUse)->trialUntil($user->trial_ends_at)->create(null, [
'email' => $user->email,
'description' => $user->name
]);