public function createSign($parameters,$key) {
//签名步骤一:按字典序排序参数
ksort($parameters);
//签名步骤二:拼接参数
$buff = "";
foreach ($parameters as $k => $v){
$buff .= $k . "=" . $v . "&";
}
//签名步骤三:在string后加入KEY
$str = $buff.'key='.$key;
// echo htmlspecialchars($str).'<br>';
$mysign = "";
if($this->sign_type == 'MD5') {
$mysign = md5($str);
$mysign = strtoupper($mysign);//转成大写
}else {
die("暂不支持".$this->sign_type."类型的签名方式");
}
return $mysign;
}
public function para_filter($parameter) { //除去数组中的空值和签名模式
$para = array();
while (list ($key, $val) = each ($parameter)) {
$filter_arr = array('sign');
if( in_array($key,$filter_arr) || $val=="" ){
continue;
}else{
$para[$key] = $parameter[$key];
}
}
return $para;
}
调用
$this->parameters["mchid"]=“xxxxxxxxxxxx”;
......
$this->createSign( $this->para_filter($this->parameters),$this->key);//签名