zoukankan      html  css  js  c++  java
  • 微信支付签名算法JavaScript版,参数名ASCII码从小到大排序;0,A,B,a,b;

      // 支付md5加密获取sign
      paysignjs: function (jsonobj) {
        var signstr = this.obj2str(jsonobj)
        signstr = signstr + '&key=' + key;
        console.log("signstrkey:",signstr)
        var sign = md5util.hexMD5(signstr); //验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
        return sign.toUpperCase()
      },
      //object转string,用于签名计算
      obj2str: function (args) {
        var keys = Object.keys(args)
        keys = keys.sort() //参数名ASCII码从小到大排序(字典序);
        var newArgs = {}
        keys.forEach(function (key) {
          if (args[key] != "" && args[key] != 'undefined') {  //如果参数的值为空不参与签名;
            newArgs[key] = args[key]  //参数名区分大小写;
          }
          
        })
        var string = ''
        for (var k in newArgs) {
          string += '&' + k + '=' + newArgs[k]
        }
        string = string.substr(1)
        return string
      }, 
      //随机函数的产生:
      createNonceStr: function () {
        return Math.random().toString(36).substr(2, 15)   //随机小数,转换36进制,去掉0.,保留余下部分
      },
      //时间戳产生的函数, 当前时间以证书表达,精确到秒的字符串
      createTimeStamp: function () {
        return parseInt(new Date().getTime() / 1000) + ''
      }
  • 相关阅读:
    Enum, Generic and Templates
    Writing A Threadpool in Rust
    A First Look at Rust Language
    Closures in OOC
    Complexity Behind Closure
    Introduction to OOC Programming Language
    OOC,泛型,糟糕的设计。
    Enlightenment笔记
    Machine Learning/Random Projection
    Machine Learning/Introducing Logistic Function
  • 原文地址:https://www.cnblogs.com/jopny/p/11454952.html
Copyright © 2011-2022 走看看