廢話很少說, 下圖是微信支付官方的支付流程圖:前端
微信支付的官方Demo就不吐槽了, 可是不能否認, 這個流程圖畫的仍是至關不錯的, 很是的詳細, 認真弄懂這張圖, 那麼你對支付的大概流程就已經差很少了解了. 支付寶的支付過程和微信支付的過程大致上是類似的, 徹底能夠用相同的處理方式來處理.git
在咱們的項目中, 咱們是這麼來處理的:github
無論是微信支付仍是支付寶支付, 咱們都向服務器請求一次數據, 參數中標示此次要發起的支付動做是微信支付仍是支付寶支付, 服務器獲得消息後, 若是是你微信支付, 那麼就按照微信支付的流程向微信支付服務器請求數據, 返回給用戶端prepay_id, sign等信息, 用戶端根據prepay_id和sign等信息調起移動端的微信客戶端, 進入支付頁面進行支付操做, 支付完成以後跳回咱們的用戶端, 用戶端根據回調信息, 從新向咱們本身的服務器請求訂單支付狀態, 究竟是支付成功仍是失敗; 支付寶支付也是同樣的, 調起支付寶客戶端以前, 咱們須要先向咱們本身的服務器請求數據, 若是是支付寶的支付那麼久給咱們返回支付寶支付的partner, seller, privateKey等信息, 獲得結果後, 調起支付寶客戶端, 支付成功後, 在回調中請求咱們本身的服務器, 判斷訂單是夠支付成功.
**總結: 說到底, 訂單究竟是支付成功仍是失敗, 不能根據應用收到的回調信息來判斷, 應該以咱們本身服務器端的信息爲準. **後端
微信支付和支付寶支付流程, 對於移動端來講, 能夠統一用如下圖示的流程來解決:安全
用戶點擊付款, 商戶APP向商戶服務器發送支付請求;服務器
商戶APP獲取支付必須的信息, 如 : prepay_id, sign, seller等信息;微信
調起微信或者支付寶, 等待用戶校驗付款;測試
微信APP向微信服務器發起付款的請求;微信支付
商戶APP獲得微信或者支付寶支付結果的回調;加密
商戶APP收到回調, 向本身的服務器請求支付成功或者失敗的結果;
獲得支付結果後, 向用戶展現支付成功或者失敗;
支付是一個安全性要求比較高的操做, 像密鑰, 商戶ID, 簽名等安全性要求比較高的, 而且可能不是一成不變的信息, 最好仍是放在服務器端來比較好, 用戶端須要的時候就經過加密的接口來從服務器請求.
github: https://github.com/hell03W/WHPay
咱們把須要的商品金額發給後段,後端比對以後加密返回給我全部的訂單信息,包括回調什麼的,後端統一管理 而後咱們把收到的加密後的信息,發給支付寶,該怎麼支付怎麼支付, 支付完成以後,支付寶會給移動端和後端分別發送支付信息 而後前端把收到的信息發給後端進行比對 後端比對成功,更改本身訂單狀態