$v) { if(is_array($v) || isEmpty($v) || $k == 'sign' || $k == 'sign_type') continue; $signStr .= $k . '=' . $v . '&'; } $signStr = substr($signStr, 0, -1); return $signStr; } //生成签名 static public function makeSign($data, $md5key) { $sign_type = $data['sign_type'] ? $data['sign_type'] : 'MD5'; $signStr = self::getSignContent($data); if($sign_type == 'RSA'){ global $conf; $private_key = base64ToPem($conf['private_key'], 'PRIVATE KEY'); $pkey = openssl_pkey_get_private($private_key); if(!$pkey) return false; openssl_sign($signStr, $sign, $pkey, OPENSSL_ALGO_SHA256); return base64_encode($sign); }else{ $sign = md5($signStr . $md5key); return $sign; } } //验证签名 static public function verifySign($data, $md5key, $publicKey) { if(!isset($data['sign'])) throw new Exception('缺少签名参数'); $sign_type = $data['sign_type'] ? $data['sign_type'] : 'MD5'; if($sign_type == 'RSA'){ $public_key = base64ToPem($publicKey, 'PUBLIC KEY'); $pkey = openssl_pkey_get_public($public_key); if(!$pkey) throw new Exception('签名校验失败,商户公钥错误'); $signStr = self::getSignContent($data); $result = openssl_verify($signStr, base64_decode($data['sign']), $pkey, OPENSSL_ALGO_SHA256); return $result === 1; }else{ $sign = self::makeSign($data, $md5key); return $sign === $data['sign']; } } // 页面支付返回信息 static public function echoDefault($result){ global $cdnpublic,$order,$conf,$sitename,$ordername,$siteurl; $type = $result['type']; if(!$type) return false; switch($type){ case 'jump': //跳转 $html_text = ''; if(isset($result['submit']) && $result['submit']){ submitTemplate($html_text); }else{ echo $html_text; } break; case 'html': //显示html $html_text = $result['data']; if(isset($result['submit']) && $result['submit'] && substr($html_text, 0, 6) == '