云合同_签署

193 阅读6分钟

在这里插入图片描述

(1)注册云合同账号

平台方需登录云合同官网(www.yunhetong.com),注册一个企业账号并完成实名认证后,联系对接人员协助进行开户。

(2)创建平台应用

开发者可登录云合同开放平台(open.yunhetong.com/)创建应用(测试阶段请创建测试应用,项目正式请创建正式应用),并记录应用信息,为后续对接工作开展做好准备工作。

(3)接口

1、获取第三方token
2.1注册个人的时候,走他的(创建个人用户+创建个人印章)
2.2注册企业的时候,走他的(创建企业用户+创建企业印章)
3.根据模版生成合同 contract_templateContract
4.添加签署者
5.合同签署
6. 合同下载/download/contract

其他的

上传文件生成合同

访问路径:/contract/fileContract
请求头参数:

字段类型说明
tokenString平台自身的长效令牌文件

接口参数

字段类型说明
contractFileFile合同文件
contractTitleString合同标题
contractNoString合同自定义编号\可选参数,不传时默认与合同 id 相同

合同模版上传

访问路径:/template/upload
请求头参数:

字段类型说明
tokenString平台自身的长效令牌文件

接口参数

字段类型说明
multipartFileFile合同模版文件,文件大小不超过 10M
templateNameString模版名称,不支持特殊符号,最长支持 40 个字

查看合同详情

访问路径:/contract/detail/{idType}/{idContent}
请求头参数:

字段类型说明
tokenString平台自身的长效令牌文件

接口参数

字段类型说明
idTypeStringid 类型:0 合同 ID,1 合同自定义编号
idContentStringID 内容

我写的

实名认证


header("Content-Type: text/html;charset=utf-8");
  //获取token
		$datass['appId']='2018050916380600068'; 
		$datass['appKey']='JM34AbbcRI9VzQ';
		 
    /* 获取长效令牌 */
		$token =	yunhetong_login("https://api.yunhetong.com/api/auth/login",$datass['appId'],$datass['appKey']);
	
	//创建个人用户
 
	
		$data['uname']= "用户姓名";用户姓名(最长 15 字符)成采南
		$data['identityRegion']= 0;身份地区:0 大陆,1 香港,2 台湾,3 澳门
		$data['certifyNum']= "3714821********";身份证号码,应用内唯一 520181198002175907
		$data['phoneRegion']= 0;手机号地区:0 大陆,1 香港、澳门,2 台湾
		$data['phoneNo']="183********";//手机号:1.大陆,首位为 1,长度 11 位纯数字;2.香港、澳门,长度为 8 的纯数字;3.台湾,长度为 10 的纯数字
		$data['caType']= "B2";//证书类型:B2 长效 CA 证书,固定字段//证书类型:A1 CFCA 场景, A2 CFCA 长效, B1  ZJCA 场景,B2 ZJCA 长效
		$signerId=  user_person("https://api.yunhetong.com/api/user/person",$data,$token);
	 	/* 保存signerId*/
	
// 创建个人印模 

 $datapm['signerId']=$signerId;
 $datapm['borderType']='B2';//边框样式,B1=有边框,B2=无边框
$datapm['fontFamily']='F1'; //字体样式,F1=楷体,F2=华文仿宋,F3=华文楷体,F4=微软雅黑
 	$user_personMoulage= user_personMoulage("https://api.yunhetong.com/api/user/personMoulage",$datapm,$token) ;
 /* 保存user_personMoulage*/
/*  */

    //查询用户
		// $user_userInfo_signerIds=user_userInfo_signerIds("https://api.yunhetong.com/api/user/userInfo/signerIds",'',$token);
		//var_dump($user_userInfo_signerIds); die; /* 获取印模列表 */
//		$signerId=2947848;
  //印模Id
 //$moulageId=4002512;	
	//$data['pageNum']=1;
