这几天要开发支付功能,用的是新版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中写哪种处理
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(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中写哪种处理
解决方案 »
- 关于php分页 和sql里in的用法的问题
- 记录访问页面的入口数问题,在线等
- 为什么JS设的坐标不对,有点奇怪
- 请求:在winXP下安装apache下为什么安装不了!
- 怎样指定文本框的焦点位置???
- 求教关于popen操作中root登录的问题(linux) 急!
- 如果连接不上数据库的话,怎样可以不报错而同时赋值?
- session 设置问题
- 在用PHP编的页面程序中如何调用用c语言编的程序或函数?
- 利用odbc连接数据库如何知道查询到的数据的总数?不是用mysql!
- 如何用php实现留言无限回复功能
- Apache 启用 Include conf/extra/httpd-ssl.conf 后 无法启动服务
现在问题出来了,原来新版的支付宝接口的return_url是没有返回交易状态trade_status的,以前接口的两个回调逻辑是可以一样。现在的同步回调return_url没有这个状态感觉不能判断到付款是否已经成功了,就不能作数据库更改操作了,只能作跳转用。我这样理解对不对,return_url里面应该怎么写?
最新版接口:https://doc.open.alipay.com/doc2/detail.htm?treeId=203&articleId=105463&docType=1
return_url你可以跳转到判断是否支付成功的页面。
你意思是在return_url中调用一次查询接口吗,然后根据查询接口返回值判断跳转的页面?这些理解对不对
(1)notify_url,会在24小时(很类似24小时的一个数字,看到是还对这个数字怎么确定的很好奇)内重复发送,直到支付宝受到success的通知
(2)retrun_url,只调用一次,但因为网络问题,不保证能成功所以个人操作习惯:
只在notify_url中写业务处理逻辑,return_url中不做任何处理。