其實題目有點大,主要討論的是手機客戶端怎么接入支付寶的快捷支付呢。
支付寶的快捷支付的相關文檔可以看這個帖子:支付寶接口資料下載(2012.11.23更新)
三方主要是客戶端,業務服務端,支付寶服務端的交互。
1 客戶端向業務服務端提交訂單,業務服務方生成一個訂單號
2 客戶端根據訂單號生成支付寶所需要的參數,向支付寶的支付接口提交
3 支付寶的支付接口返回同步數據。
4 支付寶服務端請求回調函數,這個回調函數是在業務服務方的,這個請求是異步的。
5 客戶端根據用戶訂單號來去業務服務方確認是否已經支付成功。
這里有幾個問題:
1 簽名安全性
第二步,客戶端根據訂單號生成支付寶所需要的參數,這里的參數少不了簽名,而支付寶的簽名是使用rsa的,那么密鑰就必須要放在客戶端了。這個是有可能導致不安全的因素的。
所以這個簽名過程最好是放在服務端。
即在第一步中不僅僅生成訂單號,而且還生成其他各個參數,包括回調地址,簽名等,這樣做的好處是服務端統管參數了,以后回調地址一旦有變化,就可以在服務端做修改就好。
2 同步返回和異步返回看哪個
這個是最糾結的問題,但是總之,應該是看異步返回的,原因也是異步返回是服務端和服務端的交互,比客戶端交互安全多了。
但是異步返回是可能會有問題風險的。因為異步,可能造成時間的延遲,就是說用戶明明已經支付了,但是異步請求還沒請求到。
這個情況在理論上是會存在的,但是實際上,我問過幾個使用過支付寶開發的同事,這個情況很少,即使有這種情況,也只有記錄下回調數據,然后給用戶反饋,告知他的訂單號,讓他拿這個訂單號再做查詢。然后再做對賬等操作了。