支付的時候總是會遇見這樣的彈出提示框,它存在的意義是什麼?

支付成功就成功,未成功就未成功,為什麼要問用戶有沒有支付成功?難道支付前後介面沒能回傳支付狀態?求教!


沒想到這個問題也能獲得不少的點贊,現進行部分更新,請參考文尾。

還真是有原因的。。。

你有沒有發現通過淘寶購物、12306購票時使用網銀支付會出現這個頁面?

其實做這個頁面也很無奈

當需要跳轉到第三方頁面進行支付時(如網銀支付),支付成功後銀行伺服器會向平台(淘寶、12306)發送非同步通知,告知這筆訂單支付成功了。

可是,瀏覽器並不知情,因為現有http協議並不支持服務端主動向客戶端發送請求,都是客戶端主動向服務端發起請求。

所以,瀏覽器說【臣妾做不到啊】

所以才做了這麼一個彈框,當點擊『已完成支付』時客戶端就想伺服器發起了一次請求,通過訂單狀態查詢訂單狀態,如果確實成功了那就展示支付狀態。當點擊『支付遇到問題』時也會檢查支付狀態,然後根據業務規則做相應提示。

==============分割線================

有沒有其他的處理方式?有的,如下:

1、發起輪詢(polling),即每隔一段時間瀏覽器向服務端請求一次支付結果,需設置輪詢頻度和最長輪詢時間,需要權衡時效性和給伺服器造成的壓力。但是用戶會不會去支付、什麼時候能支付成功都不清楚,會對伺服器產生一定的壓力,特別是早幾年的時候。

2、採用長輪詢(Comet),客戶端向伺服器請求信息,並在設定的時間段內打開一個連接。伺服器如果沒有任何信息,會保持請求打開,直到有客戶端可用的信息,或者直到指定的超時時間用完為止。

3、Websocket,在建立連接後,伺服器和客戶端都能主動的向對方發送或接收數據

4、採用HTTP 2.0協議,2.0協議是支持服務端主動向客戶端發送請求的。但是目前該協議應用還不是特別廣泛。

[更新]

目前其實也有廣泛採用頁面回調的方式進行處理。即支付完成後會有類似[返回商戶]的按鈕,當然也可以自動完成,然後跳轉到平台網站。具體可參考12306(包括APP)和淘寶購物支付流程。

如對支付結算業務感興趣,請移步本人知乎專欄 支付結算雜談 - 知乎專欄


從安全上來說,銀行app與購物支付平台隔離開是有益的。

當然可以在客戶端運行自動更新查詢,但時間上不好掌握,長操作下ui設計確實費勁


做這種中間臨時彈框的目的就是為了減少對服務端的查詢,不管是輪詢還是Web socket,都很消耗資源。


推薦閱讀:

被央行勒令停止收單的八家第三方支付公司受到處罰的原因是什麼?
第三方支付商戶設計理念中區分 B 帳戶和 C 賬戶出於什麼考慮?
錢方,盒子支付為什麼不需要支付牌照?
如何看待央行牽頭籌劃成立網聯平台,切斷第三方支付和銀行的直連?對各方會帶來哪些影響?
支付平台等系統的清分操作 後台具體如何設計?

TAG:電子商務 | 移動支付 | 在線支付 | 第三方支付 | 微信支付 |