天天看點

同步傳回通知與異步通知差別解析

一,什麼是同步通知

  同步通知是指在請求參數中傳入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&notify_id=fa5f28482957168bb30be6230000bb7m3l&fund_bill_list=[{"amount":"0.01","fundChannel":"ALIPAYACCOUNT"}]&notify_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&notify_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]

如有其它疑問歡迎大家可以在本帖後發帖追問