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

PhonePe支付网关PHP生产环境集成报KEY_NOT_CONFIGURED错误求助

解决PhonePe生产环境KEY_NOT_CONFIGURED错误(UAT正常,支付后资金扣除但响应异常)

收到的错误KEY_NOT_CONFIGURED核心指向生产环境的商户密钥配置或签名逻辑问题,以下是针对性的排查和解决步骤:

1. 验证生产环境密钥配置准确性

  • 确认PHONEPE_PRD_SALT和PHONEPE_PRD_SALT_INDEX是PhonePe提供的生产环境专用密钥,而非UAT环境的密钥。很多场景下会误将UAT密钥复用至生产,导致商户与密钥不匹配。
  • 检查环境变量是否正确加载:可临时在代码中打印getenv('PHONEPE_PRD_SALT')和getenv('PHONEPE_PRD_SALT_INDEX')的值,确认无空值、多余空格或拼写错误。

2. 核对生产环境Merchant ID一致性

即便你标注merchantId正确,仍需二次确认:生产环境商户ID需与PhonePe后台配置完全一致,且与当前使用的Salt Key属于同一商户(UAT与生产的商户ID通常不同,禁止混用)。

3. 修正签名生成逻辑

签名是PhonePe验证请求合法性的核心,需严格遵循文档规范:

  • 确保json_encode时避免不必要的转义,调整代码如下:
    $encode = base64_encode(json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
    
  • 检查签名拼接顺序:base64编码的请求体 + API路径 + Salt Key,你的代码中$string = $encode.'/pg/v1/pay'.$saltKey需确认生产环境API路径确实为/pg/v1/pay,路径错误会直接导致签名无效。

4. 配置后台回调/重定向URL

登录PhonePe生产后台,确认配置的redirectUrl和callbackUrl与代码中route('response')生成的公网可访问URL完全一致,URL不匹配也会触发密钥验证失败。

5. 处理资金已扣但响应异常的情况

这种场景属于异步通知未正常接收,需补充订单主动查询逻辑:

  • 在用户支付返回后或通过定时任务,调用PhonePe订单查询API,确认订单实际状态,避免系统订单状态与实际支付结果不一致。
  • 查询API的签名逻辑需与支付请求保持一致,使用生产环境密钥。

临时调试代码(上线前删除)

// 打印关键参数用于排查
error_log('生产Salt Key: ' . getenv('PHONEPE_PRD_SALT'));
error_log('生产Salt Index: ' . getenv('PHONEPE_PRD_SALT_INDEX'));
error_log('编码后的请求体: ' . $encode);
error_log('签名原始字符串: ' . $string);
error_log('最终X-VERIFY值: ' . $finalXHeader);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:51:22