uniapp-app/utils/sign.js
2025-09-25 10:28:27 +08:00

50 lines
1.2 KiB
JavaScript

import api from '@/api/api.js'
import sortObj from '@/utils/sort'
import version from '@/utils/version.js'
import client_type from '@/utils/client_type.js'
import { Base64 } from 'js-base64'
import { md5 } from 'js-md5'
function formatString(obj) {
let concatenated = ''
for (const key in obj) {
if (concatenated) {
concatenated += key + obj[key]
} else {
concatenated = key + obj[key]
}
}
return concatenated
}
function toBase64Url(str) {
return str.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')
}
export async function createSignedPostData(extraData = {}) {
try {
const res = await api.getTimeStamp()
const timestamp = res.data.timestamp.toString()
const basePayload = {
version: version,
user_uuid: '',
client_type: client_type,
timestamp: timestamp
}
const postData = { ...basePayload, ...extraData }
const sorted = sortObj(postData)
const str1 = formatString(sorted).replace(' ', '')
const str2 = str1 + md5(timestamp)
const str3 = md5(str2)
const sign = toBase64Url(Base64.encode(str3))
return { postData, sign }
} catch (err) {
console.log(err)
return { postData: {}, sign: '' }
}
}
export default { createSignedPostData }