小工具知识网

当前位置: 首页 > 行业知识 > uniapp微信小程序支付前端生成签名,并调起微信支付

行业知识

uniapp微信小程序支付前端生成签名,并调起微信支付

2026-11-15 10:49:48 来源:互联网转载

uniapp微信小程序支付前端生成签名,并调起微信支付

    • 一、安装npm包、引入npm包
    • 二、准备签名的数据
      • ①、登录小程序开发者平台获取appId,如图所示
      • ②、前端获取10位时间戳
      • ③、前端获取随机字符串
      • ④、prepay_id
      • 三、签名封装
        • ①、私钥如果找不到,可以在商户号平台获取
        • 四、全部代码

          一、安装npm包、引入npm包

          npm install jsrsasign

          页面引入依赖

          import jsrsasign from 'jsrsasign'

          签名方式使用的是SHA256withRSA

          二、准备签名的数据

          let str = {    appId: 'xxxxxxxxxxx',   //appId后端返回,可在小程序开发平台获取    timeStamp: 'xxxxxxxxxxx', //10时间戳    nonceStr: 'xxxxxxxxxxx',  //随机字符串    package: 'prepay_id=' + prepay_id, //通过JSAPI下单接口获取到发起支付的必要参数prepay_id }

          ①、登录小程序开发者平台获取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  

          ④、prepay_id

          调用后端发起支付接口返回,后端返回

          三、签名封装

          singH5(data) {      let encipher = new jsrsasign.RSAKey()      // 私钥 在微信端申请好后会有,一般由后端提供      const key = `-----BEGIN PRIVATE KEY-----xxxxxxxxxxxxxxxxxxxxxx-----END PRIVATE KEY-----`      // 把私钥转成16进制并设置秘钥      encipher = jsrsasign.KEYUTIL.getKey(key)      // 设置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)      // 加密后,转成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-----`      // 把私钥转成16进制并设置秘钥      encipher = jsrsasign.KEYUTIL.getKey(key)      // 设置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)      // 加密后,转成base64      return jsrsasign.hextob64(sig.sign())    },//获取随机字符串,长度可自定义    getRandomString(length) {      var result = ''      var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'      var charactersLength = characters.length      for (var i = 0; i                                                 

上一篇:保存服务器失败怎么办?

下一篇:Git分布式管理-头歌实验远程版本库