Paypal沙盒(sandbox)支付跳转后无POST返回数据问题咨询
问题1:为什么$_POST中没有返回任何数据
- 你设置的
rm=2参数要求Paypal以POST方式返回数据,但该参数生效的核心前提是你必须在Paypal沙盒商家账户的网站付款偏好设置中开启「付款数据传输(PDT)」功能,未开启的情况下Paypal不会主动返回完整的POST支付数据,只会携带少量GET参数; - 如果你的站点存在强制HTTPS跳转、域名末尾斜杠补全等301/302重定向规则,POST请求在重定向过程中会被降级为GET请求,原有POST数据会全部丢失;
- 目前Paypal沙盒环境对旧版HTML Payments Standard接口的返回策略有调整,自动跳转场景下的POST数据传输本身就存在不稳定的问题,该路径本来就不建议作为支付成功的校验依据,旧方案中可靠的支付数据通知依赖IPN(即时付款通知)功能,return页面的返回数据仅做页面跳转展示用,不能作为入账依据。
问题2:如何排查未发送POST数据的原因
- 先在你的
success_test.php文件最顶部添加日志逻辑,记录完整的请求信息:包括$_SERVER['REQUEST_METHOD']、file_get_contents('php://input')、全部$_SERVER变量,确认请求到底是POST还是GET、是否有中间重定向痕迹; - 登录Paypal沙盒商家账户,进入「活动」页面找到对应测试交易,查看交易详情中的通知发送记录,确认Paypal侧是否触发了POST数据返回、是否有返回报错;
- 你可以临时将
return参数替换为本地的请求日志工具地址,直接确认Paypal侧是否真的发出了POST请求,排除自身服务端的配置问题。
问题3:该接口是否已弃用,能否找到官方文档
你用到的是PayPal HTML Payments Standard(HTML付款标准)集成方案,属于遗留集成方式,目前没有完全下线,但官方已不推荐新业务使用,相关的接口说明、参数规则等文档仍然可以在Paypal官方开发者中心的遗留集成板块查询到。
内容的提问来源于stack exchange,提问作者Jim Bell
相关产品推荐
相关产品推荐

