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请求参数

参数 类型 是否必填 默认值 说明
contractName string * 合同名称非空,最长100个字符
signatories JSONArray * 签约方,参考后面签约方说明
serverCa int * 0 是否需要服务端云证书:非1不需要(默认);1需要;建议需要,否则影响后续司法服务
dealType int * 0 处理方式:为空或0时默认为手签合同(用户有感知);2只保全;5部份自动签;6HASH只保全;17收集信息批量签
htmlContent string * 合同html源码,fileType=3,时必须传入,utf8编码
fileType int * 0 3 html源码上传
addPage Integer + 0 ofd文件追加内容(0不能追加内容,1允许追加内容),允许追加内容时noEbqSign需要设置为2
positionType int ? 0 指定公章位置类型:0或null使用签字座标位置或不指定签字位置;1表单域定位(表单域如果上传为pdf时,需pdf自行定义好表单域);2关键字定义
faceThreshold int + 验证方式为人脸时必传,人脸识别阀值:默认等级(1-100之间整数),建议大于72,验证方式在签约方中(signatories)设置
complexity string ? 2 人脸难易度,1简单模式(不推荐使用),2正常模式,3困难模式,默认不传,使用2正常模式
orderFlag int ? 0 是否按顺序签字,非1为不按,1为按
sequenceInfo object ? 多合同顺序签约或批量签合同关联信息,参考后面表格说明
notifyUrl string ? 合同签署完成后异步通知地址
noEbqSign int ? 0 不显示ebq的保全章:1不显示但会签名,2不显示也不签名;0或其它-显示
attachFiles file[] ? 合同附件,虽不限个数,但包括合同原文件,不能超过30MB,*SDK引用中的多文件同名情况的上传说明
needQifengSign int ? 0 是否使用骑缝章:1使用;2个人不要企业要,3个人要企业不要
noBorderSign int ? 1 是否不显示个人标准章边框:1不显示,其它显示边框(默认)

http请求其它扩展参数

扩展参数
参数 类型 是否必填 默认值 说明
signDoneTip string ? 合同签约完成页面提示语,字符串(200)
qrCode int ? 0 合同查看二维码0默认不1显示
contractAmount float ? 合同金额
remark string ? 备注
preRecored string ? 前置记录,计录到签约日志中,使证据链更加完整,最大字符不能超过2000char,可传入用户的认证记录日志(如:二要素,三要素,人脸等操作日志)
ifWebRtc int ? 0 是否使用视频签约:0或null不使用;1使用(使用时必须购买相应套餐)
isArchive int ? 1 是否归档:0不归档;1归档(默认),设置不归档可以签约完后再添加签约方,可以失效合同
canRefuse int ? 1 是否可以拒签:0或null不能拒签(默认);1可拒签,用于页面是否显示拒签按钮

signatories字段说明

[!NOTE]
signatories是合同的签署方信息,为JSONArray结构,即JSONObject数组,且签约人不能存在相同的证件号。签署人参数说明如下:

参数 类型 是否必填 默认值 说明
fullName string * 签约方名称,不超过50个字符
identityType int * 身份类型:1身份证,2护照,3台胞证,4港澳居民来往内地通行证,11营业执照,12统一社会信用代码
identityCard string * 个人传身份证号,企业传营业执照号/统一社会信用代码号
mobile string + 手机号码(个人必传),11个字符
email string + 邮箱,企业必传(必须与调“企业实名认证”接口时传的邮箱一致)
orderNum int + 签字顺序:连续签(orderNum只是针对于当前合同,对批量签多个合同顺序不能指定),顺序签时必传,[0,100)
chapteJson JSONArray + 签字位置座标信息:positionType=0时可以传入chapteJson
chapteName string + 签字位置-表单域名ID:positionType=1时必须传入
searchKey string + 签字位置-按关键字签署,positionType=2时必须传入,关键字支持多个;以英文;分隔
authLevel array ? 验证等级(传数组字符串)例:[2,10];2银行卡四要素认证;10银行卡三要素认证;11人脸识别;12短信验证码;13运营商三要素认证
authLevelRange int ? 最小验证种类:默认为authLevel数组长度;必须小于authLevel长度且大于0(等于0时按authLevel数组长度计录);如authLevel=[2,10],authLevelRange=2表过只需要验证其中的两项即可
signLevel int ? 签字类型,标准图形章或公章:0标准图形章;1 企业公章、个人手写;2 企业公章+手写,个人个性章+手写;3个人方形标准章(用户类型是个人且姓名2-4个字符生效,其他情况默认使用系统标准图形章)
noNeedVerify int ? 0 签约方需要手签时是否不先行验证手机或邮箱:1不验证,其它验证(默认)
serverCaAuto int ? 0 是否使用自动签署完成,0或null不使用,1自动(当且只当合同处理方式为部份自动或收集批量签时有效)
signId long ? 企业用户指定签章ID:此值需为商户上传的自定义公章ID,或商户创建的企业的自定义公章ID。自定义公章可通过sass或api上传
qiFengOffset float ? 骑缝章位置设置值为0-1的小数

signatories其它扩展参数

