条带错误“资源 ID 不能为空或空格”

Mat*_*ter 8 laravel laravel-cashier

我正在尝试创建订阅,但收到错误“资源 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');
}
}
Run Code Online (Sandbox Code Playgroud)

创建用户 $user->createOrGetStripeCustomer(); 时不断收到错误消息

小智 11

在用户表中,创建新用户时只需将 stripe-id 字段保留为 NULL。它应该是条带 ID 或者必须设置为 NULL。如果您将其保留为空白,则会出现错误

另一个重要的点,stripe_id 归档是高度区分大小写的,所以将其保留为 utf8mb4_ci 编码


小智 1

我也有同样的错误。就我而言,是因为以下原因:

  1. 订阅用户 1(因此在 Stripe 中被创建为客户)
  2. 从 Stripe 仪表板中删除客户
  3. 尝试再次订阅用户 1(从客户 Stripe 列表中删除后的接下来 10 分钟左右)

当我订阅从未出现在客户列表中的其他用户时,这种情况就会停止发生。

也许这只是我做的一个远景:Stripe 在删除和重新订阅之间需要一点时间。

我也查看了文档,但没有发现有关此错误的信息。

仅此:https: //stripe.com/docs/error-codes#resource-missing