package main
import (
"crypto/hmac"
"crypto/sha256"
"encoding/hex"
"fmt"
"sort"
"strings"
)
func generateSignature(params map[string]string, timestamp int64, secretKey string) string {
// 步骤1:按 key 排序
keys := make([]string, 0, len(params))
for k := range params {
keys = append(keys, k)
}
sort.Strings(keys)
// 拼接
var queryParts []string
for _, k := range keys {
queryParts = append(queryParts, fmt.Sprintf("%s=%s", k, params[k]))
}
queryString := strings.Join(queryParts, "&")
// 步骤2:拼接时间戳
payload := fmt.Sprintf("%s&time=%d", queryString, timestamp)
// 步骤3:计算 HMAC-SHA256
h := hmac.New(sha256.New, []byte(secretKey))
h.Write([]byte(payload))
return hex.EncodeToString(h.Sum(nil))
}