调用PayPal交易详情API返回400 Bad Request错误求助
排查PayPal _notify-synch API 400 Bad Request错误的步骤
修正请求格式
PayPal的_notify-synch接口仅支持x-www-form-urlencoded格式的请求体,不接受JSON结构。确认请求头Content-Type设置为application/x-www-form-urlencoded,请求体改用cmd=_notify-synch&tx=transaction_id&at=identity_token这种键值对形式,而非JSON字符串。验证参数有效性
- 检查
tx对应的交易ID是否真实存在,是否已被撤销、退款或超过查询有效期 - 确认
at身份令牌是否与当前PayPal账户匹配,部分令牌存在过期机制,可前往PayPal商家后台IPN设置页面重新生成最新令牌
- 检查
规范请求头信息
- 避免使用特殊或自定义的
User-Agent标识,改用常见客户端标识(如curl/7.88.1、Apache-HttpClient/4.5.13),防止被PayPal的安全拦截规则触发错误 - 移除请求中多余的Cookie、会话类头信息,该接口无需维持会话状态
- 避免使用特殊或自定义的
核对环境匹配性
- 确认API地址与参数环境一致:生产环境用
https://ipnpb.paypal.com/cgi-bin/webscr,沙箱测试环境用https://ipnpb.sandbox.paypal.com/cgi-bin/webscr,禁止混用沙箱令牌调用生产接口或反之
- 确认API地址与参数环境一致:生产环境用
最简请求测试
用curl发送最简请求排查代码封装问题:curl -X POST https://ipnpb.paypal.com/cgi-bin/webscr \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "cmd=_notify-synch&tx=你的交易ID&at=你的身份令牌"若该请求正常返回,说明你的代码在请求构造上存在问题;若仍返回400,直接联系PayPal商家支持排查账户权限或接口异常问题
内容的提问来源于stack exchange,提问作者Vu Viet Hung
相关产品推荐
相关产品推荐

