|
|
@@ -170,6 +170,7 @@ class ESignContractServer
|
|
|
|
|
|
|
|
|
$signers=[];
|
|
|
+ $signUrl = [];
|
|
|
foreach ($signData as $value){
|
|
|
//对应关键字做xy坐标匹配
|
|
|
foreach ($positionData as $item){
|
|
|
@@ -186,11 +187,16 @@ class ESignContractServer
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $signersData = [];
|
|
|
//签署方是机构还是个人
|
|
|
if ($value['auth_type'] == 'PSN'){
|
|
|
$member = Member::where('psnId',$value['id_no'])->first();
|
|
|
- //获取企业签章
|
|
|
+ //记录需要手动签署的
|
|
|
+ $signUrl[]=[
|
|
|
+ 'promissoryName'=>$member['name'],
|
|
|
+ 'psnAccount'=>$member['phone'],
|
|
|
+ 'orgName'=>'',
|
|
|
+ ];
|
|
|
+ //获取签章
|
|
|
$m_id = $member->{'id'};
|
|
|
$seal=MemberSeal::where('m_id',$m_id)->where('seal_status',1)->select(['id','seal_id'])->first();
|
|
|
//印章ID
|
|
|
@@ -223,8 +229,13 @@ class ESignContractServer
|
|
|
],
|
|
|
];
|
|
|
}else{
|
|
|
- $signerType = 1;
|
|
|
$firm = Firm::where('orgId',$value['id_no'])-first();
|
|
|
+ //记录需要手动签署的
|
|
|
+ $signUrl[]=[
|
|
|
+ 'promissoryName'=>$firm['legal_name'],
|
|
|
+ 'psnAccount'=>$firm['phone'],
|
|
|
+ 'orgName'=>$firm['firm_name'],
|
|
|
+ ];
|
|
|
//获取用户签章
|
|
|
$firm_id = $firm->{'id'};
|
|
|
$seal=FirmSeal::where('firm_id',$firm_id)->where('seal_type','CONTRACT')->select(['id','seal_id'])->first();
|
|
|
@@ -282,7 +293,15 @@ class ESignContractServer
|
|
|
$flowId= $this->createByFile($fileId,$file_name.'.pdf',$file_name,$signers);
|
|
|
|
|
|
if($flowId){
|
|
|
- SignContract::where('id',$sign_id)->update(['flow_id'=>$flowId]);
|
|
|
+ SignContract::where('id',$sign_id)->update(['flow_id'=>$flowId,'status'=>1]);
|
|
|
+ foreach ($signUrl as $item){
|
|
|
+ $urlRet= $this->getSignUrl($flowId,$item['psnAccount'],$item['orgName']);
|
|
|
+ if($urlRet){
|
|
|
+ $content='尊敬的'.$item['promissoryName'].',您有待签署合同《'.$file_name.'》,点击签署 '.$urlRet;
|
|
|
+ SmsServer::creatServer()->sendContent($item['psnAccount'],$content);
|
|
|
+ SignContract::where('id',$sign_id)->update(['sign_url'=>$urlRet]);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return ['code'=>1,'msg'=>'发起签署成功'];
|
|
|
}else{
|
|
|
@@ -342,4 +361,49 @@ class ESignContractServer
|
|
|
EsignLogHelper::printMsg("**********基于文件发起签署调用结束**********");
|
|
|
return $signFlowId;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合同签署链接
|
|
|
+ * @param $flowId
|
|
|
+ * @param $psnAccount
|
|
|
+ * @param $orgName
|
|
|
+ * @return null
|
|
|
+ */
|
|
|
+ function getSignUrl($flowId,$psnAccount,$orgName){
|
|
|
+ EsignLogHelper::printMsg("**********获取合同文件签署链接开始**********");
|
|
|
+ $config=$this->config;
|
|
|
+
|
|
|
+ $apiaddr="/v3/sign-flow/%s/sign-url";
|
|
|
+ $apiaddr = sprintf($apiaddr,$flowId);
|
|
|
+ $requestType = HttpEmun::POST;
|
|
|
+ $data = [
|
|
|
+ "signFlowId" =>$flowId,
|
|
|
+ "clientType" =>"ALL",
|
|
|
+ "needLogin" =>false,
|
|
|
+ "operator" => [
|
|
|
+ "psnAccount" =>$psnAccount
|
|
|
+ ],
|
|
|
+ 'organization'=>[
|
|
|
+ 'orgName'=>$orgName
|
|
|
+ ],
|
|
|
+ "urlType" =>2
|
|
|
+ ];
|
|
|
+ $paramStr = json_encode($data);
|
|
|
+
|
|
|
+ $signAndBuildSignAndJsonHeader = EsignHttpHelper::signAndBuildSignAndJsonHeader($config['eSignAppId'], $config['eSignAppSecret'], $paramStr, $requestType, $apiaddr);
|
|
|
+
|
|
|
+ EsignLogHelper::printMsg($signAndBuildSignAndJsonHeader);
|
|
|
+ $response = EsignHttpHelper::doCommHttp($config['eSignHost'], $apiaddr, $requestType, $signAndBuildSignAndJsonHeader, $paramStr);
|
|
|
+ EsignLogHelper::printMsg($response->getStatus());
|
|
|
+ EsignLogHelper::printMsg($response->getBody());
|
|
|
+ $url= null;
|
|
|
+ if($response->getStatus() == 200){
|
|
|
+ $url = json_decode($response->getBody())->data->shortUrl;
|
|
|
+ EsignLogHelper::printMsg("获取合同文件签署链接调用成功,url: ".$url);
|
|
|
+ }else{
|
|
|
+ EsignLogHelper::printMsg("获取合同文件签署链接接口调用失败,HTTP错误码".$response->getStatus());
|
|
|
+ }
|
|
|
+ EsignLogHelper::printMsg("**********获取合同文件签署链接调用结束**********");
|
|
|
+ return $url;
|
|
|
+ }
|
|
|
}
|