getCustomerEncryptionKey - 获取加密秘钥
/**
* 获取加密秘钥
* @param array $params
* @return string
*/
public function getCustomerEncryptionKey(array $params): string
{
//1.ASCII码(字典序-升序)排序
ksort($params);
$string = '';
foreach ($params as $key => $v) {
string .= (string)(key . '=' . $v . '&');
}
$signTemp = string . 'MerchantKey=' . self::MerchantKey;
$absPath = dirname(FILE) . '/test_pri.txt';//(对接替换为自己的私钥)
content = file_get_contents(absPath);
sContent = openssl_pkey_get_private(content);
//5.PHP-SHA256WithRSA 签名算法加密
openssl_sign($signTemp, $signature, $sContent, "SHA256");
openssl_free_key($sContent);
//6.base64转换,得到SignSecret值
return base64_encode($signature);
}
getCurlRequestResult - Curl POST请求函数
/**
* Curl请求函数
* @param string $url 请求地址
* @param array $params 实体参数
* @param int $isPost GET|POST
* @param int $https HTTP|HTTPS
* @param int $isJson Json|-
* @return bool|string
*/
public function getCurlRequestResult($url, params,isPost = 0,https = 0,isJson = 0)
{
$httpInfo = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if ($https) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
}
if ($isPost) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_URL, $url);
} else {
if ($params) {
if (is_array($params)) {
params = http_build_query(params);
}
curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
} else {
curl_setopt($ch, CURLOPT_URL, $url);
}
}
if ($isJson) {
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
"Accept: application/x-www-form-urlencoded",
'Cache-Control: no-cache',
'Pragma: no-cache'
));
}
response = curl_exec(ch);
if ($response === false) {
return false;
}
httpCode = curl_getinfo(ch, CURLINFO_HTTP_CODE);
httpInfo = array_merge(httpInfo, curl_getinfo($ch));
curl_close($ch);
return $response;
}