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

uniapp微信小程序支付前端生成簽名并調(diào)起微信支付全部代碼

 更新時間:2024年07月11日 08:32:30   作者:流偌花火  
想要在uniapp中實現(xiàn)支付功能,通常需要使用第三方支付服務(wù),如微信支付、支付寶支付,等這篇文章主要給大家介紹了關(guān)于uniapp微信小程序支付前端生成簽名并調(diào)起微信支付的相關(guān)資料,需要的朋友可以參考下

一、安裝npm包、引入npm包

npm install jsrsasign

頁面引入依賴

import jsrsasign from 'jsrsasign'

簽名方式使用的是SHA256withRSA

二、準(zhǔn)備簽名的數(shù)據(jù)

let str = {
    appId: 'xxxxxxxxxxx',   //appId后端返回,可在小程序開發(fā)平臺獲取
    timeStamp: 'xxxxxxxxxxx', //10時間戳
    nonceStr: 'xxxxxxxxxxx',  //隨機字符串
    package: 'prepay_id=' + prepay_id, //通過JSAPI下單接口獲取到發(fā)起支付的必要參數(shù)prepay_id
 }

①、登錄小程序開發(fā)者平臺獲取appId,如圖所示

②、前端獲取10位時間戳

const time = Math.round(new Date().getTime()/1000).toString();
console.log(time);

③、前端獲取隨機字符串

getRandomString(length) {
      var result = ''
      var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
      var charactersLength = characters.length
      for (var i = 0; i < length; i++) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength))
      }
      return result
},

④、prepay_id

調(diào)用后端發(fā)起支付接口返回,后端返回

三、簽名封裝

singH5(data) {
      let encipher = new jsrsasign.RSAKey()
      // 私鑰 在微信端申請好后會有,一般由后端提供
      const key = `-----BEGIN PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxx
-----END PRIVATE KEY-----`
      // 把私鑰轉(zhuǎn)成16進制并設(shè)置秘鑰
      encipher = jsrsasign.KEYUTIL.getKey(key)
      // 設(shè)置SHA256withRSA方式加密
      const sig = new jsrsasign.KJUR.crypto.Signature({
        alg: 'SHA256withRSA',
      })
      // 初始化
      sig.init(encipher)
      // 需要加密的字段,這里注意下一定要按每一個字段一行,切末位加上 \n
      const str = `${data.appId}\n` + 
      			  `${data.timeStamp}\n` + 
      			  `${data.nonceStr}\n` + 
      			  `${data.package}\n`
      const paySign = sig.updateString(str)
      // 加密后,轉(zhuǎn)成base64
      return jsrsasign.hextob64(sig.sign())
    },

①、私鑰如果找不到,可以在商戶號平臺獲取

四、全部代碼

import jsrsasign from 'jsrsasign'

