| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 | const sm4 = require('../js/SM4');const SM4Exten = require('../js/SM4Exten');const miniprogramsm4 = require("../miniprogram_npm/miniprogram-sm-crypto/index").sm4;const secretId = "D2BCF8DE-AA24-4BF6-9C34-C8DD325E412B";const Secret = "6C680A47B87740138DFB299FC69A64E1";const api_root = 'http://192.168.5.5:5006/'const CurrentBuId = '12345678-9abc-def0-1234-56789abcdef0';function request(path, method = 'GET', data = null) {  var WachatID = wx.getStorageSync('WachatID')  return new Promise((resolve, reject) => {     var sign_method = "HMAC_SM4";    var url = api_root +  path;    var nonce = generateRandomString();    const timestamp = Date.now();    console.log('data :' + data);    let jsonString = (data != null && method != 'GET') ? JSON.stringify(data) : '';    console.log('request :' + jsonString);     var stringToSign = "sign_method=" +sign_method +                        "&secret_id=" +secretId+                       "&nonce=" +  nonce +                       "×tamp=" + timestamp;    if(jsonString != '')    {      stringToSign +=  "&"+jsonString    }    console.log('加密串 :' + stringToSign);    let key =  stringToHex(Secret);    key = getFirst32Chars(key);    let signature = miniprogramsm4.encrypt(stringToSign, key)        signature = stringToBase64(signature);    console.log('signature :' + signature);    wx.request({      header: {        "sign_method": sign_method,        "secret_id": secretId,        "nonce": nonce,        "timestamp": timestamp,        "signature": signature,        "CurrentBuId" : CurrentBuId,        "WachatID":WachatID      },      url: url,       method: method,      data: data,      success: res => {        console.log("success");        resolve(res);      },      fail: res => {        console.log("request fail");        resolve(res);      },    })  });}function stringToBase64(str) {    const base64Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';      let utf8Bytes = [];  for (let i = 0; i < str.length; i++) {    let charCode = str.charCodeAt(i);        if (charCode < 128) {       utf8Bytes.push(charCode);    } else if (charCode < 2048) {       utf8Bytes.push((charCode >> 6) | 192);      utf8Bytes.push((charCode & 63) | 128);    } else if (charCode < 65536) {       utf8Bytes.push((charCode >> 12) | 224);      utf8Bytes.push(((charCode >> 6) & 63) | 128);      utf8Bytes.push((charCode & 63) | 128);    } else {       utf8Bytes.push((charCode >> 18) | 240);      utf8Bytes.push(((charCode >> 12) & 63) | 128);      utf8Bytes.push(((charCode >> 6) & 63) | 128);      utf8Bytes.push((charCode & 63) | 128);    }  }  let base64Str = '';  let paddingCount = 0;    for (let i = 0; i < utf8Bytes.length; i += 3) {    let byte1 = utf8Bytes[i];    let byte2 = i + 1 < utf8Bytes.length ? utf8Bytes[i + 1] : 0;    let byte3 = i + 2 < utf8Bytes.length ? utf8Bytes[i + 2] : 0;    let chunk = (byte1 << 16) | (byte2 << 8) | byte3;    let char1 = base64Chars[(chunk >> 18) & 63];    let char2 = base64Chars[(chunk >> 12) & 63];    let char3 = i + 1 < utf8Bytes.length ? base64Chars[(chunk >> 6) & 63] : '=';    let char4 = i + 2 < utf8Bytes.length ? base64Chars[chunk & 63] : '=';    base64Str += char1 + char2 + char3 + char4;        if (i + 2 >= utf8Bytes.length) {      paddingCount = (utf8Bytes.length - i) % 3;    }  }  return base64Str;}function getFirst32Chars(str) {  if (typeof str !== 'string') {    throw new Error('Input must be a string');  }      return str.length <= 32 ? str : str.slice(0, 32);}function stringToHex(str) {  let hex = '';  for (let i = 0; i < str.length; i++) {        const charCode = str.charCodeAt(i);        const hexValue = charCode.toString(16).padStart(2, '0');    hex += hexValue;  }  return hex;}function generateRandomString(minLength = 6, maxLength = 10) {    const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';    const length = Math.floor(Math.random() * (maxLength - minLength + 1)) + minLength;  let result = '';  for (let i = 0; i < length; i++) {        const randomIndex = Math.floor(Math.random() * charset.length);    result += charset[randomIndex];  }  return result;}function request_wechatPay(data) {  return request('api/Transactions/UnifiedOrder?trxid='+ data, "GET",data);}function request_GetSiteInfo() {  return request('api/Site/GetSiteInfo', "GET");}function request_GetMiniProgramTransactionsUnpaidQuery(data) {  return request('api/Transactions/GetMiniProgramTransactionsUnpaidQuery', "GET",data);}function request_GetMiniProgramTransactionsUnpaidNozzle(data) {  return request('api/Transactions/GetMiniProgramTransactionsUnpaidNozzle?NozzleId='+data, "GET",data);}function request_Wechatlogin(data) {  return request('api/Auth/Wechatlogin?code='+ data, "GET",data);}function request_AddMiniprogramUser(data) {  return request('api/Site/AddMiniprogramUser', "POST",data);}function request_NozzleAuthorization(data) {  return request('api/Nozzle/NozzleAuthorization?trxid=' +data, "GET",data);}function request_CancelNozzleAuthorization(data) {  return request('api/Nozzle/CancelNozzleAuthorization?trxid=' +data, "GET",data);}function request_RefundTrx(data) {  return request('api/Transactions/RefundTrx', "POST",data);}export default {  request_GetSiteInfo,  request_wechatPay,  request_Wechatlogin,  request_AddMiniprogramUser,  request_NozzleAuthorization,  request_CancelNozzleAuthorization,  request_GetMiniProgramTransactionsUnpaidQuery,  request_GetMiniProgramTransactionsUnpaidNozzle,  request_AddMiniprogramUser,  request_RefundTrx}
 |