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

CodeIgniter集成PhonePe支付网关:PAY_PAGE请求返回UPI_INTENT异常

问题排查与解决方案

一、先排查本地代码与请求配置

  • 确认请求参数完整性:检查paymentInstrument节点下,除了type: PAY_PAGE,是否漏填了官方要求的必填参数(比如redirectUrl、callbackUrl)。参数缺失可能导致网关自动切换到其他支付渠道。
  • 核对CURL请求Header:确保Content-Type设为application/json,签名(X-VERIFY)的生成逻辑完全匹配官方文档,别搞混测试环境和生产环境的密钥。
  • 检查框架是否篡改请求:CodeIgniter的全局过滤器或input类可能会修改请求体,发送前把完整请求日志打出来,对比官方示例,确认paymentInstrument.type确实是PAY_PAGE没被改动。
  • 清理缓存:清空CodeIgniter的缓存、服务器的OPcache,避免旧配置代码残留生效。

二、排查PhonePe测试API环境问题

  • 用调试工具模拟请求:把你的请求参数原封不动放到Postman/Insomnia里发送,看返回的instrumentResponse.type是否还是UPI_INTENT。如果工具里也这样,基本可以确定是PhonePe测试环境的配置或临时故障。
  • 查看官方状态公告:登录PhonePe商家后台或开发者平台,确认有没有测试环境维护、接口规则变更的通知。你遇到的500/502错误也说明测试环境可能不稳定。
  • 切换测试端点:PhonePe有多个测试域名(比如api-preprod.phonepe.com、test.phonepe.com),换一个端点试试,看是否恢复正常响应。
  • 联系官方支持:如果确认是平台侧问题,直接提交工单给PhonePe技术支持,附上你的请求日志、响应日志、商户ID,让他们排查。

三、临时适配与调试技巧

  • 兼容响应结构:如果暂时没法解决类型变更问题,先修改本地的响应解析逻辑,兼容UPI_INTENT类型的结构,先保证支付流程能走通,同时继续排查根源。
  • 开启详细调试日志:在CURL里开启CURLOPT_VERBOSE,把完整的请求报文、Header、响应头都记录下来,方便定位问题。示例代码:
$curl = curl_init();
curl_setopt($curl, CURLOPT_VERBOSE, true);
$logFile = fopen(APPPATH . 'logs/phonepe_debug.log', 'w+');
curl_setopt($curl, CURLOPT_STDERR, $logFile);
// 其他CURL配置(URL、POST数据、Header等)
curl_exec($curl);
fclose($logFile);
curl_close($curl);
  • 验证响应签名:不管响应结构怎么变,先验证返回的签名是否合法,排除中间代理篡改或伪造响应的可能。

内容的提问来源于stack exchange,提问作者Chandan Kumar Nayak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:23