signatureUtil.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // signatureUtil.js
  2. import md5 from "js-md5";
  3. export function signatureGenerate({ data, url, headers }) {
  4. // 参数签名 密钥 + 时间戳 + header参数 + url
  5. // 密钥
  6. let secret = "3g7Xn1yl";
  7. // 时间戳
  8. let timestamp = new Date().getTime();
  9. // post参数
  10. let dataStr = dataSerialize(dataSort(data));
  11. // console.log("签名部分,排序后的请求参数");
  12. // console.log(dataStr);
  13. let str = (url + dataStr + "timestamp=" + timestamp).toUpperCase() + secret;
  14. const sign = md5(str).toUpperCase();
  15. return {
  16. signature: sign,
  17. timestamp,
  18. secret,
  19. };
  20. }
  21. // 参数排序
  22. function dataSort(obj) {
  23. if (JSON.stringify(obj) == "{}" || obj == null) {
  24. return {};
  25. }
  26. let key = Object.keys(obj).sort();
  27. let newObj = {};
  28. for (let i = 0; i < key.length; i++) {
  29. newObj[key[i]] = obj[key[i]];
  30. }
  31. return newObj;
  32. }
  33. // 参数序列化
  34. function dataSerialize(sortObj) {
  35. let strJoin = "";
  36. for (let key in sortObj) {
  37. if (notObject(sortObj[key])) {
  38. strJoin += key + "=" + sortObj[key] + "&";
  39. }
  40. }
  41. // console.log(strJoin)
  42. return strJoin;
  43. }
  44. function notObject(value) {
  45. return typeof value != 'object' ;
  46. }