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

Laravel集成Paystack支付网关出现403 Forbidden错误求助

Laravel集成Paystack出现403 Forbidden错误的解决方案

1. 修复.env配置格式错误

你的.env文件中PAYSTACK_PUBLIC_KEY缺少等号,会导致配置无法被框架正确读取:

# 错误格式
PAYSTACK_PUBLIC_KEY pk_test_6148addb851a3d55237ac9a

# 正确格式
PAYSTACK_PUBLIC_KEY=pk_test_6148addb851a3d55237ac9a
PAYSTACK_SECRET_KEY=sk_test_6f5903359c651e2807e8b0d1a

修改后执行以下命令清除配置缓存,确保新配置生效:

php artisan config:clear
php artisan cache:clear

2. 验证Secret Key有效性

  • 登录Paystack后台,确认sk_test_xxx密钥是从测试环境复制的完整密钥,无多余空格或截断。
  • 用Postman直接调用POST https://api.paystack.co/transaction/initialize,请求头添加Authorization: Bearer {你的Secret Key},参数带上正确的amount、email、reference,测试是否能正常返回响应。如果Postman也返回403,说明密钥本身无效或权限不足,联系Paystack支持确认。

3. 检查Paystack后台IP白名单设置

如果你的Paystack账户设置了IP白名单,确保当前服务器的公网IP已添加到允许列表中。测试阶段可以临时关闭IP白名单验证,排查是否是IP限制导致的403。

4. 修正请求参数问题

  • Paystack要求每个交易的reference必须唯一,你的代码使用了固定值,建议动态生成:
use Illuminate\Support\Str;

public function redirectToGateway()
{
    $data = array(
        "amount" => 700 * 100,
        "reference" => Str::random(16), // 动态生成唯一参考号
        "email" => 'user@mail.com',
        "currency" => "NGN",
        "orderID" => 23456,
    );
    return Paystack::getAuthorizationUrl($data)->redirectNow();
}
  • 确认所有必填参数(amount、email、reference、currency)格式正确,amount必须是货币最小单位(NGN为分,你当前的计算是正确的)。

5. 确认Paystack包配置

如果你使用的是unicodeveloper/laravel-paystack包,检查config/paystack.php文件是否正确读取了.env中的密钥:

return [
    'publicKey' => env('PAYSTACK_PUBLIC_KEY'),
    'secretKey' => env('PAYSTACK_SECRET_KEY'),
    'paymentUrl' => env('PAYSTACK_PAYMENT_URL', 'https://api.paystack.co'),
];

内容的提问来源于stack exchange,提问作者Mujtaba Fatih

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:13:30