支付宝充值一次,系统加了一次或多次,例如:
充值1元,正常情况下系统用户的余额+1元,但有的用户反馈,添加了2次或3次。
查看代码,发现是return_url 和 notify_url 的问题
之前也没做过支付接口,此次简单看了下支付宝的接口文档,结合公司已写的业务逻辑,简单的进行了了解:
notify_url ,异步通知接口
return_url,同步通知接口
支付宝的通知流程是:
1.我们点击了付款,付款成功后,就会触发 notify 异步通知 ----- 这里可以执行我们系统内部自己的订单处理
2.同时,执行同步接口(这个好像是:支付接口中买家的购买流程已经走到支付宝里且支付宝提示支付成功时,页面会自动跳转回自身网站的这个页面里来)
我们项目中的问题,就是:
在notify_url和return_url文件中,都对支付宝返回进行了余额的增加,导致至少增加了2次以上。
因为notify_url最多是可能返回8次的
更多支付宝接口的详情,参照官方文档!在本文的下方
摘自一段博客里的内容:
链接地址:http://www.cnblogs.com/blodfox777/archive/2009/11/03/1595223.html
一般大家的做法都是把数据库更新些在返回页中,但是很多情况下出现了订单不同步即掉单现象。这是为什么?
答:返回页是当前页面自动跳转的,这虽然跳转的反应速度不错,但人的手动关闭该页面操作绝对可以使之在
没有跳转回来之前就关掉了该页面,此时原本该数据库更新的程序并没有被启动,这样直接导致了掉单,所以
一般大商户,尤其是网络游戏行业的即时到帐充值的技术做法是:返回页中有订单处理程序,通知页中也有,
当返回页中的订单没做过处理时,通知页中的数据处理程序便启动;这样即可近乎100%解决掉单问题(还有种
掉单原因是大家自己的服务器出现问题,比如MS3XML.DLL问题,这个问题至今没有什么可以解决的办法,只能
重装或是更换服务器,也有的服务器因为中毒才导致的)。
记录2个文档地址:
支付宝文档:
https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.NP69t5&treeId=60&articleId=104790
&docType=1
关于微信公众平台无法使用支付宝收付款的解决方案说明
https://cshall.alipay.com/enterprise/help_detail.htm?help_id=524702
微信内不能使用支付宝,得跳出微信内,在外部浏览器打开,支付完成后,关闭浏览器,体验不好,不过没法。。。