微信小程序調用支付接口的完整流程記錄
官方的文檔路徑——》文檔路徑:developers.weixin.qq.com/miniprogram…
當然在開發之前,我們需要有下面這些東西:
- appId(小程序分配)
- 小程序密鑰(小程序配置界面獲取)
- 商戶號
- api密鑰(商傢後臺自己設置)
首先我們要知道把大象放進冰箱攏共需要三步(不是),那麼我們調起支付也是一樣的
步驟如下:
-
wx.login獲取用戶臨時登錄憑證code,發送到後端服務器換取openId
-
在下單時,小程序需要將商品Id,商品數量,以及openId傳送到服務器
-
服務器在接收到商品Id、商品數量、openId後,生成服務期訂單數據,同時經過一定的簽名算法,向微信支付發送請求,獲取預付單信息(prepay_id),同時將獲取的數據再次進行相應規則的簽名,向小程序端響應必要的信息(必須字段信息將在下文進行詳細說明)
-
小程序端在獲取對應的參數後,調用wx.requestPayment()發起微信支付,喚醒支付工作臺,進行支付
1.通過wx.login拿到code,然後請求接口從後臺拿去openId
login() { var that=this wx.login({ success(res) { console.log(res) wx.request({ url: '', data: { code: res.code } }) }, })
2.在調起微信支付前需要保證接收到所有我們要傳遞的值, 在這裡是openId,和支付金額。openId以及相應需要的商品信息發送到後端,換取服務端的prepay_id
let { money, openId } = this.data let token = wx.getStorageSync('user_token') let openList = await request('/接口', { ...需要給後端的字段 openid: openId }) this.setData({ prepay_id: openList.data.prepay_id })
接下來我們就可以寫一版調起微信支付接口的數據
let random = (Math.random()).toString() //這個隨機數一定要變成字符串 let timestamp = (new Date().getTime()).toString() //時間戳一定要是字符串 let mch_key = 'FVmZcEmubX817JRKHmWo1vaVHzte2Oha' let obj = { appId: 'wxb9811d3b2e3de44c', nonceStr: random, package: "prepay_id=" + this.data.prepay_id, signType: 'MD5', timeStamp: timestamp } //參數名ASCII碼從小到大排序(字典序) let arr = Object.keys(obj).sort().map(item => { return `${item}=${obj[item]}`; }); //最後拼接上key(商戶密鑰)得到字符串 let str = arr.join('&') + '&key=' + mch_key; console.log(str); //對str進行MD5運算,再將得到的字符串所有字符轉換為大寫 let paySign = md5.hexMD5(str).toUpperCase() wx.requestPayment({ "timeStamp": timestamp, "nonceStr": random, "package": "prepay_id=" + this.data.prepay_id, "signType": "MD5", "paySign": paySign, "success": function (res) { console.log('成功瞭'); }, "fail": function (res) { console.log(res); if (res.errMsg === 'requestPayment:fail cancel') { wx.showToast({ title: '用戶取消支付', icon: 'none', duration: 2000 }) } else { wx.showToast({ title: res.errMsg, icon: 'none', duration: 2000 }) } }, })
註意:以上信息中timeStamp、nonceStr、prepay_id、signType、paySign各參數均建議必須都由服務端返回(這樣會盡最大可能性保證簽名數據一致性),小程序端不做任何處理。大傢改一下接口和傳遞的參數就可以啦,這已經是模板 可以直接用!
總結
到此這篇關於微信小程序調用支付接口的文章就介紹到這瞭,更多相關微信小程序調用支付接口內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 微信小程序詳解如何實現付款功能
- 微信小程序登錄方法之授權登陸及獲取微信用戶手機號
- uni-app 微信小程序授權登錄的實現步驟
- 微信小程序用戶授權獲取手機號(getPhoneNumber)
- 微信公眾號JS-SDK獲取當前經緯度以及地址信息的方法