You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成Paddle支付时出现Call to a member function paddleOptions() on null错误求助

解决Paddle支付集成中的Call to a member function paddleOptions() on null错误

错误原因

这个错误的核心是Auth::user()返回了null——当前没有已认证的用户实例,导致调用charge()方法时,内部的paddleOptions()无法在空对象上执行。

解决方案

1. 确保用户已完成认证

  • 给对应路由添加auth中间件,限制仅登录用户可访问支付接口:
Route::get('/payment/test', [PaymentController::class, 'test'])->middleware('auth');
  • 或者在控制器方法开头主动检查登录状态:
if (!Auth::check()) {
    return redirect()->route('login');
}

2. 修复控制器逻辑

先确认用户实例存在,再执行支付操作:

try {
    $user = Auth::user();
    if (!$user) {
        return redirect()->route('login')->with('error', '请先登录');
    }
    
    $paylink = $user->charge(50.0, 'Premium');
    dd($paylink);

    return view('admin.payment.test', [
        'paylink' => $paylink,
    ]);
} catch (\Exception $e) {
    echo $e->getMessage();
}

3. 检查User模型的Paddle配置

确保User模型正确引入Paddle的Billable Trait:

use Laravel\Paddle\Billable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Billable; // 必须添加该Trait

    // ... 其他模型代码
}

视图代码优化

视图本身无问题,但建议增加变量存在判断,避免空值渲染:

@if(isset($paylink))
    <a href="{{ $paylink }}">Pay</a>
@endif

内容的提问来源于stack exchange,提问作者ali kokuzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:57:48