这几天要开发支付功能,用的是新版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中写哪种处理

解决方案 »

  1.   


    现在问题出来了,原来新版的支付宝接口的return_url是没有返回交易状态trade_status的,以前接口的两个回调逻辑是可以一样。现在的同步回调return_url没有这个状态感觉不能判断到付款是否已经成功了,就不能作数据库更改操作了,只能作跳转用。我这样理解对不对,return_url里面应该怎么写?
    最新版接口:https://doc.open.alipay.com/doc2/detail.htm?treeId=203&articleId=105463&docType=1
      

  2.   

    交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。
    return_url你可以跳转到判断是否支付成功的页面。
      

  3.   

    引用 5楼傲雪星枫 的回复:
交易状态trade_status 可以根据out_trade_no去调用支付宝API获取的。
return_url你可以跳转到判断是否支付成功的页面。
    你意思是在return_url中调用一次查询接口吗,然后根据查询接口返回值判断跳转的页面?这些理解对不对
      

  4.   

    我记得在支付宝的文档中有这么几句话,不保证记得准确,还是要再研究下文档。
    (1)notify_url,会在24小时(很类似24小时的一个数字,看到是还对这个数字怎么确定的很好奇)内重复发送,直到支付宝受到success的通知
    (2)retrun_url,只调用一次,但因为网络问题,不保证能成功所以个人操作习惯:
    只在notify_url中写业务处理逻辑,return_url中不做任何处理。
      

  5.   

    楼主请问一下,你支付宝手机端同步那边是怎么搞的,我这边也是支付宝手机端同步是出了点问题的,返回的数据status = 0的,数据库是已经修改支付状态了的,但支付完后的跳转页面是显示订单失败的,就是同步的这个方法出了问题的