php支付宝手机网站支付,异步回调和同步回调里面应该怎么写?

lesliehuo 2017-01-14 10:31:41
这几天要开发支付功能,用的是新版alipay.trade.wap.pay接口,看了一下支付宝文档,发现回调分为同步和异步返回,分别返回参数到设置的return_url和notify_url地址。

官方DEMO的notify_url解释要写的判断逻辑:
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的
//如果有做过处理,不执行商户的业务程序

官方DEMO的return_url中:
则没提示要的写任何判断逻辑

问题是:有两种返回方式,我不知道哪种执行再前,哪种在后。
1.return_url中先查询订单状态,在将数据库订单状态更新为已付款。这样return_url和notify_url的逻辑是一模一样的了。
2.return_url中直接在将数据库订单状态更新为已付款
3.return_url中不做任何更改数据库操作,就由notify_url来做

这三种处理哪种才正确?因为不知道同步回调和异步回调的先后顺序,不知道要不要在同步回调的return_ur中写哪种处理
...全文
3740 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_41939758 2018-10-15
  • 打赏
  • 举报
回复
楼主请问一下,你支付宝手机端同步那边是怎么搞的,我这边也是支付宝手机端同步是出了点问题的,返回的数据status = 0的,数据库是已经修改支付状态了的,但支付完后的跳转页面是显示订单失败的,就是同步的这个方法出了问题的
haif_city 2017-12-26
  • 打赏
  • 举报
回复
现在的那个回调的触发前提是已经支付成功成功才会产生回调,也就是说我们可以默认他只要产生了回调参数,那么这个订单就算用户支付成功了,就直接根据回传的订单号,如果你觉得不安全那么你可以将它回调的参数进行验签,这个在支付宝异步回调那块有具体解释,并且你还可以用回调回来的支付宝那边的订单号去使用一个接口来查询它进行判断,所以说你说的三种现在都是可以的
lovewangya 2017-01-31
  • 打赏
  • 举报
回复
谢谢楼上了,正是我需要的,多谢
傲雪星枫 2017-01-24
  • 打赏
  • 举报
回复
引用 4 楼 lesliehuo 的回复:
[quote=引用 3楼傲雪星枫 的回复:]交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。 return_url你可以跳转到判断是否支付成功的页面。
引用 5楼傲雪星枫 的回复:
交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。
return_url你可以跳转到判断是否支付成功的页面。 你意思是在return_url中调用一次查询接口吗,然后根据查询接口返回值判断跳转的页面?这些理解对不对[/quote] 是的。
thanksmyfriend 2017-01-24
  • 打赏
  • 举报
回复
我记得在支付宝的文档中有这么几句话,不保证记得准确,还是要再研究下文档。 (1)notify_url,会在24小时(很类似24小时的一个数字,看到是还对这个数字怎么确定的很好奇)内重复发送,直到支付宝受到success的通知 (2)retrun_url,只调用一次,但因为网络问题,不保证能成功 所以个人操作习惯: 只在notify_url中写业务处理逻辑,return_url中不做任何处理。
lesliehuo 2017-01-23
  • 打赏
  • 举报
回复
引用 3楼傲雪星枫 的回复:
交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。 return_url你可以跳转到判断是否支付成功的页面。
引用 5楼傲雪星枫 的回复:
交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。
return_url你可以跳转到判断是否支付成功的页面。 你意思是在return_url中调用一次查询接口吗,然后根据查询接口返回值判断跳转的页面?这些理解对不对
傲雪星枫 2017-01-23
  • 打赏
  • 举报
回复
交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。 return_url你可以跳转到判断是否支付成功的页面。
lesliehuo 2017-01-22
  • 打赏
  • 举报
回复
引用 1 楼 fdipzone 的回复:
其实你不用理是同步还是异步先到达,因为网络情况很难保证先后。 你可以收到回调后,先判断是否已修改,如果已修改,且修改的与现在获取的一样,就不用再做更新处理了。 例如异步的回调先到,你更新支付成功,修改db。 然后同步的到了,你判断到已经更新过了,就不用做后面的处理了。
现在问题出来了,原来新版的支付宝接口的return_url是没有返回交易状态trade_status的,以前接口的两个回调逻辑是可以一样。现在的同步回调return_url没有这个状态感觉不能判断到付款是否已经成功了,就不能作数据库更改操作了,只能作跳转用。我这样理解对不对,return_url里面应该怎么写? 最新版接口:https://doc.open.alipay.com/doc2/detail.htm?treeId=203&articleId=105463&docType=1
傲雪星枫 2017-01-15
  • 打赏
  • 举报
回复
其实你不用理是同步还是异步先到达,因为网络情况很难保证先后。 你可以收到回调后,先判断是否已修改,如果已修改,且修改的与现在获取的一样,就不用再做更新处理了。 例如异步的回调先到,你更新支付成功,修改db。 然后同步的到了,你判断到已经更新过了,就不用做后面的处理了。
易优cms企业建站系统是由php+mysql开发的一套专门用于中小企业网站建设的开源cms。可以用来快速建设一个企业网站( PC,手机,微信都可以访问)。后台操作简单,维护方便。系统主要特点:1、后台简单明了,代码简洁,采用DIV+CSS 利于SEO2、可以给每个页面设置SEO关键字,有利于搜索引擎收录。可以给每个页面设置别名,从而是让网页的访问网址更加简洁。3、针对企业网站开发,基本支持企业网站功能4、内核是ThinkPHP5框架,模板标签易套易懂5、易优模板免费 安全 易用6、微信小程序插件部署安装环境要求:服务器:Linux/Windows/Apache 【推荐linux/apache】PHP版本:5.5以上 【推荐5.5~7.2】MYSQL版本:5.0以上 【推荐5.5+】【虚拟空间推荐】阿里云虚拟空间【首选】百度云虚拟空间西部数据建站主机注意:必须安装在域名根目录下,不能安装在子目录下,否则会路径出错;安装步骤:第一步,用ftp上传到空间或者服务器第二步:自动跳出安装界面或者"域名/intstall"加入安装界面第三步:填数据库信息,和后台默认登陆密码第四部: 安装完成后台网址: 后台登录:域名/login.php用户名:安装的时候自定义更新日志:bulid08051、[新增]会员升级功能;2、[新增]会员投稿功能;3、[新增]筛选支持首页标签调用的功能;4、[新增]广告管理支持内容描述;5、[优化]下载模型的上传功能;6、[优化]arclist/list标签支持单独关闭缩略图的属性thumb;7、[优化]支付异步同步回调逻辑;8、[修复]生成静态页面的BUG;9、[修复]产品属性不显示的BUG;10、[修复]友情链接在多语言里不显示入口的BUG;11、[修复]上下篇的文档标题支持长度截取;12、[修复]后台logo管理删除图片失败的BUG;13、[修复]内容字段隐藏之后,新发布文档前台报错;14、[修复]微信支付PC端与手机端切换的兼容性问题;15、[修复]静态页面模式下,手机端一直跳转到首页;16、[修复]静态页面模式下,手机端搜索跳转404页面;

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