php - Laravel 收银员 + Stripe : No Such Customer

标签 php laravel laravel-5 stripe-payments laravel-cashier

我正在使用 Laravel Cashier 和 Stripe 为 Web 应用程序开发订阅。

我正在使用 Stripe v3 JavaScript API 并使用卡片元素生成 Stripe token 。正在生成 Stripe token ,如果您在 Stripe 仪表板中查看,则会创建一个客户。此外,一个 stripe id 被保存在用户数据库中。但是,当我尝试使用以下代码为用户订阅计划时:

$user->newSubscription($planId, $planId)->create($stripeToken, [
            'email' => $user->email
]);

失败并显示错误:“没有这样的客户:cus_xxxxxx”。 $planId 变量是 Stripe 中计划的 ID。

正如我所说, strip token 生成正确,客户在 strip 仪表板中创建, strip ID 在数据库中设置。我已经深入研究了 Laravel Cashier 代码,当它尝试更新卡信息时似乎出现了错误。更具体地说,它在这个函数上失败了:

public function asStripeCustomer()

可在计费模型中找到。

我联系了 Stripe 支持,他们说在创建初始客户后不会再向他们的 API 发出进一步的请求。

我的 laravel 版本是 5.5.34,我使用的是最新的 Cashier 版本。我已尝试重新安装 Cashier,但仍然无法正常工作。我还刷新了缓存。

非常感谢任何帮助。

最佳答案

这意味着用户的 strip 客户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();
}   

关于php - Laravel 收银员 + Stripe : No Such Customer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48811509/

相关文章:

android - 社交名流重定向到 Facebook 应用程序而不是浏览器

laravel - 为Laravel安装Elasticsearch时出现问题

php - Laravel 5 : when persist form data, _token导致批量分配异常

php - 消息为 'Call to undefined method Illuminate\Database\Query\Builder::toArray()' 的 BadMethodCallException

php - 如何在 php 中减去微时间并以毫秒显示日期?

php - 如何在旧版项目中实现测试框架

php - 在 Symfony ( PHP ) 中,setTemplate 方法的路径是什么?

php - Zend Framework 2 使用别名多次连接同一个表

Laravel 表单验证

node.js - Laravel mix .copy 在同一目录中?