1.2.2 签名规则

签名

开户时给的配置文件里商户号和私钥key,请自行保存

生成签名

签名生成规则

  • 筛选 获取所有请求参数,不包括字节类型参数,如文件、字节流,剔除sign字段。

  • 排序 将筛选得到的参数按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符 则按照第二个字符的键值ASCII码递增排序,以此类推。

  • 拼接 将排序后的参数与其对应值,组合成"参数=参数值"的格式,并且把这些参数用&字符连接起来, 最后再拼接"&key={商户私钥key}",此时生成的字符串为待签名字符串。

  • 签名 用MD5算法对生成的待签名字符串逬行加密,获得签名。

案例

<?php
function sign($data){
    //解码
    foreach ($data as $key => &$value) {
        $value = urldecode($value);
    }
    unset($value);
    //如果有sign,去除sign
    if (isset($data['sign'])){
        unset($data['sign']);
    }
    $key = '121111as2d12a2s1da1das'; //商户秘钥
    ksort($data); //数组正序排序
    $params_str = urldecode(http_build_query($data)); //拼接
    $params_str =  $params_str.'&key='.$key; //拼接商户秘钥在最后面
    return md5($params_str); //返回md5结果
}

验证签名

  • 首先取出参数sign,然后把获得的参数(剔除sign)按照接口签名的规则生成待 签名字符串。

  • 通过DM5算法对生成的待签名字符串逬行加密,得到的签名再与原sign对比。

Last updated