支付宝支付中说的“异步通知”是指什么?

https://opendocs.alipay.com/mini/02dtap
image.png

文本中提到:请以异步通知(notify_url)返回的 trade_status(交易状态)为 TRADE_SUCCESS + alipay.trade.query(统一收单线下交易查询接口)查询订单是否支付成功实际返回的支付状态为准。
这个异步通知(notify_url)是什么?是我前端给后台传一个地址,成功了他访问我的地址,给我带去参数,是这样理解吗?

不建议根据 my.tradePay 接口同步返回判断是否支付成功,9000 不能判定就是支付成功,请以异步通知(notify_url)返回的 trade_status(交易状态)为 TRADE_SUCCESS + alipay.trade.query(统一收单线下交易查询接口)查询订单是否支付成功实际返回的支付状态为准。
8000    正在处理中。支付结果未知(有可能已经支付成功)。    请调用 alipay.trade.query(统一收单线下交易查询接口)查询商户订单
阅读 2.9k
2 个回答

流程是
1、前台发送下单请求到后台,后台创建业务订单,默认待支付,并请求支付宝获取订单号。
2、前台下单得到订单号,请求支付宝支付订单。
3、支付宝请求后台,接口就是你给支付宝设置notify_url接口,后台设置业务订单是否支付成功。
4、前台根据订单号轮询后台订单是否支付成功。

总涉及后台3个接口,支付宝2个接口。
创建订单接口:前台->后台->支付宝
异步通知接口:前台->支付宝->后台
查询订单接口:前台->后台

异常情况,用户支付了,单后台没显示支付成功
支付宝的订单金额和后台订单金额不一致,需要对账
手动或定时处理订单接口:后台->支付宝

你在支付宝预授权时,提供一个notify_url给支付宝。假如你设置的业务订单号为12345。

那么当用户支付完成时,支付宝会主动调用notify_url来告诉你,支付成功。具体的参数你要看文档。

image.png

image.png


举个例子:

  • 正常流程

    • 去肯德基点餐,给你生成了一个餐号(预授权):12345。
    • 5分钟后,备餐(支付动作)完毕。
    • 服务员叫号(通知notify_url):请12345号来取餐。
    • ... ...间隔5分钟连续叫了5次,依旧没回应(服务器未能正常响应notify_url) 此时就不再叫12345号了
  • 异常场景

    • 你可以拿着餐号:12345 去服务台(alipay.trade.query)查询,看看是否备餐(支付)完毕。

其实就是用户是否支付这个状态要后端处理,后端与支付宝的交互才是可信的。前端状态是不可信的。