支付宝同步通知和异步通知-支付成功后跳页面
分类: ssm 专栏: 爱旅行项目 标签: 支付宝异步通知和同步通知
2023-02-24 22:21:12 728浏览
同步通知:万一支付成功后直接关闭了浏览器这种情况
浏览器重定向到支付成功的页面
异步通知:通知到达的概率是99.99%,是非常靠谱的
同步回调使用get请求传参;异步回调使用post请求
1.同步回调只有一次,异步回调可以有多次
详解:
同步回调只有一次,那这一次的结果就是最终结果,回调成功就是成功,回调失败就是失败;
异步回调如果失败,在失效时间内会继续回调,直到成功为止。
异步回调第一次收到订单信息是与返回页近乎等同的时间,在判断不成功的情况下,
会收到第二次第三次的通知,时间间隔从最先的一两分钟,到后面的几个小时。失效时间是48小时
2.同步回调使用get请求传参;异步回调使用post请求传参
轶事:用户支付成功(手机上有支付成功截图),但我们的网站上没有显示成功,用户找客服,
运营就找到研发来了。查看日志是回调失败,失败原因定位到在一次Swagger的升级中同事限制了回调的请求方法,
都设置为get请求,在同步失败的情况下,异步回调也失败;紧急去掉限制后上线,异步回调成功,解决客户问题。
3.同步是客户端回调;异步是服务器端回调
4.异步通知里的交易完成和支付成功的区别
if(trade_status.equals("TRADE_FINISHED")){//不可退款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知 }else if (trade_status.equals("TRADE_SUCCESS")){//可以退款 //判断该笔订单是否在商户网站中已经做过处理 //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序 //如果有做过处理,不执行商户的业务程序 //注意: //付款完成后,支付宝系统发送该交易状态通知 }
说白了:
收到TRADE_FINISHED请求后,这笔订单就结束了,支付宝不会再主动请求商户网站了;收到TRADE_SUCCESS请求后,后续一定还有至少一条通知记录,即TRADE_FINISHED。所以,在做通知接口时,切记使用判断订单状态用或的关系。
异步通知时间
25 小时以内完成 8 次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)
好博客就要一起分享哦!分享海报
此处可发布评论
评论(31)展开评论
展开评论