Я работаю с биллинговой системой Stripe Laravel php.
Я создал клиент с подпиской и пробным периодом. Создается счет-фактура с суммой 0. По завершении пробного периода я смогу увидеть предстоящий счет и просмотреть этот счет.
Ниже то, что я вижу в полосе..
Upcoming invoice for $67.50 Preview
Next invoice for subscription to Pro|Will be billed on Mar 19
Проблема в том, что счет-фактура не создается после окончания пробного периода, а предстоящий счет-фактура остается открытым сегодня, 21 марта, и у вас тот же статус.
Что я здесь делаю не так.
Ниже моего кода laravel для создания рассматриваемой подписки с кодом купона и пробным периодом.
//create subscription with calculated trial period
$subscription = $stripeObj->subscriptions->create([
'coupon' => $this->stripe_discount_coupons["$discount_percent"],
'customer' => $firmData->stripe_id,
'items' => [
[
'price' => $firmData->commitment->stripe_price_id,
'quantity'=> $firmData->number_of_users
],
],
'cancel_at_period_end'=> false,
'metadata'=>[
'firm_id'=>$firmData->id,
'firm_name'=>$firmData->firm_name,
'subscription_name'=>$firmData->subscription->subscription_type,
],
'expand' => ['latest_invoice.payment_intent'],
'trial_end' => $final_trial_period
]);
Я также попробовал... войти в панель управления Stripe, открыть подписку клиента и отредактировать ее, не внося никаких изменений, и я вижу, что предстоящий счет не преобразуется в счет-фактуру.
Не уверен, что происходит выше. Я создал почти 20 клиентов с различными пробными периодами от 10 минут до 1 дня. Результат тот же, все, что я вижу, это предстоящий счет.
Я отправил им электронное письмо и жду их ответа. Я хотел одновременно поделиться ситуацией с сообществом для обсуждения.






Здесь есть две проблемы, которые необходимо решить в моей ситуации.
один. Регулярные события, такие как CustomerSubscriptionTrialWillEnd, не будут срабатывать, если продолжительность пробного периода составляет менее 3 дней.
во-вторых, нам нужно указать поведение по умолчанию после окончания пробного периода.
Обновленный код, который работает для меня, представлен ниже. Я использую купон для предоставления скидки, а также использую пробный период. В настройках пробной версии вы можете видеть, что я демонстрирую end_behavior, который предписывает создать_инвойс после истечения срока действия пробной версии.
$subscription = $stripeObj->subscriptions->create([
'coupon' => $this->stripe_discount_coupons["$discount_percent"],
'customer' => $firmData->stripe_id,
'items' => [
[
'price' => $firmData->commitment->stripe_price_id,
'quantity'=> $firmData->number_of_users
],
],
'cancel_at_period_end'=> false,
'metadata'=>[
'firm_id'=>$firmData->id,
'firm_name'=>$firmData->firm_name,
'subscription_name'=>$firmData->subscription->subscription_type,
],
'expand' => ['latest_invoice.payment_intent'],
'trial_end' => $final_trial_period,
'trial_settings' => ['end_behavior' => ['missing_payment_method' => 'create_invoice']],
]);
Трудно сказать — в целом код выглядит нормально. Я бы рекомендовал написать в службу поддержки Stripe, указав конкретный идентификатор подписки, или обратиться через их сервер Discord (discord.com/invite/stripe), чтобы получить помощь по конкретному примеру, который вы тестируете.