//$pageSize = $data['pageSize']; 
 //$user_moulageId= user_moulageId("https://api.yunhetong.com/api/user/moulageId",$data,$token);
   //var_dump($user_moulageId);
 

生成合同


   
//根据模版生成合同 contract_templateContract

$datact['contractTitle']="t";
$datact['templateId']="TEM1001739";
 
$datact['contractNo']="t";//可选参数,不传时默认与合同id相同。
$datact['contractData']=['${bianhao}'=>"替换的内容 1"];//必传参数//替换模版中内容占位符结构化字段,该参数需满足json格式


 $contractId=intval(contract_templateContract("https://api.yunhetong.com/api/contract/templateContract",$datact,$token));
 //这个需要保存contractId,

签署合同

//签署合同
//用户id
	$signerId=2947848;
  //印模Id
 $moulageId=4002512;	

 //测试 用的
  $contractId= 1810291629557794;

 
//添加签署者
	$datacs["idType"]=0;
	$datacs["contractId"]=$contractId;
	$datacs["signerId"]=$signerId;
    $datacs["signPositionType"]=1;//签署的定位方式:0=关键字定位,1=签名占位符定位,2=签署坐标
 $datacs["positionContent"]= "jia_sign";//坐标位置为第 20 页(34,57);//对应定位方式的内容,如果用签名占位符 定位可以传多个签名占位符,并以分号隔开,最多 20 个;如果用签署坐标定位, 则该参数包含三个信息:“页面,x 轴坐标,y 轴坐标”(如 20,30,49)
 //CURLOPT_POSTFIELDS => "{\"idType\": \"0\",\n\"idContent\": \"$contractId\",\n\"signers\": [{\"signerId\": \"$signerId\",\n\"signPositionType\": \"1\",\n\"positionContent\": \"88046\",\n\"signValidateType\": \"0\"}\n]\n}",
		 
 
	$datacs["signValidateType"]=0;//签署验证方式:0=不校验,1=短信验证;
	$datacs["signMode"]=1;//印章使用类型(针对页面签署):0=指定印章, 1=每次绘制
	$va=contract_signer("https://api.yunhetong.com/api/contract/signer",$datacs,$token);
	//var_dump($va); 
//合同签署
 
 $datacs2['idType']=0;//参数类型:0 合同 ID,1 合同自定义编号
$datacs2['idContent']=$contractId;//ID 内容
$datacs2['signerId']=$signerId; //签署者 ID,可选参数,使用指定签署者的令牌调用 接口时可不传该参数
$datacs2['sealClass']=0;//印模 ID,可选参数,不传时使用用户最新印模//签章样式,0=常规样式,2=含摘要样式,3=含签 署时间样式,可选参数,不传时使用常规样式
 
$contract_sign=contract_sign("https://api.yunhetong.com/api/contract/sign",$datacs2,$token) ;
var_dump($contract_sign);

合同下载/

//合同下载/download/contract

  $contractId= 1810291629557794;

 $datadc['idType']=0;//参数类型:0 合同 ID,1 合同自定义编号
$datadc['idContent']=$contractId;//ID 内容
   download_contract("https://api.yunhetong.com/api/download/contract",$datadc,$token);
 /*  */

公共方法

<?php


/* 获取长效令牌 */
function yunhetong_login($url,$appId,$appKey){ // 模拟提交数据函数
   	$curl = curl_init();
 
		curl_setopt_array($curl, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
			    CURLOPT_HEADER => true,//false时,取得code
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		  CURLOPT_POSTFIELDS => "{\n\"appId\":\"$appId\",\n\"appKey\":\"$appKey\"\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json"
		  ),
		));
 
		$response = curl_exec($curl);
		
		$err = curl_error($curl);
 
		curl_close($curl);
 
		if ($err) {
		  return "cURL Error #:" . $err.die;
		} else {
			 
		    //echo $response;
				$headArr = explode("\r\n", $response);
				foreach ($headArr as $loop) {
					if(strpos($loop, "token") !== false){
					   $token = trim(substr($loop, 6));
					   //$token = trim($loop);
					}
					if(strpos($loop, "code") !== false){
					   //$code = trim(substr($loop, 6));
					   $rp = trim($loop);
					}
				}
		}
	
			$arr = json_decode($rp, true);
			$code = $arr['code'];//code=200 说明成功
			$msg = $arr['msg'];
			//不成功
			if($code!="200" || !$token){
				print_r( "获取长效令牌,原因:".$msg).die;
			}else{
					return($token); 
			} 
			//
		
		//return $response; // 返回数据,json格式
}
//创建个人用户

