条带错误“资源 ID 不能为空或空格”
Posted
技术标签:
【中文标题】条带错误“资源 ID 不能为空或空格”【英文标题】:Stripe error "The resource ID cannot be null or whitespace" 【发布时间】:2021-11-19 23:49:39 【问题描述】:我正在尝试创建订阅,但收到错误“资源 ID 不能为空或空格”。我已经安装并迁移了 Stripe 和 Cashier。
<?php
namespace App\Http\Controllers;
require_once('../vendor/autoload.php');
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Cashier\Cashier;
use \Stripe\Stripe;
use Exception;
use Stripe_Error;
class SubscriptionController extends Controller
public function __construct()
$this->middleware('auth');
public function retrievePlans()
$key = \config('services.stripe.secret');
$stripe = new \Stripe\StripeClient($key);
$plansraw = $stripe->plans->all();
$plans = $plansraw->data;
foreach($plans as $plan)
$prod = $stripe->products->retrieve(
$plan->product,[]
);
$plan->product = $prod;
return $plans;
public function showSubscription()
$plans = $this->retrievePlans();
$user = Auth::user();
return view('subscribe', [
'user'=>$user,
'intent' => $user->createSetupIntent(),
'plans' => $plans
]);
public function processSubscription(Request $request)
$user = Auth::user();
$paymentMethod = $request->input('payment_method');
$user->createOrGetStripeCustomer();
$user->addPaymentMethod($paymentMethod);
$plan = $request->input('plan');
try
$user->newSubscription('default', $plan)->create($paymentMethod, [
'email' => $user->email
]);
catch (\Exception $e)
return back()->withErrors(['message' => 'Error creating subscription. ' . $e->getMessage()]);
return redirect('dashboard');
我在创建用户 $user->createOrGetStripeCustomer(); 时不断收到错误消息;
【问题讨论】:
我想知道这是否是关于 Stripe 的错误文档,因为即使遵循 Stripe 自己的教程(有或没有 Cashier)我也会遇到这个错误。 【参考方案1】:我有同样的错误。就我而言,是因为以下原因:
-
订阅用户 1(因此在 Stripe 中被创建为客户)
从 Stripe 仪表板中删除客户
尝试再次订阅用户 1(在从客户 Stripe 列表中删除后的接下来的 10 分钟左右)
当我订阅一个从未出现在客户列表中的其他用户时,这种情况就不会发生了。
也许,这只是我做的一个远大目标:Stripe 在删除和重新订阅之间需要一点时间。
我也查看了文档,但没有出现关于此错误的信息。
只有这个:https://stripe.com/docs/error-codes#resource-missing
【讨论】:
【参考方案2】:在用户表中,在创建新用户时,只需将 stripe-id 字段保持为 NULL。它应该是条带 id 或必须设置为 NULL。如果你把它留空会得到错误
还有一点很重要,stripe_id 字段是高度区分大小写的,所以保持为 utf8mb4_ci 编码
【讨论】:
以上是关于条带错误“资源 ID 不能为空或空格”的主要内容,如果未能解决你的问题,请参考以下文章