PHP的SHA256WithRSA签名和Curl POST请求函数

getCustomerEncryptionKey - 获取加密秘钥

/**

* 获取加密秘钥

* @param array $params

* @return string

*/

public function getCustomerEncryptionKey(array $params): string

{

//1.ASCII码(字典序-升序)排序

ksort($params);

//2.拼接成字符串string

$string = '';

foreach (params as key => $v) {

string .= (string)(key . '=' . $v . '&');

}

//3.拼接得到signTemp字符串

signTemp = string . 'MerchantKey=' . self::$MerchantKey;

//4.获取RSA私钥信息

$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;

}

相关推荐
xlq223222 小时前
22.多态(上)
开发语言·c++·算法
666HZ6662 小时前
C语言——高精度加法
c语言·开发语言·算法
星释2 小时前
Rust 练习册 100:音乐音阶生成器
开发语言·后端·rust
风生u3 小时前
go进阶语法
开发语言·后端·golang
666HZ6663 小时前
C语言——黑店
c语言·开发语言
Gomiko3 小时前
JavaScript基础(八):函数
开发语言·javascript·ecmascript
〝七夜5693 小时前
JVM内存结构
java·开发语言·jvm
初级炼丹师(爱说实话版)3 小时前
JAVA泛型作用域与静态方法泛型使用笔记
java·开发语言·笔记
技术净胜4 小时前
MATLAB二维绘图教程:plot()函数全解析(线条样式/颜色/标记/坐标轴设置)
开发语言·matlab
Slow菜鸟4 小时前
Java开发规范(八)| 安全规范—企业级应用的“架构级底线”
java·开发语言·安全