微信支付做爲當下第二大第三方,毋庸置疑是你們都要接入的支付方式。web
咱們就接入了微信支付除刷卡支付以外全部的支付方式,包括隱藏的wap支付。編程
微信支付和大衆化的支付異同點:後端
APP支付就是應用直接呼起微信客戶端,完成支付微信
掃碼支付,就是最近搞促銷的超市,用微信掃一下就拿到了商品價格,直接付錢網絡
wap支付,官方並無公佈在web上,它其實和公衆號支付的類型是同樣的,只是這個支付方式是在非微信客戶端的其餘手機H5上呼起微信支付併發
公衆號支付,就是在微信的公衆號內選擇訂單完成支付(公衆號是一個蠻好玩的東西)app
作支付的同窗都知道,接一個通道,基本就是扣款,退款,查詢,支付回調,,退款回調(支付寶退款是異步回調的)。異步
微信將扣款接口拆分紅統一下單和調起支付接口,商戶後端完成統一下單而後將接口組裝交給無線客戶端來調用微信支付接口。這個統一下單在我理解是將成單操做提早,來簡化呼起微信客戶端後的操做,增長用戶體驗。工具
微信的退款也拆分紅了兩個接口,申請退款和查詢退款,申請退款後經過主動查詢來輪詢結果。併發量大的時候異步確實是個不錯的選擇,畢竟網絡一波動線程池就所有等待結果返回沒法釋放仍是很蛋疼的。post
微信支付幾種支付方式流程的區別
微信支付其中wap,app支付流程差很少,公衆號多了一步受權獲取openid,掃碼流程稍微複雜一點。
簡單介紹下
app支付
1,用戶打開商戶app,選擇商品下單
2,商戶後端成單以後發送微信統一下單,拿到prepayid,組裝支付參數返回app端
3,app端調用微信支付接口,呼起微信支付,用戶完成付款,微信返回APP端結果,是否展現成果H5頁面(0:展現成果頁面 -1:異常 -2:用戶取消支付)
4,微信扣款完成,將支付結果通知商戶後端
5,訂單系統等待支付系統主動推送結果更改訂單狀態。
掃碼支付(PC端)
1,app端按微信要求生成二維碼
2,用戶打開微信掃碼,掃碼後,微信會回調商戶後端
3,商戶後端成單後從微信統一下單,拿到prepayid
4,而後直接返回(2中微信有請求商戶後端)給微信,呼起微信支付
5,微信扣款完成,將支付結果通知客戶端
6,app端等待商戶後端主動推送支付結果,展現用戶成功頁面
咱們爲了讓用戶更快的支付,也把成單操做提早了,只要用戶點擊商品生成二維碼,咱們就馬上統一下單拿到prepayid。
代碼的建議
1,各類配置和動做接口儘可能抽象出來,由於公司拓展可能出現多個公衆號,多個app,之後新增的話就能夠只配下appid之類的就能夠了,簡化代碼開發,避免冗餘。
2,是否能夠多個app都使用一套appid,我也不是很清楚,之前咱們兩個app就共用的一個appid app支付,偶爾會出現A.app支付完了跳到B.app(在用戶這兩個app都安裝的狀況下),因此仍是儘可能分開吧。
3,微信全部交互都是https請求,退款須要證書,其餘無證書,post請求完成交易動做,獲取openid是get請求,最好封裝一個http交互工具。
好的代碼都是不斷完善的,
有時間儘可能多看看本身寫的舊代碼,可能之前的你並不懂如何更好的設計,那麼如今既然知道了就應該去適當的重構。
送給熱愛編程的咱們。