Ошибка при создании платного плана с пробной версией 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
            ]);
Другие вопросы по тегам