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

Laravel集成Paytm支付网关后点击支付按钮无法跳转至商户页面

解决Paytm支付网关无法跳转至商户页面的问题

看起来你遇到的问题是点击提交后,没有正常跳转到Paytm的支付页面,直接跳到了回调地址的空白页对吧?我帮你梳理几个关键的排查和修复点:

1. 替换prepare方法里的占位符参数

你代码里的user、mobile_number、email用的是占位符文本,Paytm支付网关需要真实的用户信息才能完成跳转验证,直接用占位符会导致验证失败,进而直接触发回调。

把这部分代码修改为从请求中获取用户提交的真实数据:

$payment->prepare([
    'order' => $input['order_id'],
    'user' => $request->name, // 改用用户提交的姓名
    'mobile_number' => $request->mobile_no, // 改用用户提交的手机号
    'email' => $request->email, // 改用用户提交的邮箱
    'amount' => $input['fee'],
    'callback_url' => url('api/payment/status')
]);

2. 确认路由配置的正确性

  • 确保order方法对应的路由是POST请求(因为表单提交应该用POST),而回调方法paymentCallback需要同时支持GET和POST请求(Paytm的回调可能会用POST方式发起)。
  • 如果把回调路由放在api.php里,需要将该路由排除在CSRF验证之外,否则Laravel会拦截Paytm的回调请求。

路由示例(web.php)

Route::get('register', [OrderController::class, 'register']);
Route::post('order', [OrderController::class, 'order']);
// 允许GET和POST请求访问回调地址
Route::match(['get', 'post'], 'api/payment/status', [OrderController::class, 'paymentCallback']);

CSRF白名单配置(VerifyCsrfToken.php)

如果回调路由在api.php或者需要绕过CSRF,打开app/Http/Middleware/VerifyCsrfToken.php,把回调地址加入$except数组:

protected $except = [
    'api/payment/status',
];

3. 确认Paytm配置文件正确发布

确保你已经执行过包的配置发布命令,让.env里的商户信息能正确被读取:

php artisan vendor:publish --provider="Anand\LaravelPaytmWallet\PaytmWalletServiceProvider"

发布后检查config/paytm-wallet.php里的配置项是否和你的.env文件内容一致。

4. 本地测试的额外注意事项

如果是在本地localhost测试,Paytm的回调请求无法直接访问到你的本地服务,后续支付完成后的回调会失败。你可以用ngrok这类工具把本地8000端口暴露到公网,然后把callback_url换成ngrok提供的公网地址,比如:

'callback_url' => 'https://xxxx-xx-xx-xx-xx.ngrok.io/api/payment/status'

先完成前三点的修改,应该就能正常跳转到Paytm的商户支付页面了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:54