html源码发起
[!NOTE]
通过html源码发起合同签署,可以发起: 半自动签署,手动签署(用户有感知),保全存证,hash保全,批量签署合同等多种合同类型。1、html源码发起签署,需要utf-8编码。
2、接口对签署人为个人时,不会校验姓名+身份证号+手机号的真实性,需要开发者确保真实性;君子签可单独提供个人身份证二要素、运营商三要素等的校验接口,需要联系商务充值后才能使用。
3、接口中签署人信息(证件号)不能重复,同一个签署人可以设置多个签字位置,可以针对不同签署人分别设置验证方式(人脸,银行卡,短信验证码等)、签署方式等。
4、该调用接口成功后返回APL开头的合同编号,开发者需要保存该合同编号,以便后续接口调用。
5、签字位置设置说明:接口支持关键字定位,坐标(X,Y)定位,表单域定位,详细说明可参考“签字位置指定”说明
http请求方式
[!NOTE]
POST multipart/form-data
http请求地址
[!NOTE]
$SERVICE_URL/v2/sign/applySign #其中$SERVICE_URL为生产或测试的地址
http请求参数
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| htmlContent | string | * | 合同html源码,fileType=3,时必须传入,utf8编码 | |
| fileType | int | * | 0 | 3 html源码上传 |
| 其他参数说明参考“签约发起-文件类API” |
http返回参数
[!NOTE]
返回response为application/json的数据,其字段说明如下
| 参数 | 类型 | 是否必返回 | 说明 |
|---|---|---|---|
| success | bool | * | 成功true;异常false |
| msg | string | ? | 异常时,返回异常原因 |
| resultCode | string | ? | 异常时返回 |
| data | string | ? | 合同编号信息(APLXXXXX) |
[!NOTE]
返回结果,参考:
//{"msg":"app_secret不可用","resultCode":"HTTP_PARAM_ERROR","success":false}
//{"success":true,data:"APLXXXXXXXXXX"}
JAVA实现
Map<String, Object> params=bodyParams;
String url=SERVICE_URL+"/v2/sign/applySign";
params.put("contractName","合同名称"); //合同名称
params.put("serverCa",1); //使用云证书
params.put("fileType",3);
params.put("htmlContent","<meta charset=\"utf-8\">html文件信测试场侧hi是测测测测测\" +\n" +
" \"<input type=\"text\" name=\"ebq\" style=\"width:0;height:0;border:0;margin:0;padding:0;\">\"+\n" +
" \"<br/><br/><br/><br/><br/><br/><br/><br/><input type=\"text\" name=\"ebq\" style=\"width:0;height:0;border:0;margin:0;padding:0;\">"); params.put("dealType",5); //指定合同文件签署方式(5为部分自动签,0手动签,1自动签,2只报全,6 HASH只保全,17收集信息批量签)
params.put("positionType",0); //指定签字位置类型(0签字坐标,1表单域,2关键字)
// params.put("addPage",1);//ofd文件追加内容,noEbqSign需要设置为2
// params.put("noEbqSign",2);//不要保全章
/**
* 签约方1(个人)
*/
JSONArray signatories=new JSONArray();
SignatoryReq sReq=new SignatoryReq();
signatories.add(sReq);
sReq.setFullName("测试"); //姓名
sReq.setIdentityType(1); //证件类型
sReq.setIdentityCard("500225xxxx");//身份证号
sReq.setMobile("186235xxx"); //手机号
sReq.setChapteJson("[{\"page\":0,\"chaptes\":[{\"offsetX\":0.3047,\"offsetY\":0.2677}]},{\"page\":4,\"chaptes\":[{\"offsetX\":0.2378,\"offsetY\":0.1681}]}]");//坐标(X Y)定位签字位置
// sReq.setSearchKey("服务组件");//关键字定位签字位置
sReq.setNoNeedVerify(1); //取消签约前短信校验
sReq.setServerCaAuto(0);//是否使用自动签署完成,0或null不使用,1自动(当且只当合同处理方式为部份自动或收集批量签时有效)
sReq.setSignLevel(1);//签字类型,标准图形章或公章:0标准图形章,1公章或手写,2公章手写或手写,3个人方形标准章(用户类型是个人且姓名2-4个字符生效,其他情况默认使用系统标准图形章)
/**
* 签约方2(企业)
*/
sReq=new SignatoryReq();
signatories.add(sReq);
sReq.setFullName("重庆小熊文化有限公司"); //企业姓名
sReq.setIdentityType(11); //证件类型
sReq.setIdentityCard("9999999XXXXX9");//营业执照号
sReq.setEmail("1XXXX@111.com"); //在君子签注册认证的邮箱
sReq.setChapteJson("[{\"page\":4,\"chaptes\":[{\"offsetX\":0.121,\"offsetY\":0.3941}]}]");//坐标(X Y)定位签字位置
// sReq.setSearchKey("服务组件");//关键字定位签字位置
sReq.setSignLevel(0);
sReq.setNoNeedVerify(1);
sReq.setServerCaAuto(1);//当前签约方自动签署
params.put("signatories",signatories.toJSONString());
System.out.println(signatories.toJSONString());
/* params.put(new String("attachFiles"),new File("/per.png"));//这里必须用new String,因为使用的是IdentityHashMap(为了多个file的同name上传)
params.put(new String("attachFiles"),new File("/ent.png"));*/
//params.put("attachFiles",new File("/per.png"));
//params.put("attachFiles",new File("/ent.png"));
String str= HttpClientUtils.init().getPost(url,null,params,true);
System.out.println(str);