# 签名算法
- 将所有请求参数(key,value 为一组),对数据结构按照key的升序,重新排序
- 需要对null值进行过滤
- 需要将boolean型进行转换为1和0
- 将排序后参数组合为新的字符串 (keyvaluekeyvalue 中间无分割符)
- 将生成好的字符串进行MD5加密
- 将新的字符串,统一为大写字符串
- 将生成好的字符串加上“私钥”,形成新的字符串 (私钥为ERP系统里面生成)
- 再进行一次MD5加密,得到加密后的字符串
- 再统一为大写字符串,得到最终的签名字符串
# php 示例:
$private_key = '123456';
static function gen_sign($params){
return strtoupper(md5(strtoupper(md5(self::assemble($params))).$this->private_key));}
static function assemble($params){
if(!is_array($params)) return null;
ksort($params, SORT_STRING);
$sign = '';
foreach($params AS $key=>$val){
if(is_null($val)) continue;
if(is_bool($val)) $val = ($val) ? 1 : 0;
$sign .= $key . (is_array($val) ? self::assemble($val) : $val);
}
return $sign;
}