function user_person($url,$data,$token){ 
		$userName =$data['uname'];用户姓名(最长 15 字符)成采南
		$identityRegion =$data['identityRegion'];身份地区:0 大陆,1 香港,2 台湾,3 澳门
		$certifyNum =$data['certifyNum'];身份证号码,应用内唯一 520181198002175907
		$phoneRegion =$data['phoneRegion'];手机号地区:0 大陆,1 香港、澳门,2 台湾
		$phoneNo = $data['phoneNo'];//手机号:1.大陆,首位为 1,长度 11 位纯数字;2.香港、澳门,长度为 8 的纯数字;3.台湾,长度为 10 的纯数字
		$caType =$data['caType'];//证书类型:B2 长效 CA 证书,固定字段
 
		$curl2 = curl_init();
		curl_setopt_array($curl2, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		  CURLOPT_POSTFIELDS => "{\n\"caType\": \"$caType\",\n\"certifyNum\": \"$certifyNum\",\n\"identityRegion\": \"$identityRegion\",\n\"phoneNo\": \"$phoneNo\",\n\"phoneRegion\": \"$phoneRegion\",\n\"userName\": \"$userName\"\n}",
		 
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response2 = curl_exec($curl2);
		$err2 = curl_error($curl2);
 
		curl_close($curl2);
 
		if ($err2) {
		    echo "cURL Error #:" . $err2.die;
		} else {
		    //echo $response2;
			$arr2 = json_decode($response2, true);
			$code2 = $arr2['code'];//code=200 说明成功
			$msg2 = $arr2['msg'];
			
				//不成功
				if($code2!=200){
					print_r( "创建个人用户失败,原因:".$msg2).die;
				}else{
					$signerId = $arr2['data']['signerId'];
					return $signerId;die;
						var_dump($arr2);die;
				} 
		} 
 }
 
 //查询个人用户

function  user_userInfo_signerIds($url,$data,$token){ 
		$userName =$data['uname'];用户姓名(最长 15 字符)成采南
		$identityRegion =$data['identityRegion'];身份地区:0 大陆,1 香港,2 台湾,3 澳门
		$certifyNum =$data['certifyNum'];身份证号码,应用内唯一 520181198002175907
		$phoneRegion =$data['phoneRegion'];手机号地区:0 大陆,1 香港、澳门,2 台湾
		$phoneNo = $data['phoneNo'];//手机号:1.大陆,首位为 1,长度 11 位纯数字;2.香港、澳门,长度为 8 的纯数字;3.台湾,长度为 10 的纯数字
		$caType =$data['caType'];//证书类型:B2 长效 CA 证书,固定字段
 
		$curl2 = curl_init();
		curl_setopt_array($curl2, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		  CURLOPT_POSTFIELDS => "{}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response2 = curl_exec($curl2);
		$err2 = curl_error($curl2);
 
		curl_close($curl2);
 
		if ($err2) {
		    echo "cURL Error #:" . $err2.die;
		} else {
		    //echo $response2;
			$arr2 = json_decode($response2, true);
			$code2 = $arr2['code'];//code=200 说明成功
			$msg2 = $arr2['msg'];
			
				//不成功
				if($code2!=200){
					print_r( "查询个人用户,原因:".$msg2).die;
				}else{
					$signerId = $arr2['data']['signerId'];
					return $signerId;die;
						var_dump($arr2);die;
				}
			
			
 
		}
		 
	
 }
 /* 创建个人印模 */
 
 function user_personMoulage($url,$data,$token){
$signerId = $data['signerId'];	
$borderType = $data['borderType'];
$fontFamily = $data['fontFamily']; 
 $curl3 = curl_init();
 
		curl_setopt_array($curl3, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		   CURLOPT_POSTFIELDS => "{\n\"signerId\": \"$signerId\",\n\"borderType\": \"$borderType\",\n\"fontFamily\": \"$fontFamily\"\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response3 = curl_exec($curl3);
		$err3 = curl_error($curl3);
 
		curl_close($curl3);
 
		if ($err3) {
		  echo "cURL Error #:" . $err3.die;
		} else {
		   // echo $response3;
			$arr3 = json_decode($response3, true);
			$code3 = $arr3['code'];//code=200 说明成功
			$msg3 = $arr3['msg'];
				//不成功
				if($code3!=200){
					print_r( "创建个人印模失败,原因:".$msg3).die;
				}else{
					$moulageId = $arr3['data']['moulageId'];
					return $moulageId;die;
						var_dump($arr3);die;
				}
			
		
			
		}
//$moulageId=82;
print_r($moulageId);
 }
  /* 获取印模列表 */
  ///{signerId}/{pageNum}/{pageSize}
  
 
 function user_moulageId($url,$data,$token){
$signerId = $data['signerId'];	
$pageNum = $data['pageNum'];
$pageSize = $data['pageSize']; 
 $curl3 = curl_init();
 
		curl_setopt_array($curl3, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		   CURLOPT_POSTFIELDS => "{\n\"signerId\": \"$signerId\",\n\"pageNum\": \"$pageNum\",\n\"pageSize\": \"$pageSize\"\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response3 = curl_exec($curl3);
		$err3 = curl_error($curl3);
 
		curl_close($curl3);
 
		if ($err3) {
		  echo "cURL Error #:" . $err3.die;
		} else {
		   // echo $response3;
			$arr3 = json_decode($response3, true);
			$code3 = $arr3['code'];//code=200 说明成功
			$msg3 = $arr3['msg'];
				//不成功
				if($code3!=200){
					print_r( "创建个人印模失败,原因:".$msg3).die;
				}else{
					$moulageId = $arr3['data']['moulageId'];
					return $moulageId;die;
						var_dump($arr3);die;
				}
			
		
			
		}
//$moulageId=82;
print_r($moulageId);
 }
 
//根据模版生成合同 contract_templateContract 
   function contract_templateContract($url,$data,$token){ 
 
        $contractTitle=$data['contractTitle'];
        $templateId=$data['templateId'];
		 
		$curl4 = curl_init();
 
		curl_setopt_array($curl4, array(
		  CURLOPT_URL =>$url ,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		   CURLOPT_POSTFIELDS => "{\n\"contractTitle\": \"$contractTitle\",\n\"templateId\": \"$templateId\"\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response4 = curl_exec($curl4);
		$err4 = curl_error($curl4);
 
		curl_close($curl4);
 
		if ($err4) {
		  echo "cURL Error #:" . $err4.die;
		} else {
		   // echo $response4;
			$arr4 = json_decode($response4, true);
			$code4 = $arr4['code'];//code=200 说明成功
			$msg4 = $arr4['msg'];
				//不成功
				if($code4!=200){
					print_r( "创建个人生成合同,原因:".$msg4).die;
				}
			$contractId = $arr4['data']['contractId'];
			$contractId=str_replace(",","",number_format($contractId));
		}
 
 
 
          print_r($contractId);
//$contractId="1804232025535010";
 }
 

//添加签署者
    function contract_signer($url,$data,$token){ 
$idType= $data["idType"];//参数类型:0 合同 ID,1 合同自定义编号
 //ID 内容
	$contractId=str_replace(",","",number_format($data["contractId"]));
$signerId=$data["signerId"];//签署者 id 
$signPositionType = $data["signPositionType"];签署的定位方式:0=关键字定位,1=签 名占位符定位,2=签署坐标
$positionContent = $data["positionContent"];对应定位方式的内容,如果用签名占位符 定位可以传多个签名占位符,并以分号隔开,最多 20 个;如果用签署坐标定位, 则该参数包含三个信息:“页面,x 轴坐标,y 轴坐标”(如 20,30,49$signValidateType = $data["signValidateType"];签署验证方式:0=不校验,1=短信验证
$signMode = $data["signMode"];印章使用类型(针对页面签署):0=指定印章,1=每次绘制

		$curl5 = curl_init();
 
		curl_setopt_array($curl5, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		   //CURLOPT_POSTFIELDS => "{\n\"contractTitle\": \"$contractTitle\",\n\"templateId\": \"$templateId\"\n}",
			 CURLOPT_POSTFIELDS => "{\"idType\": \"$idType\",\n\"idContent\": \"$contractId\",\n\"signers\": [{\"signerId\": \"$signerId\",\n\"signPositionType\": \"1\",\n\"positionContent\": \"$positionContent\",\n\"signValidateType\": \"0\"}\n]\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response5 = curl_exec($curl5);
		$err5 = curl_error($curl5);
 
		curl_close($curl5);
 
		if ($err5) {
		  echo "cURL Error #:" . $err5.die;
		} else {
		    //echo $response5;
			$arr5 = json_decode($response5, true);
			$code5 = $arr5['code'];//code=200 说明成功
			$msg5 = $arr5['msg'];
 
		}
		//不成功
		if($code5!=200){
			print_r( "添加签署者,原因:".$msg5.$code5['code']).die;
		}else{
			 print_r(1);
		}
 
         // print_r($code5);
 }
 
//合同签署 
function contract_sign($url,$data,$token){ 
 $idType= $data['idType'];
$contractId=str_replace(",","",number_format($data["idContent"]));
   $signerId= intval($data['signerId']);
 
		$curl6 = curl_init();
 
		curl_setopt_array($curl6, array(
		  CURLOPT_URL => $url,
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "POST",
		   CURLOPT_POSTFIELDS => "{\n\"idType\": \"$idType\",\n\"idContent\": \"$contractId\",\n\"signerId\": \"$signerId\"\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response6 = curl_exec($curl6);
		$err6 = curl_error($curl6);
 
		curl_close($curl6);
 
		if ($err6) {
		  echo "cURL Error #:" . $err6.die;
		} else {
		    echo $response6;
			$arr6 = json_decode($response6, true);
			$code6 = $arr6['code'];//code=200 说明成功
			$msg6 = $arr6['msg'];
 
		}
		//不成功
		if($code6!=200){
			print_r( "合同签署失败,原因:".$msg6).die;
		}else{
			print_r($response6);
		}
 
 }
 

 //合同下载/download/contract
 function download_contract($url,$data,$token){ 
 $idType= $data['idType'];
$contractId=str_replace(",","",number_format($data["idContent"]));
    //合同下载
 
  //$contractId="1804241101415029";
 
		$curl7 = curl_init();
 
		curl_setopt_array($curl7, array(
		  CURLOPT_URL => "https://api.yunhetong.com/api/contract/download/0/$contractId",
		  CURLOPT_RETURNTRANSFER => true,
		  CURLOPT_ENCODING => "",
		  CURLOPT_MAXREDIRS => 10,
		  CURLOPT_TIMEOUT => 30,
                CURLOPT_SSL_VERIFYPEER => false,
                CURLOPT_SSL_VERIFYHOST => false,
		  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		  CURLOPT_CUSTOMREQUEST => "GET",
		   //CURLOPT_POSTFIELDS => "{\n\"idType\": \"$idType\",\n\"idContent\": \"$contractId\"\n}",
		  CURLOPT_HTTPHEADER => array(
			"cache-control: no-cache",
			"content-type: application/json",
			"token: $token"
		  ),
		));
 
		$response7 = curl_exec($curl7);
		$err7 = curl_error($curl7);
 
		curl_close($curl7);
 
		if ($err7) {
		  echo "cURL Error #:" . $err7.die;
		} else {
		    echo $response7;
			$arr7 = json_decode($response7, true);
			$code7 = $arr7['code'];//code=200 说明成功
			$msg7 = $arr7['msg'];
			$data7 = $arr7['data'];
				//不成功
				if($code7!=200){
					print_r( "合同下载失败,原因:".$msg7).die;
				}else{
					print_r("合同下载成功!");
					header("Location: https://api.yunhetong.com/api/auth/download/$data7"); 
				}
              
		}
 
  } 
 //查看合同详情
 

 //合同存证
 
         // print_r($code6);
/* 
  function user_person($url,$data,$token){ 
 
 }
 */
die;
 
?> 

整理后的

<?php
/*********************/
/*  Version : 10.0    */
/*  Author  : Tech Lee  */
/*********************/
// 实名认证{}

//编号 : $(bianhao)
//甲方 : $(jiafang)
//身份证 : $(idno)

//乙方公司 : $(yifang_company_name)
//乙方代表人 : $(yifang_name)
//乙方信用代码 : $(yifang_xinyongdaima)

//丙方(平台) : $(bingfang)
//丙方(平台) : $(bingfang_xinyongdaima)
//项目名 : $(deal_name)
//
//
//
//甲章 : jia_sign 
//乙章 : yi_sidn 
//丙章 : bing_sign

function TCaptcha(){
 
$aid='2024559842';
$AppSecretKey='0rvpQRhlxmJo29MBSuNf5Lg**';
$Ticket=$_POST['ticket'];
$Randstr=$_POST['randstr'];
$UserIP=$_SERVER['REMOTE_ADDR'];
//初始化
$aa = file_get_contents('https://ssl.captcha.qq.com/ticket/verify?aid='.$aid.'&AppSecretKey='.$AppSecretKey.'&Ticket='.$Ticket.'&Randstr='.$Randstr.'&UserIP='.$UserIP);

return $aa;
exit;
}
function membersuser($date=0){
 
    if(is_array($date)){
        if(M('members')->where($date)->find()){
            return 1;
        }else{
            return 0;
        }
    }else{
        return 0;
    }
}

function create_agreeperson($name , $idCard,$user_phone,$uid){
    $glodata = get_global_setting();
    $per = C('DB_PREFIX');
    //获取长效令牌•访问路径:/auth/login 

    $tokenurl = "https://api.yunhetong.com/api/auth/login";
    $tokendata['appId']=$glodata['appid'];
    $tokendata['appKey']=$glodata['appkey'];
    $tokendata['signerId']='';
    $res = url_request_token($tokendata,$tokenurl);

    //创建个人用户•访问路径:/user/person 
    if($res['code'] == '200'){
        $murl = "https://api.yunhetong.com/api/user/person";
        $mdata['userName']=$name;
        $mdata['identityRegion']=0;
        $mdata['certifyNum']=$idCard;
        $mdata['phoneRegion']=0;
        $mdata['phoneNo']=$user_phone;
        $mdata['caType']='B2';
        $mres = url_request_json($mdata,$murl,$res['token']);
        $mrs = json_decode($mres,true);
        writeLog($mdata);
        writeLog($mrs);
        if($mrs['code']=='200'){
            $m['signerid']=$mrs['data']['signerId'];
            $newid=M('members')->where("id={$uid}")->save($m);
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}
//创建个人印模
function create_personmoulage($uid){
    $glodata = get_global_setting();
    $per = C('DB_PREFIX');
    $minfo = M("members m")->join("{$per}member_info mi ON mi.uid=m.id")->field('m.*,mi.real_name,mi.idcard')->where("m.id={$uid}")->find();
      //获取长效令牌•访问路径:/auth/login 

    $tokenurl = "https://api.yunhetong.com/api/auth/login";
    $tokendata['appId']=$glodata['appid'];
    $tokendata['appKey']=$glodata['appkey'];
    $tokendata['signerId']=$minfo['signerid'];
    $res = url_request_token($tokendata,$tokenurl);
  //创建个人印章•访问路径:/user/personMoulage 


    if($res['code'] == '200'){
        $murl = "https://api.yunhetong.com/api/user/personMoulage";
        $mdata['signerId']=$minfo['signerid'];
        $mdata['borderType']='B1';
        $mdata['fontFamily']='F1';
        $mres = url_request_json($mdata,$murl,$res['token']);
        writeLog($mres);
        $mrs = json_decode($mres,true);
        if($mrs['code']=='200'){
            $m['moulageId']=$mrs['data']['moulageId'];
            $newid=M('members')->where("id={$uid}")->save($m);
            if($newid){
                return true;
            }
        }else{
            return false;
        }
    }else{
        return false;
    }
}
//创建企业用户
function create_agreecompany($name , $idCard,$user_phone,$uid){
    $glodata = get_global_setting();
    $per = C('DB_PREFIX');
       //获取长效令牌•访问路径:/auth/login 
    $tokenurl = "https://api.yunhetong.com/api/auth/login";
    $tokendata['appId']=$glodata['appid'];
    $tokendata['appKey']=$glodata['appkey'];
    $tokendata['signerId']='';
    $res = url_request_token($tokendata,$tokenurl);
    //创建企业用户
    if($res['code'] == '200'){
        $murl = "https://api.yunhetong.com/api/user/company";
        $mdata['userName']=$name;
        $mdata['certifyType']=1;
        $mdata['certifyNum']=$idCard;
        $mdata['phoneNo']=$user_phone;
        $mdata['caType']='B2';
        $mres = url_request_json($mdata,$murl,$res['token']);
        $mrs = json_decode($mres,true);
        writeLog($mrs);
        if($mrs['code']=='200'){
            $m['signerId']=$mrs['data']['signerId'];
            $newid=M('members')->where("id={$uid}")->save($m);
            return true;
        }else{
            return false;
        }
    }else{
        return false;
    }
}
//创建企业印模 
function create_companymoulage($uid){
    $glodata = get_global_setting();
    $per = C('DB_PREFIX');
    $minfo = M("members m")->join("{$per}member_info mi ON mi.uid=m.id")->field('m.*,mi.real_name,mi.idcard')->where("m.id={$uid}")->find();
           //获取长效令牌•访问路径:/auth/login 
    $tokenurl = "https://api.yunhetong.com/api/auth/login";
    $tokendata['appId']=$glodata['appid'];
    $tokendata['appKey']=$glodata['appkey'];
    $tokendata['signerId']=$minfo['signerid'];
    $res = url_request_token($tokendata,$tokenurl);
           //创建企业印模 访问路径:/api/user/companyMoulage 
    if($res['code'] == '200'){
        $murl = "https://api.yunhetong.com/api/user/companyMoulage";
        
        $mdata['signerId']=$minfo['signerId'];
        $mdata['styleType']='1';
        $mdata['textContent']='';
        $mdata['keyContent']='5103010000417';
        $mres = url_request_json($mdata,$murl,$res['token']);
        $mrs = json_decode($mres,true);
        // var_dump($mrs);
        if($mrs['code']=='200'){
            $m['moulageId']=$mrs['data']['moulageId'];
            $newid=M('members')->where("id={$uid}")->save($m);
            if($newid){
                return true;
            }
        }else{
            return false;
        }
    }else{
        return false;
    }
}