接口说明
1.客户端消息类 :ClientMessage
调用相关接口后, 对应人人法响应的数据均封装在此消息类中, 包括响应状态码,响应提示信息。
消息类属性:
private String statusCode; //返回状态码
private String statusInfo; //返回状态信息
private String reqJsonBody; //请求源数据
private String respJsonBody; //响应源数据
private Sign sign; //客户端签名对象
private List<Sign> signList; //客户端签名对象列表
2. 客户端签署对象:Sign
此对象封装了人人法响应的相关签署的数据.
签署对象属性:
privateString signSn; //签署唯一编号(人人法服务器生成)
privateString businessNum; //签署唯一业务编号(用户服务器生成)
privatebyte[]signedPdf; //签署完成后的 pdf 文件
privateint state; //签署状态
privateStringqrcode; //签署二维码数据
privateString creatTime; //签署创建时间
privateString signTime; //签署时间
3.客户端签署接口服务类:ElecSignService
包含电子签署相关的所有接口,即3.2.4, 3.2.5, 3.2.6 的所有接口
3.1 初始化:
new ElecSignService(String rrlServer, int port)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
rrlServer | String | 必选 | 人人法电子签署服务器地址,默认为 www.renrenlaw.com |
port | int | 必选 | 人人法电子签署服务器端口,默认为 443 |
4.客户端签署相关接口
4.1 设置应用帐号 :setAccount
功能简介: 设置应用帐号。
原型:
public void setAccount(String appId, String appSecret)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
appId | String | 必选 | 应用 ID,用于人人法电子签署系统接入身份识别. |
appSecret | String | 必选 | 应用 SECRET,用于人人法电子签署系统接入身份识别。 |
4.2 设置合同模板数据 :setTemplate
功能简介: 设置合同模板数据。
原型:
public void setTemplate(String templateSn, String[]answers,boolean underline, Map<Integer, String[]> addTableContent)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
templateSn | String | 必选 | 模板编号,用于人人法调用对应的合同模板。 |
answers | String[] | 可空 | 默认为 null,模板填充数据,这些数据会填充到对 应的合同模板中,从而生成相对应的合同。 |
underline | boolean | 必选 | 默认为 flase,生成的合同中, 未填充数据处是否保留下划线 |
addTableContent | Map<Integer, String[]> | 可空 | 默认为 null,表格填充数据 |
参数示例:
String templateSn= "CT17040611593771672859858E5BD29D";
String[]answers= {"ZTTZ-10000703","2017 年 01 月 12 日","2017 年 03 月 12 日","张三"};
boolean underline=false;
4.3 设置签署数据 :setSignData
功能简介: 设置此次签署相关数据。
原型:
public void setSignData(String businessNum,int signType, String notifyUrl)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
businessNum | String | 必选 | 签署唯一业务编号,由用户自己生成,合同签署完成后人人法会将此编号传回。 |
signType | int | 必选 | 签署类型, signType=1:仅有企业签章。 signType=2:仅有个人默认签名。 signType=3:企业签章加个人默认签名。 signType=4:企业签章加个人手写签名。 |
notifyUrl | String | 可空 | 签署完成后的回调地址,仅在 signType=4 时有效,即当signType=4 需要在移动设备上手签时必需提 供。 |
参数示例:
String businessNum="JKHT20161111";
int signType=3;
String notifyUrl="https://www.renrenlaw.com/sign/notify";
4.4 设置企业签章:setSealsOnCert
功能简介:设置企业签章数据,已经申请了企业签章证书。
原型:
public void setSealsOnCert(List<Map<String,Object>> sealList)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
companyName | String | 必选 | 签章企业名称。 |
sealSn | String | 必选 | 企业签章编号,仅在企业基于已经申请的签章证书进行签署时有效,人人法根据此编号调用对应的签章和证书。 |
keyword | String | 必选 | 企业签章关键字,合同中必需包含此关键字,同时关键字默认为合同文档中倒数搜索到的第一个。 |
sealWidth | String | 可选 | 生成的合同中,企业签章的宽度,默认为 0,0 为图片实际宽度大小 |
sealHeight | String | 可选 | 生成的合同中,企业签章的高度,默认为 0,0 为图片实际高度大小 |
moveSize | String | 可选 | 生成的合同中,企业签章相对于初始位置的左右偏移大小,正数向左偏移,负数向右偏移 |
heightMoveSize | String | 可选 | 生成的合同中,企业签章相对于初始位置的上下偏移大小,正数向上偏移,负数向下偏移 |
keywordType | String | 可选 | 合同文档中关键字匹配类型,0 为所有关键字,1 为 单个关键字,默认为所有关键字 |
searchOrder | String | 可选 | 合同文档中关键字的搜索顺序,默认倒序,1:正序、 2:倒序 |
coverType | String | 可选 | 合同文档中企业印章覆盖类型,默认居右,1:重叠、 2:居下、3:居右 |
sealImg | String | 可选 | 签章图片,base64 编码 |
position | Map | 可选 | 签章位置, 包含 posX(X 轴坐标点),posY(Y 轴坐标点),pageNum(签章位置所在文件页码) |
说明:参数 keyword 和 position 两者二选一,两个参数有且存在一个
参数示例:
String sealSn="CS17021416183335921148158A2BD598";
List<Map<String,Object>> sealList=new ArrayList<Map<String,Object>>();
Map<String,Object> certSeal=new TreeMap<String,Object>();
certSeal.put("companyName","北京人人法科技有限公司");
certSeal.put("sealSn", sealSn);
certSeal.put("keyword","丙方盖章:");
// certSeal.put("sealImg","dscvds9c8sdc87c8sdc7");
// List<Map<String,Object>> positionList=new ArrayList<Map<String,Object>>();
// Map<String,Object> positionMap=new TreeMap<String,Object>();
// positionMap.put("posX", 150);
// positionMap.put("posY", 500);
// positionMap.put("pageNum", 1);
// positionList.add(positionMap);
// certSeal.put("position", positionList);
certSeal.put("sealWidth","150");
certSeal.put("sealHeight","150");
certSeal.put("moveSize","-200");
certSeal.put("heightMoveSize","100");
certSeal.put("keywordType","1");
certSeal.put("searchOrder","2");
certSeal.put("coverType","2");
sealList.add(certSeal);
4.5 设置个人签字:setSignatures
功能简介: 设置个人签字数据。
原型:
public void setSignatures(List<Map<String,Object>> signatureList)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
phone | String | 可选 | 签署人手机号,当 signType=4即需要手写签名时必需提供。 |
name | String | 必选 | 签署人真实姓名。 |
idcard | String | 可选 | 签署人身份证号,建议提供。 |
keyword | String | 必选 | 个人签名关键字 合同中必需包含此关键字,,同时关键字默认为合 同文档中倒数搜索到的第一个。 |
isBorder | String | 可选 | true 或 false, 默认为 false, 由人人法生成的签字图片是否加边框 |
verifyCode | String | 可选 | 手机验证码 如果加入此参数,必需在此之前调用发送手机验证 码接口给该签署人发送验证码,否则无法完成签署,仅当 signType=2,3 时有用. |
isVerifyCode | String | 可选 | 为 ture 或 false,默认为 true 签名过程中是否给签署人发送手机验证码进行验证,仅当 signType=4 即手写签名时有用 |
sealWidth | String | 可选 | 个人签名的宽度,默认为 0,0 为图片实际宽度大小 |
---|---|---|---|
sealHeight | String | 可选 | 个人签名的高度,默认为 0,0 为图片实际高度大小 |
moveSize | String | 可选 | 个人签名相对于初始位置的左右偏移大小,正数向 左偏移,负数向右偏移 |
heightMoveSize | String | 可选 | 个人签名相对于初始位置的上下偏移大小,正数向上偏移,负数向下偏移 |
keywordType | String | 可选 | 合同文档中关键字匹配类型,0 为所有关键字,1 为 单个关键字,默认为所有关键字 |
searchOrder | String | 可选 | 合同文档中关键字的搜索顺序,默认倒序,1:正序、 2:倒序 |
coverType | String | 可选 | 合同文档中个人签名覆盖类型,默认居右,1:重叠、 2:居下、3:居右 |
signature | String | 可选 | 签字图片,base64 编码 |
position | Map | 可选 | 签章位置, 包含 posX(X 轴坐标点),posY(Y 轴坐标点),pageNum(签字位置所在文件页码) |
说明:参数 keyword 和 position 两者二选一,两个参数有且存在一个
参数示例:
List<Map<String,Object>> signatureList=new ArrayList<Map<String,Object>>();
Map<String,Object> signatureMap=new TreeMap<String,Object>();
signatureMap.put("name","张三");
signatureMap.put("idcard","421122188809298288383");
signatureMap.put("phone","17600000000");
signatureMap.put("keyword","甲方(出借人)签字");
// signatureMap.put("signature","cv9dvfdvfdv8df98v9d");
// List<Map<String,Object>> positionList=new ArrayList<Map<String,Object>>();
// Map<String,Object> positionMap=new TreeMap<String,Object>();
// positionMap.put("posX", 150);
// positionMap.put("posY", 500);
// positionMap.put("pageNum", 1);
// positionList.add(positionMap);
// certSeal.put("position", positionList);
signatureMap.put("sealWidth","150");
signatureMap.put("sealHeight","30");
signatureMap.put("moveSize","-450");
signatureMap.put("heightMoveSize","70");
signatureMap.put("keywordType","1");
signatureMap.put("searchOrder","1");
signatureMap.put("coverType","1");
signatureList.add(signatureMap);
4.6 完成签署 — 基于模板:signContractByTemplate
功能简介: 电子签署接口,基于模板完成签署。
原型:
public ClientMessage signContractByTemplate(String pdfSavePath)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
pdfSavePath | String | 可选 | 签署完成后的 pdf 文件保存路径,默认为 null |
4.7 完成签署 — 基于文件: signContractByFile
功能简介: 电子签署接口,基于文件完成签署。
原型:
public ClientMessage signContractByFile(String filePath ,String pdfSavePath)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
filePath | String | 必选 | 待签署文件绝对路径,支持 doc,docx,pdf 和 html 格式 |
pdfSavePath | String | 可选 | 签署完成后的 pdf 文件保存路径,默认为 null |
4.8 完成签署 — 基于签署二维码:getSignatureQRcode
功能简介: 电子签署接口,基于生成的二维码,用户利用移动设备扫码进入完成签署。
原型:
public ClientMessage getSignatureQRcode()
返回数据:
调用接口后,会得到二维码的 base64 编码的数据,例如:
`data:image/png;base64,R0lGODlhAwADAIABAL6+vv///yH5BAEAAAEALAAA`
使用:
`<img src="data:image/png;base64,R0lGODlhAwADAIABAL" />`
二维码有效期为半个小时,超过半小时没有完成签署需要重新获取
4.9 完成签署 —重新获取签署二维码:getSignatureQRcodeAgain
功能简介: 电子签署接口,基于生成的二维码,用户利用移动设备扫码进入完成签署。
原型:
public ClientMessageget SignatureQRcodeAgain(StringsignSn)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
signSn | String | 必选 | 签署唯一编号 |
5. 客户端查询接口
5.1 查询签署状态 :getSignState
功能简介: 查询合同的签署状态。
原型:
public ClientMessage getSignState(String signSn)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
signSn | String | 必选 | 合同签署的唯一编号 |
5.2查询单个合同:getSingleContract
功能简介: 查询单个合同。
原型:
public ClientMessage getSingleContract(String signSn)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
signSn | String | 必选 | 合同签署的唯一编号 |
6. 其他接口
6.1 发送签署验证码 :sendSignVerifyCode
功能简介: 签署前,发送手机验证码,调用签署接口完成签署时必需传入此验证码。
原型:
public ClientMessage sendSignVerifyCode(List<Map<String,Object>> phoneAndCodeList)
参数说明:
参数 | 类型 | 约束 | 说明 |
---|---|---|---|
phone | String | 必选 | 手机号 |
verifyCode | String | 必选 | 需要发送的验证码,必须为 6位整数 |
参数示例:
List<Map<String,Object>> codeList=new ArrayList<>();
Map<String,Object> codeMap=newHashMap<String,Object>();
codeMap.put("phone","18100000000");
codeMap.put("verifyCode","938720");
codeList.add(codeMap);