PayFip支付弹窗POST回调参数获取及处理方案咨询
问题1:如何获取该POST请求的所有参数
PayFip的IPN回调是官方服务器直接发起的服务器间POST请求,请求目标就是你拼接在$modalUrl里的urlcl参数对应的接口地址,你只需要在该地址对应的PHP文件中,通过全局变量$_POST即可获取所有回调参数。
如果需要调试查看完整参数,可以临时在回调PHP文件顶部加入代码:
<?php // 记录回调参数到日志文件,注意要给日志目录开写入权限 file_put_contents('./payfip_ipn.log', date('Y-m-d H:i:s').json_encode($_POST, JSON_UNESCAPED_UNICODE).PHP_EOL, FILE_APPEND);
所有PayFip回传的支付状态、日期、订单标识等参数都会写入到日志文件中。
问题2:解决该问题的逻辑流程
完整流程如下:
- 第一步:在你的系统中新增一个单独的PHP接口作为
urlcl参数值,比如https://你的域名/payfip_notify.php,确保该地址公网可访问,PayFip服务器可以正常请求到 - 第二步:在该PHP接口中处理IPN回调:先按照PayFip官方给出的校验规则验证回调参数的合法性(比如核对订单号、支付金额、签名校验,避免伪造请求),校验通过后将对应订单的支付状态更新到你的数据库
- 第三步:在原有触发支付的页面,新增JS轮询逻辑:用户点击支付按钮打开弹窗后,每隔2-3秒向你自己的服务器发起请求,查询当前订单的支付状态
- 第四步:服务器返回支付成功状态后,前端直接执行页面重载或者更新页面支付状态的逻辑,不需要等待用户手动关闭弹窗
问题3:技术方案选型建议
必须优先用PHP处理IPN回调:IPN是PayFip服务器直接发送到你的服务端的请求,全程不经过用户浏览器,前端JS/JQuery完全无法监听到该请求,你之前尝试用JS监听失败是正常现象。
前端只需要负责轮询查询你自己服务端的订单状态即可,核心的回调校验、状态更新逻辑全部放在PHP侧处理,安全性和可靠性更高。
补充注意事项
- 回调接口不要做登录态校验,PayFip的服务器请求不会携带你站点的用户Cookie
- 一定要做回调参数合法性校验,不要直接信任收到的参数就更新订单状态,避免被恶意请求伪造支付成功的回调
内容的提问来源于stack exchange,提问作者Manolo06
相关产品推荐
相关产品推荐

