一,什么是同步通知
同步通知是指在请求参数中传入return_url参数,支付成功后跳转到return_url地址后携带的返回参数,如下可以在同步跳转的地址栏看到同步返通知:
return_url参数 后面?拼接的就是同步返回参数。
注:目前在支付接口中只有手机网站支付的接口和电脑网站支付的接口可以传入return_url参数 来接收到同步通知 其他的支付接口 如APP支付和当面付的接口都是不支持的。
二、什么是异步返通知
异步通知是指在请求参数中传入notify_url参数,在用户支付成功后,支付宝服务器会按照这个异步地址使用post方式给notify_url来发送交易信息,如下:
gmt_create=2018-06-19[/url] 10:45:21&charset=UTF-8&seller_email=$$$&subject=使用充值:0.01元&sign=$$$&body=欢迎使用&buyer_id=2088902846029999&invoice_amount=0.01¬ify_id=fa5f28482957168bb30be6230000bb7m3l&fund_bill_list=[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]¬ify_type=trade_status_sync&trade_status=TRADE_SUCCESS&receipt_amount=0.01&app_id=2018061260369999&buyer_pay_amount=0.01&sign_type=RSA2&seller_id=2088131465899999&gmt_payment=2018-06-19 10:45:22¬ify_time=2018-06-19 10:59:12&passback_params=1007511859282415616&version=1.0&out_trade_no=20180619109999&total_amount=0.01&trade_no=2018061921001004790596169999&auth_app_id=2018061260369999&buyer_logon_id=124***@qq.com&point_amount=0.00
notify_url地址由商户自己定义保证可以正常使用外网post方式访问,否则是无法正常接收到异步通知的。
三、同步通知和异步通知的区别
1、接收方法不同
同步通知是在同步返回的页面使用get方式来获取的 异步通知是使用post方式发送到异步地址上的,只能使用post方式来接收。
2、返回的参数不同
同步通知返回的参数比异步通知返回的参数是要少一些的,最明显的就是异步返回参数会返回trade_status(交易状态)参数 但是同步返回的参数是没有的,所以建议使用异步返回的参数来确认交易是否成功 如果trade_status=TRADE_SUCCESS 表示就是交易成功了
3、发送的时间不同
一般情况下,异步通知比同步通知稍慢(几乎无感知)。同步和异步通知的发送和网络环境、服务器处理速度等因素关系较大,具体是先接收到同步通知还是异步通知,建议以实际接收到的为准。
4、参数返回的逻辑不一样
(1.)同步通知是在支付成功后的页面跳转,一般是用于展示给用户的,以手机网站支付为例:
付款成功会跳转到商户请求参数中传入的return_url地址页面:
(2.)异步通知参数是直接由支付宝服务器发送到商户的异步地址上的 不存在页面跳转是直接的服务器交互。
四、关于验签
同步通知和异步通知都是使用相同的验签方法验签的,如果是调用的SDK那就是都是使用的rsaCheckV1方法。
详细的验签建议参考:
关于支付宝异步通知的那些事:[url]https://openclub.alipay.com/read.php?tid=1314&fid=69&ant_source=zsearch[/url]
验签失败自查方案:[url]https://openclub.alipay.com/read.php?tid=1598&fid=69[/url]
注:同步通知参数和同步响应参数是不一样的,同步通知返回是return_url参数返回的信息,同步响应则是请求成功接口返回的信息
详细的建议参考:[url]https://openclub.alipay.com/read.php?tid=7328&fid=69[/url]
如有其它疑问欢迎大家可以在本帖后发帖追问