iOS Swift集成PhonePe SDK支付成功后404错误问题求助
问题分析与解决方案
核心问题原因
- URL Scheme未配置:代码中
appSchema为空,导致PhonePe支付完成后无法正确跳转回你的APP,触发404错误 - redirectUrl与callbackUrl混用:两者作用不同,不能用同一个地址。callbackUrl是服务器端异步通知接口,redirectUrl是APP跳转链接
- redirectMode配置错误:POST模式不适合APP跳转场景,会导致跳转失败
- 前端回调不可靠:SDK的前端回调依赖跳转成功,一旦跳转失败会误判交易状态,但实际PhonePe后台已完成扣款
具体修复步骤
1. 配置APP URL Scheme
- 在iOS项目的
Info.plist中添加URL Types:- Identifier填自定义标识(比如
com.yourcompany.payment) - URL Schemes填你的APP专属scheme(比如
yourapppayment://)
- Identifier填自定义标识(比如
- 代码中
appSchema参数替换为这个scheme:appSchema: "yourapppayment://" // 替换为你的实际scheme
2. 区分redirectUrl和callbackUrl
- callbackUrl:设置为你的服务器端异步通知接口(必须是公网可访问的HTTPS地址),用于PhonePe后台主动推送交易结果
- redirectUrl:设置为APP的scheme链接(比如
yourapppayment://payment-result),用于支付完成后跳转回APP - 修改payload中的对应字段:
"callbackUrl": "https://your-server-domain.com/api/phonepe/callback", "redirectUrl" : "yourapppayment://payment-result", "redirectMode" : "GET"
3. 修正redirectMode
将redirectMode从POST改为GET,APP跳转仅支持GET模式。
4. 验证签名计算逻辑
- 确认
sha256函数的实现正确,输入顺序为base64EncodedString + apiEndPoint + salt,不能颠倒 - 确认
salt和saltIndex是PhonePe官方提供的正确值(生产环境和测试环境的salt不同)
5. 增加服务器端交易状态校验
绝对不能只依赖SDK的前端回调:
- 服务器端调用PhonePe的交易状态查询API,主动获取订单最终状态
- 当APP收到失败回调时,先触发服务器查询,再根据查询结果更新本地订单状态,避免误判
6. 排查404错误
- 用抓包工具(如Charles)查看跳转请求的具体URL,检查是否存在拼写错误、特殊字符未转义等问题
- 确认redirectUrl的scheme已在系统中注册,可通过Safari输入该scheme测试是否能打开你的APP
相关负责方
- 你的iOS开发团队:负责APP端的Scheme配置、参数调整、SDK回调逻辑优化
- 你的后端开发/运维团队:负责维护callbackUrl接口的可用性、实现交易状态查询逻辑
- PhonePe技术支持团队:协助排查SDK参数规范、签名正确性、后台通知推送问题,提供交易状态查询的技术支持
内容的提问来源于stack exchange,提问作者vani jain
相关产品推荐
相关产品推荐

