Stripe Laravel订阅试用结束后未生成正式发票问题求助
问题
使用Stripe Laravel PHP计费系统创建带试用期的订阅时,系统生成0金额发票。试用期结束后,系统显示金额$67.50、应于3月19日计费的即将到来的发票,但截至3月21日该发票仍未转为正式发票。尝试在Stripe后台编辑订阅(未做任何更改)后问题依旧,近20个不同试用期(10分钟至1天)的客户均出现此问题。
创建订阅的代码如下:
//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 ]);
排查与解决建议
- 校验
trial_end时间格式:确认$final_trial_period是UTC标准时间戳,Stripe仅认UTC格式的时间参数,用本地时间会导致试用期计算偏差,进而卡住在即将到来的发票状态。 - 检查客户支付方式有效性:查看对应客户的默认支付方式是否存在问题(如卡片过期、额度不足、验证失败),支付方式无效时Stripe会暂停发票生成并进入重试流程,可在Stripe后台查看客户支付记录及失败日志。
- 核对Webhook事件接收情况:确认是否收到
customer.subscription.trial_will_end和invoice.created事件,若未收到,检查Webhook的配置是否正确、服务器是否正常接收事件。 - 手动触发发票生成:在Stripe后台找到对应订阅,点击「生成发票」按钮手动触发。若成功生成,说明自动触发逻辑存在延迟或异常;若失败,根据错误提示定位具体问题。
- 检查优惠券配置:确认使用的优惠券是否存在限制条件(如仅适用于首次订阅、有效期已过),优惠券失效可能导致金额计算异常,影响发票生成流程。
- 升级Stripe SDK版本:若使用的Laravel Stripe SDK版本较旧,可能存在已知的试用期发票生成Bug,建议升级至最新稳定版本。
内容的提问来源于stack exchange,提问作者surya kumar
相关产品推荐
相关产品推荐