//SHA256簽名
singH5(data) {
      let encipher = new jsrsasign.RSAKey()
      // 私鑰 在微信端申請好后會有,一般由后端提供
      // 在商戶號平臺可以找到
      const key = `-----BEGIN PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxx
-----END PRIVATE KEY-----`
      // 把私鑰轉(zhuǎn)成16進制并設(shè)置秘鑰
      encipher = jsrsasign.KEYUTIL.getKey(key)
      // 設(shè)置SHA256withRSA方式加密
      const sig = new jsrsasign.KJUR.crypto.Signature({
        alg: 'SHA256withRSA',
      })
      // 初始化
      sig.init(encipher)
      // 需要加密的字段,這里注意下一定要按每一個字段一行,切末位加上 \n
      const str = `${data.appId}\n` + 
      			  `${data.timeStamp}\n` + 
      			  `${data.nonceStr}\n` + 
      			  `${data.package}\n`
      const paySign = sig.updateString(str)
      // 加密后,轉(zhuǎn)成base64
      return jsrsasign.hextob64(sig.sign())
    },
	
	//獲取隨機字符串,長度可自定義
    getRandomString(length) {
      var result = ''
      var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
      var charactersLength = characters.length
      for (var i = 0; i < length; i++) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength))
      }
      return result
},
 // 微信支付
    async setRecharge(price01, price02) {
      let _this = this
      let obj = {
       //個人數(shù)據(jù)
       //發(fā)起請求
      }
      let res = await setRechargeAPI(obj)
      if (res.code == 200) {
      	let prepay_id = res.data.prepay_id
 //---------------------------------------------------------------------------------------------
 //---------------------------------------------------------------------------------------------
 //---------------------------------------------------------------------------------------------
 //從這里開始,上面為發(fā)起訂單支付獲取  prepay_id
 //準(zhǔn)備數(shù)據(jù)
        let str = {
          appId: 'xxxxxxxxx',  //你自己的appId
          timeStamp: Math.round(new Date().getTime() / 1000).toString(),
          nonceStr: this.getRandomString(31),
          package: 'prepay_id=' + prepay_id,
        }
        //獲取簽名
        let sign = this.singH5(str)
        uni.requestPayment({
          provider: 'wxpay', //支付類型-固定值 這里是微信支付
          appId: str.appId,  //appId
          timeStamp: str.timeStamp, // 時間戳(單位:秒)要和上面簽名的一致
          nonceStr: str.nonceStr, // 隨機字符串
          package: str.package, // 固定值
          signType: 'RSA', //固定值
          paySign: sign, //簽名

          success: function (res) {
            console.log('支付成功')
            uni.showToast({
              icon: 'success',
              title: '支付成功',
            })
			//此處為自己的刷新數(shù)據(jù)方法
            //_this.getUserInfo()
          },

          fail: function (err) {
            console.log('支付失敗', err)
            uni.showToast({
              icon: 'none',
              title: '支付失敗',
            })
          },
        })
 //結(jié)束
 //---------------------------------------------------------------------------------------------
 //---------------------------------------------------------------------------------------------
 //---------------------------------------------------------------------------------------------
      }
    },

總結(jié) 

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

相關(guān)文章

  • JavaScript條件判斷_動力節(jié)點Java學(xué)院整理

    JavaScript條件判斷_動力節(jié)點Java學(xué)院整理

    JavaScript使用if () { ... } else { ... }來進行條件判斷。下通過語句代碼給大家詳細(xì)介紹js 條件判斷的基本知識,需要的的朋友參考下吧
    2017-06-06
  • JavaScript?字符串新增方法?trim()?的使用說明

    JavaScript?字符串新增方法?trim()?的使用說明

    這篇文章主要介紹了JavaScript字符串新增方法trim()的使用說明,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • javascript:以前寫的xmlhttp池,代碼

    javascript:以前寫的xmlhttp池,代碼

    用javascript寫的xmlhttp池代碼,最下面有調(diào)用方法
    2008-05-05
  • 手把手教你寫一個微信小程序(推薦)

    手把手教你寫一個微信小程序(推薦)

    最近接了一個微信小程序的項目,項目需求是小程序語音識別,全景圖片觀看,登錄授權(quán),獲取個人基本信息。非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-10-10
  • 詳解微信小程序開發(fā)聊天室—實時聊天,支持圖片預(yù)覽

    詳解微信小程序開發(fā)聊天室—實時聊天,支持圖片預(yù)覽

    這篇文章主要介紹了微信小程序?qū)崟r聊天支持圖片預(yù)覽,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • js防止表單重復(fù)提交實現(xiàn)代碼

    js防止表單重復(fù)提交實現(xiàn)代碼

    重復(fù)提交、重復(fù)刷新、防止后退等等都是屬于系統(tǒng)為避免重復(fù)記錄而需要解決的問題,在客戶端去處理需要針對每一種的可能提出相應(yīng)的解決方案,然而在服務(wù)器端看來只不過是對于數(shù)據(jù)真實性的檢驗問題
    2012-09-09
  • webpack的pitching loader詳解

    webpack的pitching loader詳解

    這篇文章主要介紹了webpack的pitching loader詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 微信小程序switch組件使用詳解

    微信小程序switch組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序switch組件的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 解讀函數(shù)的節(jié)流與防抖問題

    解讀函數(shù)的節(jié)流與防抖問題

    這篇文章主要介紹了解讀函數(shù)的節(jié)流與防抖問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • js簡單粗暴的發(fā)布訂閱示例代碼

    js簡單粗暴的發(fā)布訂閱示例代碼

    這篇文章主要給大家介紹了js簡單粗暴的發(fā)布訂閱的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論