如何解决从 10.5 升级到 12.8 后取消条带订阅错误使用 Laravel Cashier
PHP 版本:7.4.16 数据库驱动及版本:Mysql5.7 & MongoDB 4.4 收银台版本:12.10.0 Laravel 版本:8.33.1
说明: 我使用了 Laravel 框架、Cashier、MongoDB 和 Jenssegers/laravel-mongodb。但是在此回复之后,我已将表用户、订阅和订阅项的数据库更改为 MySQL。 我的应用程序运行良好。但是在我将 Laravel 框架从 6 更新到 8 并将收银员(条纹)从 10 更新到 12 后,取消订阅停止工作。
我有错误:
Stripe\Exception\UnexpectedValueException 无法确定哪个 要请求的 URL:Stripe\Subscription 实例的 ID 无效:
看起来收银员想要使用旧类型的模型订阅(其中字段 'stripe_id' 存在且不为空,关于订阅的所有信息都保存在一个表“订阅”中)。但是新订阅就像多重订阅一样,我的意思是关于订阅的信息保存在两个表中:'subscriptions' 和 'subscription_items'。
如果我们检查错误的痕迹,我们看到这里'vendor/stripe/stripe-php/lib/ApiResource.php:104'是问题所在:
public function instanceUrl()
{
return static::resourceUrl($this['id']);
}
$this['id'] 返回 null,因为订阅对象中没有 'stripe_id'。它必须在该表中使用表 subscription_items 和条带 ID。
我仔细检查了 Laravel 和 Cashier 的升级指南,但找不到任何可以帮助我的内容。
你能帮我找出我的错误在哪里吗,或者我应该在库代码中覆盖什么?
更新: 我还讨论了一件更奇怪的事情: 在 Laravel Cashier 文档中,我们看到如果我们使用 newSubscription() 中的第二个参数作为字符串,我们必须获得通常的订阅:
$request->user()->newSubscription(
'default','price_premium'
)->create($request->paymentMethodId);
如果我们使用第二个参数作为数组,我们将得到多个订阅:
$request->user()->newSubscription('default',[
'price_monthly','chat-plan',])->create($request->paymentMethodId);
我检查了我的代码。我使用字符串,但结果我有多个订阅。不行吧?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。