为插件生成签名

签名生成规则

  • 1、参与签名的 header 参数
const SIGN_FIELD_ARR = [
    'platform',
    'version',
    'versionInt',
    'appId',
    'timestamp',
    'uid',
    'mid',
    'token'
];
1
2
3
4
5
6
7
8
9
10
  • 2、获取签名 App Secret,该值配置在客户端中
  • 3、签名方法
    • 3.1、将 SIGN_FIELD_ARR 中的参数按照参数名 ASCII 码从小到大排序(字典序),使用 URL 键值对的格式(即 key1=value1&key2=value2… )拼接成字符串 stringA
    • 3.2、在 stringA 最后拼接上 &key={app_secret} 得到待签名字符串 stringSignTemp
    • 3.3、对 stringSignTemp 进行 MD5 运算(32 位小写),得到签名值 signValue

生成签名 PHP 示例:

//对数组的值按key排序
ksort($dataMap);

//生成 url 的形式
$params = http_build_query($dataMap);

//生成 sign
$sign = md5($params . "&key={$app_secret}");
1
2
3
4
5
6
7
8
  • 4、加密签名数据
    • 4.1、将 3.1 步骤中的 stringA 最后拼接上 3.3 步骤得到的 signValue 值,格式为 stringA + &sign= + signValue,得到加密字符串 encryptStrTemp
    • 4.2、先使用 base64 加密字符串 encryptStrTemp,再使用 URL Encode 编码一次 base64 加密字符串,得到值 encryptStr
$encryptStr = url_encode(base64_encode($encryptStrTemp))
1

5、替换插件访问路径中的 {sign} 变量名,将 encryptStr 值作为变量值。

扩展资料