【问题标题】:Stripe\Exception\InvalidArgumentException The resource ID cannot be null or whitespace. #1266Stripe\Exception\InvalidArgumentException 资源 ID 不能为空或空格。 #1266
【发布时间】:2023-03-28 22:00:01
【问题描述】:

收银台版本:13.5 Laravel 版本:8.63.0 PHP版本:8.0.1 数据库驱动和版本:mysql 10.4 当我尝试添加新订阅时,出现错误“资源 ID 不能为空或空格。”。在尝试使用用户模型时,它工作正常。但我需要用另一个自定义模型 AppUser 来做。这与用户模型非常相似。

在启动方法下的AppserviceProvder中,我已经给出了

Cashier::useCustomerModel(AppUser::class);

在 AppUser 模型中给定 Billable 和关系,

namespace App\Models;

use Carbon\Carbon;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Cashier\Billable;

// Authenticatable trait is required to work as User Model
class AppUser extends Authenticatable
{
    use Billable;
    use Notifiable;
    public function subscriptions()
    {
        return $this->hasMany(\App\Subscription::class, 'app_user_id')->orderBy('created_at', 'desc');
    }

我的订阅模式是

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravel\Cashier\Subscription as CashierSubscription;

class Subscription extends CashierSubscription
{
    use HasFactory;

    public function owner()
    {
        return $this->belongsTo(AppUser::class);
    }

    public function items()
    {
        return $this->hasMany(SubscriptionItem::class);
    }
}

SubscriptionItem 模型是

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravel\Cashier\SubscriptionItem as CachierSubscriptionItem;

class SubscriptionItem extends CachierSubscriptionItem
{
    use HasFactory;

    public function subscription()
    {
        return $this->belongsTo(Subscription::class);
    }
}
In My Config/ Auth.php

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'app_user' => [
            'driver' => 'session',
            'provider' => 'app_users',
        ],
    ],

 'providers' => [
        'app_users' => [
            'driver' => 'eloquent',
            'model' => App\Models\AppUser::class,
        ],

        'users' => [
            'driver' => 'database',
            'table' => 'app_users',
        ],
    ],

最后我的控制器是,

config(['cashier.model' => 'App\Models\AppUser']);

        $data = $request->all();

          $user = AppUser::find($data['user_id']);
        $paymentMethod = $request->input('payment_method');

        $plan = $request->input('plan');
        $plan = $plan ? $plan : 'halfyearly_NZD';

        $response =  $user->newSubscription('main', $plan)->create($paymentMethod);

【问题讨论】:

    标签: php laravel strip laravel-cashier


    【解决方案1】:

    经过一整天的调试,我发现了问题。

    在创建新客户时,在我的 app_users 表中,我只是将 stripe-id 归档为空白。它应该是条带 id 或必须设置为 NULL。

    另一个重要的一点,stripe_id 字段是高度区分大小写的,所以保持它为 utf8mb4_ci 编码

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-24
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多