PhonePe支付网关从UAT测试模式迁移至Live生产模式时遭遇RESOURCES NOT FOUND错误求助
PhonePe支付网关从UAT测试模式迁移至Live生产模式时遭遇RESOURCES NOT FOUND错误求助
我完全懂你现在的糟心处境——UAT环境跑的顺风顺水,一切到生产模式就碰上个资源找不到的错误,官方文档没讲明白、客服还不回邮件,确实头疼。咱们一步步拆解问题,大概率是API端点或签名计算的细节没调整到位:
1. 修正生产环境的API完整端点
你当前用的https://api.phonepe.com/apis/hermes是不完整的,PhonePe生产环境的支付API完整路径应该是:
https://api.phonepe.com/apis/hermes/pg/v1/pay
测试环境的路径是/apis/pg-sandbox/pg/v1/pay,生产环境需要把pg-sandbox替换成hermes,同时保留后续的pg/v1/pay核心路径,只改域名是不够的。
2. 同步调整签名计算的路径参数
你的签名计算代码里用的是"/pg/v1/pay",这适配的是测试环境的路径结构,但生产环境的请求路径是"/hermes/pg/v1/pay",这里必须同步修改,否则签名验证失败也可能间接引发资源找不到的错误:
// 原测试环境的签名路径 // const string = encodedPayload + "/pg/v1/pay" + saltKey; // 修改为生产环境的完整相对路径 const string = encodedPayload + "/hermes/pg/v1/pay" + saltKey;
3. 核对生产环境的所有核心凭证
确认你替换的生产凭证完全正确,没有复制错误或遗漏:
merchantId:必须是PhonePe提供的生产专属商户ID(绝对不能用测试用的PGTESTPAYUAT)saltKey:生产环境独有的salt密钥,和测试环境的密钥完全不同saltIndex:对应生产saltKey的索引值,由PhonePe提供,不一定是测试环境的1
4. 检查请求头部与参数合规性
虽然测试环境的头部没问题,但生产环境校验更严格:
- 确保
Content-Type确实是application/json,没有拼写错误 - 确认
X-VERIFY头部格式是sha256值###saltIndex,没有多余空格或符号 - 生产环境的
merchantTransactionId必须是动态生成的唯一值,不能用测试环境的固定值MT7850590068188108,避免重复交易问题
5. 测试调整后的代码
把这些修改完成后,重新部署Firebase Cloud Function再发起请求试试。如果还是报错,可以打印出完整的请求URL、头部和请求体,对比PhonePe生产文档的要求,排查是否有遗漏的必填参数。
备注:内容来源于stack exchange,提问作者Pratyaksh Gupta
相关产品推荐
相关产品推荐

