接口:调整余额,加密签名实现代码,PHP语言版本
金蝶云社区-程序员
程序员
1人赞赏了该文章 1339次浏览 未经作者许可,禁止转载编辑于2019年09月24日 10:52:35

[code] $public_key = 'djfkdfjj38eu34jkfmgmnk**********'; //公钥
//要加密的参数
$post_data = [
'id'=>'100000222', //会员ID
'changeBalance'=>500, // 调整金额
];
ksort($post_data); //排序
$string =ToUrlParams($post_data); //格式化参数
$sign = public_encrypt($string,$public_key); //生成加密签名
//$sign 就是得到的加密签名,然后调用接口的时候,带上这个参数
//调用接口代码忽略,请自行查看文档

/**
* 格式化参数格式化成url参数
*/
function ToUrlParams($post_data)
{
$buff = "";
foreach ($post_data as $k => $v)
{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}

$buff = trim($buff, "&");
return $buff;
}
/**
*获取公共key字符串 重新格式化 为保证任何key都可以识别
*/

function get_public_key($public_key){
$search = [
"-----BEGIN PUBLIC KEY-----",
"-----END PUBLIC KEY-----",
"\n",
"\r",
"\r\n"
];
$public_key=str_replace($search,"",$public_key);
return $search[0] . PHP_EOL . wordwrap($public_key, 64, "\n", true) . PHP_EOL . $search[1];
}

/**
*
* 用公密钥加密
* $input 需要加密的字符串
* $public_key 公钥
*/
function public_encrypt($input,$public_key) {

$public_key = openssl_pkey_get_public(get_public_key($public_key));

openssl_public_encrypt($input,$output,$public_key);

return base64_encode($output);

}[/code]