支付宝的通知机制总共有三种方式:
- 主动回调
一般情况下,支付宝的接口请求参数列表中会携带参数notify_url(服务器异步通知页面路径),这个参数即是要求支付宝处理完成后主动发起回调通知,把处理的结果信息通知给商户。
这种回调方式是支付宝系统主动发起的,不受当前页面限制,但需要依赖互联网,支持非实时通知。
- 页面重定向回调
一般情况下,支付宝的接口请求参数列表中会携带参数return_url(页面跳转同步通知页面路径),这个参数即是要求支付宝处理完成后,在用户电脑里浏览器上的当前页面执行页面自动跳转功能,并顺带把处理结果信息通知给商户。
这种回调方式不是支付宝系统主动发起的,而是支付宝程序自动执行页面重定向代码,受用户电脑或手机的影响,并且重定向仅一次。
- 直接在当前页面输出结果
一般在请求阶段,把请求信息递交给支付宝时,支付宝端是无界面存在的。支付宝仅是把处理的结果直接打印在支付宝的系统页面上(XML格式、JSON格式、文本格式、隐藏控件hidden的HTML格式等)。
这种回调方式可与“主动回调”方式同时存在,但不能与“页面重定向回调”方式并存。
如果支付宝接口是这种回调方式,那么建议在请求阶段使用模拟远程HTTP传输方式实现。这样可以在请求之后马上获取到处理结果,并不需要通过肉眼能看到的界面交互过程。