集成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
相关产品推荐
相关产品推荐

