欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序調(diào)用支付接口的完整流程記錄

 更新時(shí)間:2022年02月14日 15:06:21   作者:lilUnicorn  
我們?cè)谧鲂〕绦蛑Ц断嚓P(guān)的開(kāi)發(fā)時(shí),總會(huì)遇到這些難題,下面這篇文章主要給大家介紹了關(guān)于微信小程序調(diào)用支付接口的完整流程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

官方的文檔路徑------》文檔路徑:developers.weixin.qq.com/miniprogram…

當(dāng)然在開(kāi)發(fā)之前,我們需要有下面這些東西:

  • appId(小程序分配)
  • 小程序密鑰(小程序配置界面獲取)
  • 商戶號(hào)
  • api密鑰(商家后臺(tái)自己設(shè)置)

首先我們要知道把大象放進(jìn)冰箱攏共需要三步(不是),那么我們調(diào)起支付也是一樣的

步驟如下:

  • wx.login獲取用戶臨時(shí)登錄憑證code,發(fā)送到后端服務(wù)器換取openId

  • 在下單時(shí),小程序需要將商品Id,商品數(shù)量,以及openId傳送到服務(wù)器

  • 服務(wù)器在接收到商品Id、商品數(shù)量、openId后,生成服務(wù)期訂單數(shù)據(jù),同時(shí)經(jīng)過(guò)一定的簽名算法,向微信支付發(fā)送請(qǐng)求,獲取預(yù)付單信息(prepay_id),同時(shí)將獲取的數(shù)據(jù)再次進(jìn)行相應(yīng)規(guī)則的簽名,向小程序端響應(yīng)必要的信息(必須字段信息將在下文進(jìn)行詳細(xì)說(shuō)明)

  • 小程序端在獲取對(duì)應(yīng)的參數(shù)后,調(diào)用wx.requestPayment()發(fā)起微信支付,喚醒支付工作臺(tái),進(jìn)行支付

1.通過(guò)wx.login拿到code,然后請(qǐng)求接口從后臺(tái)拿去openId

 login() {
    var that=this
    wx.login({
      success(res) {
        console.log(res)
        wx.request({ url: '', 
        data: { code: res.code } })
      },
    })

2.在調(diào)起微信支付前需要保證接收到所有我們要傳遞的值, 在這里是openId,和支付金額。openId以及相應(yīng)需要的商品信息發(fā)送到后端,換取服務(wù)端的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
      })

接下來(lái)我們就可以寫一版調(diào)起微信支付接口的數(shù)據(jù)

let random = (Math.random()).toString() //這個(gè)隨機(jī)數(shù)一定要變成字符串
      let timestamp = (new Date().getTime()).toString() //時(shí)間戳一定要是字符串
      let mch_key = 'FVmZcEmubX817JRKHmWo1vaVHzte2Oha'
      let obj = {
        appId: 'wxb9811d3b2e3de44c',
        nonceStr: random,
        package: "prepay_id=" + this.data.prepay_id,
        signType: 'MD5',
        timeStamp: timestamp
      }
      //參數(shù)名ASCII碼從小到大排序(字典序)
      let arr = Object.keys(obj).sort().map(item => {
       return `${item}=${obj[item]}`;
      });
      //最后拼接上key(商戶密鑰)得到字符串
      let str = arr.join('&') + '&key=' + mch_key;
      console.log(str);
      //對(duì)str進(jìn)行MD5運(yùn)算,再將得到的字符串所有字符轉(zhuǎn)換為大寫
      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各參數(shù)均建議必須都由服務(wù)端返回(這樣會(huì)盡最大可能性保證簽名數(shù)據(jù)一致性),小程序端不做任何處理。大家改一下接口和傳遞的參數(shù)就可以啦,這已經(jīng)是模板 可以直接用!

總結(jié)

到此這篇關(guān)于微信小程序調(diào)用支付接口的文章就介紹到這了,更多相關(guān)微信小程序調(diào)用支付接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Aptos?SDK交互實(shí)現(xiàn)過(guò)程詳解

    Aptos?SDK交互實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要為大家介紹了Aptos?SDK交互實(shí)現(xiàn)過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • JavaScript函數(shù)參數(shù)使用帶參數(shù)名的方式賦值傳入的方法

    JavaScript函數(shù)參數(shù)使用帶參數(shù)名的方式賦值傳入的方法

    這篇文章主要介紹了JavaScript函數(shù)參數(shù)使用帶參數(shù)名的方式賦值傳入的方法,實(shí)例分析了javascript函數(shù)傳遞參數(shù)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦expand.js

    腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦expand.js

    腳本吧 - 幻宇工作室用到j(luò)s,超強(qiáng)推薦expand.js...
    2006-12-12
  • 使用JavaScript 編寫簡(jiǎn)單計(jì)算器

    使用JavaScript 編寫簡(jiǎn)單計(jì)算器

    這篇文章主要介紹了使用JavaScript 編寫簡(jiǎn)單計(jì)算器,需要的朋友可以參考下
    2014-11-11
  • js實(shí)現(xiàn)中國(guó)象棋游戲

    js實(shí)現(xiàn)中國(guó)象棋游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)中國(guó)象棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • JavaScript 中的輸出數(shù)據(jù)多種方式

    JavaScript 中的輸出數(shù)據(jù)多種方式

    在 JavaScript 中,不像 Java 等語(yǔ)言,它沒(méi)有任何打印或者輸出方法的,在js中通過(guò)使用4種方式來(lái)輸出數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家詳細(xì)介紹,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • 帶有定位當(dāng)前位置的百度地圖前端web api實(shí)例代碼

    帶有定位當(dāng)前位置的百度地圖前端web api實(shí)例代碼

    這篇文章主要介紹了帶有定位當(dāng)前位置的百度地圖前端web api實(shí)例代碼 的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • JavaScript中對(duì)象的不同創(chuàng)建方法

    JavaScript中對(duì)象的不同創(chuàng)建方法

    js對(duì)象與一般的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言有所不同的。js中的對(duì)象是基本原型的。下面給大家介紹js中對(duì)象的不同創(chuàng)建方法,非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • JS實(shí)現(xiàn)移動(dòng)端按首字母檢索城市列表附源碼下載

    JS實(shí)現(xiàn)移動(dòng)端按首字母檢索城市列表附源碼下載

    我們常見(jiàn)的手機(jī)通訊錄或微信通訊錄,聯(lián)系人信息是按字母順序排列的列表,通過(guò)點(diǎn)擊右側(cè)的字母,會(huì)迅速定位檢索到首字母對(duì)應(yīng)的聯(lián)系人。下面通過(guò)本文給大家分享JS實(shí)現(xiàn)移動(dòng)端按首字母檢索城市列表功能,需要的的朋友參考下吧
    2017-07-07
  • javascript和jquery中cookie的設(shè)置方法

    javascript和jquery中cookie的設(shè)置方法

    Cookie 是瀏覽器訪問(wèn)服務(wù)器后,服務(wù)器傳給瀏覽器的一段數(shù)據(jù)。瀏覽器需要保存這段數(shù)據(jù),不會(huì)輕易刪除(保存在計(jì)算機(jī)中)。此后每次瀏覽器訪問(wèn)該服務(wù)器,都必須帶上這段數(shù)據(jù)。這篇文章主要介紹了javascript和jquery中cookie的設(shè)置方法
    2023-07-07

最新評(píng)論