本文給你們講解微信小程序支付全流程,以及相關功能源代碼,項目不開放,帶來不便盡請諒解。小程序支付主要
包含以下幾步驟,1.預下單-調用微信統一下單接口進行預下單。2.小程序拿到支付參數喚醒支付。3.支付成功後發起退
款申請。
本文使用okHttpUtil進行接口交互 使用goole的gson與阿里的fastJson進行解析JsonObect,使用封裝的http工具類進行攜
帶證書進行接口交互、使用封裝的工具類實現map轉xml等。
php
下面是正文:前端
微信支付文檔: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1
一.獲取微信用戶的openId:
用戶登陸小程序 經過受權獲得微信code,而後將微信code、祕鑰、密文傳遞後端,後端進行解密後 獲得微信openId
(前端也能夠進行解密,但建議放後端)下面是獲取openId的代碼(java)
java
獲得openId後要進行業務保存,由於小程序不少接口都依賴openId,並且同一小程序下,每一個微信號的openId是同樣
的。
小程序
二:統一下單與小程序支付
經過業務系統的封裝參數,獲得支付的商品信息,價格,業務訂單後,封裝參數,進行加密獲得sign簽名,而後
調用統一下單接口進行下單,成功後返回小程序支付參數。
(須要注意的是 微信預下單請求參數要求是xml格式,全String類型)後端
接口請求成功後,微信返回也是xml格式的報文,須要將xml轉爲map或其餘,本文使用map接收參數,預下單後,
微信會返回預付訂單標識,標識用於進支付。微信小程序
而後封裝小程序支付 所需參數api
將支付參數返回給小程序,小程序經過組件 requestPayment 喚醒支付
小程序支付代碼以下:微信
wx.requestPayment({ timeStamp:param.result.timeStamp, nonceStr: param.result.nonceStr, package: param.result.package, signType:param.result.signType, paySign: param.result.paySign, success: function(res){ console.log(res); wx.showToast({ title: '支付成功', icon: 'success', duration: 2000 }); }, fail: function(res) { wx.showModal({ title:'支付失敗', content:'<text>', showCancel: false }) } })
三: 退款
小程序支付成功後,能夠經過支付訂單號進行退款操做,須要注意的是,退款須要http攜帶商戶證書進行支
付,這裏圖圖已經封裝好工具類只須要修改下證書的url就能夠愉快使用了。
session
本文中所使用到的工具類,圖圖已經幫你們打包好了,在百度網盤。app
百度網盤下載連接
連接:https://pan.baidu.com/s/1YbMrvO3qK1rdmyYyET2xzw 提取碼:ljv6
本文先總結到此,後面繼續更新技術一些文章。你們一塊兒加油鴨!