签名
private function sign($map , $key, $type ='MD5')
{
if (!empty($map)) {
ksort($map);
$url = $this->createLinkstring($map);
$url = $url . '&key='.$key;
if ($type === 'MD5') {
$url = strtoupper(md5($url));
} else {
$url = hash_hmac('sha256',$url,$key);
}
} else {
throw new RuntimeException('签名数据异常!!');
}
//签名步骤四:所有字符转为大写
return strtoupper($url);
}
public function createLinkstring($para)
{
// ksort($para);
$arg = "";
while (list ($key, $val) = $this->fun_adm_each($para)) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,strlen($arg)-1);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
有一个点:之前的统一下单接口的加密方式是MD5
,这次代码忽然就用不了,之后我改成了sha256
成功了,然后我看了一下官方文档也没看出什么问题,我同事也是同样的问题,他的代码是他自己的,但是也是换成sha256签名就过了