我正在使用 Laravel Cashier 和 Stripe 开发 Web 应用程序的订阅。
我正在使用 Stripe v3 JavaScript API 并使用卡片元素生成 Stripe 令牌。 Stripe 令牌正在生成,如果您在 Stripe 仪表板中查看,则会创建一个客户。此外,条带 ID 还保存在用户数据库中。但是,当我尝试使用以下代码为用户订阅计划时:
$user->newSubscription($planId, $planId)->create($stripeToken, [
'email' => $user->email
]);
它失败并显示错误:“没有这样的客户:cus_xxxxxx”。 $planId 变量是 Stripe 中计划的 ID。
正如我所说,条带令牌已正确生成,客户已在 Stripe 仪表板中创建,并且条带 ID 已在数据库中设置。我对 Laravel Cashier 代码进行了一些深入研究,当它尝试更新卡信息时似乎出现了错误。更具体地说,它在此功能上失败:
public function asStripeCustomer()
这是在计费模型中找到的。
我联系了 Stripe 支持人员,他们说在创建初始客户后,不再向他们的 API 提出任何请求。
我的 laravel 版本是 5.5.34,我使用的是最新的 Cashier 版本。我已经尝试重新安装 Cashier,但仍然无法正常工作。我还刷新了我的缓存。
任何帮助是极大的赞赏。
这意味着用户条带客户 ID 的当前值(存储在stripe_id
列)无效。
所以,只需将其删除,下次当newSubscription()
将被调用,它将再次创建新客户。
另外,您可以通过执行以下操作来处理此问题:
try {
$user->newSubscription($subscription, $plan)->create($request->stripeToken);
} catch (\Exception $e) {
// No such customer. Invalid value in stripe_id. Clean it, for making the next request successfully
$user->stripe_id = NULL;
$user->save();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)