You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.1 KiB
PHP

<?php
namespace App\Services;
use App\Lib\Tools;
use Exception;
class ZhongKangService
{
private $channelSecret='fa7c9de77b0aad6ff176d7ba76827658'; //测试环境
//private $channelSecret='3fe0b8b5e600d38506c65321a0979690'; //正式环境
private $BaseUrl='https://dev.viptijian.com/thirdchannel/hnxd/'; //测试环境
//private $BaseUrl='https://backserv.viptijian.com/thirdchannel/hnxd/'; //正式环境
//查询核销码
public function GetHexiaoCode($code_num,$user_name,$user_id_number){
$data=[
'code_num'=>$code_num,
'timestamp'=> round(microtime(true) * 1000),
];
$sign=$this->sign($data,$this->channelSecret);
$data['sign']=$sign;
$query_string = http_build_query($data);
$send_data=[
'code_num'=>$code_num,
'user_name'=>$user_name,
'user_id_number'=>$user_id_number,
];
$Tools=new Tools();
return $Tools->Post($this->BaseUrl.'order/getVerifyCode?'.$query_string,$send_data,'查询核销码','中康');
}
public function HandleTransferCode($type,$code_num,$user_name,$user_id_number){
$data=[
'code_num'=>$code_num,
'timestamp'=> round(microtime(true) * 1000),
];
$sign=$this->sign($data,$this->channelSecret);
$data['sign']=$sign;
$query_string = http_build_query($data);
$send_data=[
'type'=>$type,
'code_num'=>$code_num,
'user_name'=>$user_name,
'user_id_number'=>$user_id_number,
];
$Tools=new Tools();
return $Tools->Post($this->BaseUrl.'order/completeVerify?'.$query_string,$send_data,'操作核销码','中康');
}
function sign($params, $channelSecret) {
// 移除可能存在的sign参数
unset($params['sign']);
// 对参数键名进行字典顺序排序
ksort($params);
// 拼接排序后的参数
$paramStr = '';
foreach ($params as $key => $value) {
if ($key != 'sign') {
$paramStr .= $key . $value;
}
}
// 生成签名
try {
$calcSign = hash_hmac('sha256', $paramStr, $channelSecret, false);
return strtoupper($calcSign);
} catch (Exception $ex) {
error_log("加密失败: " . $ex->getMessage());
return '';
}
}
}