接口描述
使用指定账户及印章完成含预置空白签名域的模板文件的填充及签署,签署过程需要校验用户短信验证码,验证码必须通过e签宝接口发送。
注:文件一旦签名盖章就不可以再进行任何填写或修改操作,否则在验证签署文件有效性时会显示文件被篡改,请在签章前完成所有内容填充。
文件涉及2个及以上签章时,请注意保留待签署文件流和每次签署后的文件流(含中间过程生成的文件流),方便在签署过程中出现失败时如何选择基于哪份文件的流进行重签。
接口
TemplateSignService.timesStreamSignCode3rd(SignPDFStreamBean fileBean, Map fields, List signatureNames, SignatureSettings settings, String mobile, String code);
请求参数
展开全部参数参数名称 | 类型 | 必选 | 参数说明 | 示例值 | |
signatureNames | List | 是 | 签署所使用的预置空白签名域的名称 | ||
txtFields | Map | 是 | 模板中包含待填充文本域时,文本域Key-Value组合 | ||
mobile | String | 是 | 指定的手机号 | ||
code | String | 是 | 短信验证码 | ||
settings | SignatureSettings | 是 | 预置签名域签署所使用的账号、印章等信息 | ||
![]() | String | 是 | 签署账户唯一标识,由账号创建接口返回 | ||
![]() | String | 是 | 签署时印章图片字节流Base64编码值
| ||
![]() | SignPDFStreamBean | 是 | 指定接口输入输出目标文件的对象封装,详见SignPDFStreamBean解释 | ||
![]() | byte[] | 是 | 待签署文档本地二进制数据 | ||
![]() | String | 否 | 文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称 | ||
![]()
| String | 否 | 文档编辑密码,当目标PDF设置权限保护时必填 | ||
![]() | String | 否 | 签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流) |
响应参数
展开全部参数参数名称 | 类型 | 必选 | 长度 | 参数说明 | 示例值 | |
![]() | FileDigestTimesSignResult | 是 | ||||
![]() | int | 是 | 错误码,0标识成功,其他均标识失败 | |||
![]() | String | 否 | 100 | 错误信息,错误码对应的说明信息 | ||
![]() | boolean | 否 | 错误信息是否建议显示 | |||
![]() | byte[] | 否 | 完成签署的文档二进制数据 | |||
![]() | Map | 否 | 签署完成后返回的签署服务Id值,Map Key为签署接口指定的acountId,Value为该用户签署的所有signServiceId的列表信息 | |||
![]() | String | 否 | 签署文档源路径 | |||
![]() | String | 否 | 签署后目标路径 |
请求示例
其他示例语言请点击
public static void main(String[] args) { // 获取客户端的代码:ServiceClient getKHD = ServiceClientManager.get("您的pojectId"); TemplateSignService templateSignService = getKHD.templateSignService(); // 签署文档信息 SignPDFStreamBean fileBean = new SignPDFStreamBean(); fileBean.setStream(getFileBytes("D:/test-template.pdf")); fileBean.setDstPdfFile("D:/abc/g.pdf");// 签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流) fileBean.setFileName("g");// 文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称 fileBean.setMarkBit("文件标识"); SignatureSettings signatureSettings = new SignatureSettings(); signatureSettings.setAccountId("XXXXDEBDCD3D126B858"); String sealData = ""; signatureSettings.setSealData(sealData); List<String> signatureNames = new ArrayList<>(); signatureNames.add("Signature1"); Map<String, Object> map = new HashMap<>();// 模板中包含待填充文本域时,文本域Key-Value组合 map.put("user1", "杭州天谷"); //map.put(null,null);//文件中如果没有文本域时,传参格式 FileDigestTimesSignResult fileDigestTimesSignResult = templateSignService.timesStreamSignCode3rd(fileBean, map, signatureNames, signatureSettings,mobile,code); if (fileDigestTimesSignResult.getErrCode() != 0) System.out.println("失败" + JSONObject.fromObject(fileDigestTimesSignResult)); else System.out.println("成功" + JSONObject.fromObject(fileDigestTimesSignResult)); } /** * description 获取文件字节流 * * @param filePath 文件路径 **/ public static byte[] getFileBytes(String filePath) { File file = new File(filePath); FileInputStream fis = null; byte[] buffer = null; try { fis = new FileInputStream(file); buffer = new byte[(int) file.length()]; fis.read(buffer); } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } return buffer; }
响应示例
{ "msg":"成功", "dstFilePath":"", "signResult":{ "XXXX2ACADEBDCD3D126B858":[ "XXXX23391491" ] }, "stream":[ 37, 80, 68, 70, 45, 49, 46, 54, 170, 10 ], "errCode":0, "filePath":"", "errShow":false }
错误码
错误码 | 错误描述 | 解决方案 |