diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/AppointmentController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/AppointmentController.php index 477ddb5..5f8ebb3 100644 --- a/Laravel/app/Http/Controllers/API/Admin/YeWu/AppointmentController.php +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/AppointmentController.php @@ -29,11 +29,20 @@ class AppointmentController extends Controller $source='接口'; $info=request('info'); //HSM加密 - $HSM =\App\Lib\HSM::HsmEncrypt($info['id_card_num']); - if($HSM['status']!=true){ - return \Yz::echoError1('身份证号加密失败'); + $HSM_sfz =\App\Lib\HSM::HsmEncrypt($info['id_card_num']); + if($HSM_sfz['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); } - $info['id_card_num']=$HSM['data']; + $info['id_card_num']=$HSM_sfz['data']; + + if(isset($info['tel'])){ + $HSM_tel =\App\Lib\HSM::HsmEncrypt($info['tel']); + if($HSM_tel['status']!=true){ + return \Yz::echoError1('调用HSM加密失败'); + } + $info['tel']=$HSM_tel['data']; + } + $c=DB::table('appointment_record as a') ->where([['a.id_card_num','=',$info['id_card_num']],['a.is_del','=',0],['a.fee_type','=',0],['a.created_at','>=',$firstDay],['a.created_at','<=',$lastDay]])->get(); @@ -47,8 +56,12 @@ class AppointmentController extends Controller $result['msg']='可以继续,本年度无免费体检记录'; $result['info']=$c; } - - + $currentDateTime = date('Y-m-d H:i:s'); + $org_code=isset($info['org_code'])?$info['org_code']:''; + $Hmac=\App\Lib\HSM::Hmac($info['name'].$info['id_card_num'].$info['tel'].$org_code.$currentDateTime); + if($Hmac['status']!=true){ + return \Yz::echoError1('HMAC摘要失败'); + } $i=DB::table('appointment_record')->insert([ 'source'=>$source, 'type'=>$info['type'], @@ -61,9 +74,10 @@ class AppointmentController extends Controller //'content'=>json_encode($info['content']), 'content'=>isset($info['content'])?json_encode($info['content'],JSON_UNESCAPED_UNICODE):'', 'fee_type'=>$info['fee_type'], - 'org_code'=>isset($info['org_code'])?json_encode($info['org_code'],JSON_UNESCAPED_UNICODE):'', - 'org_name'=>isset($info['org_name'])?json_encode($info['org_name'],JSON_UNESCAPED_UNICODE):'', - + 'org_code'=>$org_code, + 'org_name'=>isset($info['org_name'])?$info['org_name']:'', + 'created_at'=>$currentDateTime, + 'hmac'=>$Hmac['data'], ]); if($i){ diff --git a/Laravel/app/Http/Controllers/TestController.php b/Laravel/app/Http/Controllers/TestController.php index dc2f49f..ce92f49 100644 --- a/Laravel/app/Http/Controllers/TestController.php +++ b/Laravel/app/Http/Controllers/TestController.php @@ -34,7 +34,8 @@ class TestController extends Controller } public function mm_test() { - $a= HSM::HsmEncrypt("dsf"); + $a= HSM::Hmac("");//测试Hmac摘要 + // $a= HSM::HsmEncrypt("dsf"); // $a= HSM::HsmDecrypt("fd01ede26c7ba22caa1b86b3941b652c"); return json_encode( $a, JSON_UNESCAPED_UNICODE); } diff --git a/Laravel/app/Lib/HSM.php b/Laravel/app/Lib/HSM.php index 1123e0c..6b8d813 100644 --- a/Laravel/app/Lib/HSM.php +++ b/Laravel/app/Lib/HSM.php @@ -50,6 +50,26 @@ class HSM return ['status'=>false]; } } + //计算 HMAC + public static function Hmac($or_str) + { + $str = bin2hex($or_str); + $url= self::$baseurl."/api/hsm/digest/macInternal"; + $data=[ + "keyIndex"=>self::$keyIndex, + "macAlg"=>'HMac-SM3', + "plainData"=>$str + ]; + $data=json_encode($data); + $encryptStr=self::post($url,$data); + + $r_data=json_decode($encryptStr, true); + if($r_data['status']==0){ + return ['status'=>true,'data'=>$r_data['body']['mac']]; + }else{ + return ['status'=>false]; + } + } public function post($url, $data_string,$or_str='') { $curl = curl_init();