扩展参数
参数 类型 是否必填 默认值 说明
searchExtend JSONObject ? 签字位置-关键字-扩展,positionType=2时可以传入,支持指定查询页数/关键字颜色/透明度/第几个关键字.可参考相关说明
searchConvertExtend JSONObject ? 签字位置-关键字-扩展,positionType=2时可以传入,可配置查询结果的位置偏移.可参考后面说明
forceEvidence int ? 0 强制添加现场:0或null:不强制添加现场,1:强制添加现场
insureYear int ? 买保险年数:1-3购买年限,基它不买;注需要有相应的套餐
readTime int ? 强制阅读时间;当通过君子签在线签合同时,可以设置用户必须预览合同多少秒后,才可以继续签署合同
nameHideStatus long ? 标准章时是否对个人或企业章图片打码:0不打,1打码(章图片)
h5FaceOrderNo string ? h5人脸订单号,如使用过君子签提供的人脸认证服务可以上传其订单号(生成签约日志时会记录,并会保全到证据中)
onlyVideoEvidence string ? 0 现场存证只能上传视频:1是,其它不是(默认)
evidenceTitle string ? 0 现场存证自定义标题(注:仅批量签生效)
evidenceHeading string ? 现场存证主标题(注:仅批量签生效)
videoTitle string ? 视频录制提示标题(注:仅批量签生效)
videoReadContent string ? 视频录制提示读内容(注:仅批量签生效)
certigierName string ? 授权人姓名
certigierCardNo string ? 授权人身份证号
certigierMobile string ? 授权人手机号
certigierId string ? 授权人ID
remarkText json ? 备注文本,参考后面表格说明
remarkDate json ? 备注日期,参考后面表格说明
frontIdentityCard string ? 参数数据来源文件上传接口(v2/file/upload)返回值 个人身份证正面图片(safeKeepLetterFlag=1且保管函对象是个人时必传)
versoIdentityCard string ? 参数数据来源文件上传接口(v2/file/upload)返回值 个人身份证反面图片(safeKeepLetterFlag=1且保管函对象是个人时必传)
businessLicenseImg string ? 参数数据来源文件上传接口(v2/file/upload)返回值 企业营业执照图片(safeKeepLetterFlag=1且保管函对象是企业时必传)
frontLegalIdentityCard string ? 参数数据来源文件上传接口(v2/file/upload)返回值 企业法人身份证正面图片(safeKeepLetterFlag=1且保管函对象是企业时必传)
versoLegalIdentityCard string ? 参数数据来源文件上传接口(v2/file/upload)返回值 企业法人身份证反面图片(safeKeepLetterFlag=1且保管函对象是企业时必传)

sequenceInfo字段说明

[!NOTE]
sequenceInfo 用于指定多个不同合同之间的关联顺序。可用于合同的在线连续签署,和批量一次性签署合同文件。为JSONObject结构,参数说明如下:

参数 类型 是否必填 默认值 说明
businessNo string * 客户方合同的唯一编号,可用于批量签署,由于客户指定
sequenceOrder int * 签约合同在业务中的顺序号,为[1,20)整数
totalNum int * 总份数,为[1,20)整数

remarkText字段说明

[!NOTE]
remarkText 备注

参数 类型 是否必填 默认值 说明
chapteJson JSONArray + 备注内容位置座标信息:positionType=0时可以传入chapteJson
chapteName string + 备注内容位置-表单域名ID:positionType=1时必须传入
searchKey string + 备注内容位置-按关键字签署,positionType=2时必须传入,关键字支持多个;以英文;分隔
searchExtend JSONObject ? 备注内容位置-关键字-扩展,positionType=2时可以传入,支持指定查询页数/关键字颜色/透明度/第几个关键字.可参考相关说明
searchConvertExtend JSONObject ? 备注内容位置-关键字-扩展,positionType=2时可以传入,可配置查询结果的位置偏移.可参考后面说明
keySearchType int ? 默认搜索工具使用,null或0原始搜索工具,1使用增强搜索工具
fontSize int ? 字体大小
width int ? 备注内容区域宽度
height int ? 备注内容区域高度
content string ? 备注内容
positionType int ? 指定备注内容位置类型:0或null使用签字座标位置或不指定签字位置;1表单域定位(表单域如果上传为pdf时,需pdf自行定义好表单域);2关键字定义

remarkDate字段说明

[!NOTE]
remarkDate 备注日期

参数 类型 是否必填 默认值 说明
chapteJson JSONArray + 备注日期位置座标信息:positionType=0时可以传入chapteJson
chapteName string + 备注日期位置-表单域名ID:positionType=1时必须传入
searchKey string + 备注日期位置-按关键字签署,positionType=2时必须传入,关键字支持多个;以英文;分隔
searchExtend JSONObject ? 备注日期位置-关键字-扩展,positionType=2时可以传入,支持指定查询页数/关键字颜色/透明度/第几个关键字.可参考相关说明
searchConvertExtend JSONObject ? 备注日期位置-关键字-扩展,positionType=2时可以传入,可配置查询结果的位置偏移.可参考后面说明
keySearchType int ? 默认搜索工具使用,null或0原始搜索工具,1使用增强搜索工具
fontSize int ? 字体大小
width int ? 备注日期区域宽度
height int ? 备注日期区域高度
dateFormatType int ? yyyy年MM月dd日(默认),1:yyyy-MM-dd,2:yyyy/MM/dd,指定日期格式
positionType int ? 指定备注日期位置类型:0或null使用签字座标位置或不指定签字位置;1表单域定位(表单域如果上传为pdf时,需pdf自行定义好表单域,html及url及tmpl等需定义好input标签);2关键字定义

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);

results matching ""

    No results matching ""