Sign($data);//签名 ksort($data); // var_dump($data);die; return $data; } //RSA签名 public function Sign(array $array){ ksort($array); $bufSignSrc = $this->ToUrlParams($array); //用商户的RSA私钥进行签名 $private_key = Env::get('AllinPay.cusRsaPrivateKey'); $private_key = chunk_split($private_key , 64, "\n"); $key = "-----BEGIN RSA PRIVATE KEY-----\n".$private_key."-----END RSA PRIVATE KEY-----"; if(!openssl_sign($bufSignSrc, $signature, $key)) { echo 'sign fail'; } //加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 return base64_encode($signature); } //生成键值对字符串 public function ToUrlParams(array $array) { $buff = ""; foreach ($array as $k => $v) { if($v != "" && !is_array($v)){ $buff .= $k . "=" . $v . "&"; } } $buff = trim($buff, "&"); return $buff; } /** * 校验签名 * @param array 参数 * @param unknown_type appkey */ public function ValidSign(array $array){ $sign =$array['sign']; unset($array['sign']); ksort($array); $bufSignSrc = $this->ToUrlParams($array); //通联的公钥进行验签 $public_key = Env::get('AllinPay.allpayrsaPublicKey'); $public_key = chunk_split($public_key , 64, "\n"); $key = "-----BEGIN PUBLIC KEY-----\n".$public_key."-----END PUBLIC KEY-----\n"; $result= openssl_verify($bufSignSrc,base64_decode($sign),$key); return $result; } }