事件证书PDF文件签署(指定手机号短信验证)

更新时间:2021-11-08 16:52:13

接口描述

使用事件证书对文档进行签署,此签署过程不将文档上传至e签宝平台,只传递文档摘要信息。签署过程需要校验用户短信验证码,验证码必须通过e签宝接口发送。注:事件证书具有单次有效性,即使用证书完成签署后,此证书立即失效,不可重复使用。

注:文件一旦签名盖章就不可以再进行任何填写或修改操作,否则在验证签署文件有效性时会显示文件被篡改,请在签章前完成所有内容填充。

文件涉及2个及以上签章时,请注意保留待签署文件/流和每次签署后的文件/流(含中间过程生成的文件/流),方便在签署过程中出现失败时如何选择基于哪份文件/流进行重签。


接口

EventSignService.localSignPDFByEvent(String certId, String sealData, SignPDFFileBean file, PosBean signPos, SignType signType, String accountId, String mobile, String code)


请求参数

展开全部参数参数名称

类型

必选

长度

参数说明

示例值

certId

String

40

事件证书标识


sealData

Text


印章图片Base64,若为空最终签署后将没有直观图片展现


file

SignPDFFileBean


签署PDF文档信息









srcPdfFile

String

255

待签署PDF文档本地路径,含文档名(与bytes至少有一个不为空)


bytes

byte[]


待签署PDF文档本地二进制数据(与srcPdfFile至少有一个不为空)


dstPdfFile

String

255

签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流)


fileName

String

255

文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称


ownerPassword

String

100

文档编辑密码,当目标PDF设置权限保护时必填


ShowImage

Boolean


是否增加e签宝logo图标


signPos

PosBean


签章位置信息



posType

int


定位类型,0-坐标定位,1-关键字定位,默认0SignType为关键字签署的时候,为1,否则为0。用户可以不作处理。此处只是为了兼容旧版本而保留


posPage

String

25

签署页码,若为多页签章,支持页码格式“1-3,5,8“,若为坐标定位时,不可空


posX

float


签署位置X坐标,若为关键字定位,相对于关键字的X坐标偏移量,默认0


posY

float


签署位置Y坐标,若为关键字定位,相对于关键字的Y坐标偏移量,默认0


key

String

30

关键字,仅限关键字签章时有效,若为关键字定位时,不可空


width

float


印章展现宽度,将以此宽度对印章图片做同比缩放。

        1) 为空:

若图片宽度超过159,印章宽度等比缩小至159

若图片宽度小于159,印章尺寸默认以图片大小为准;

        2)  不为空

印章宽度以传入参数为准。


QrcodeSign

boolean


是否是 二维码签署,默认为false。二维码签署不支持骑缝签和多页签


cacellingSign

boolean


是否是作废签签署,默认为false


AddSignTime

boolean


是否显示本地签署时间,需要width设置92以上才可以看到时间

signType

SignType


签章类型

(1)Single,单页签章

(2)Multi,多页签章

(3)Edges,签骑缝章

(4)Key,关键字签章

accountId

String

40

签署者账号标识


mobile

String

20

接收短信验证码的手机


code

String

10

短信验证码,必须通过e签宝接口发送


响应参数

展开全部参数参数名称

类型

必选

长度

参数说明

示例值

FileDigestSignResult

FileDigestSignResult





errCode

int


错误码,0标识成功,其他均标识失败


msg

String

100

错误信息,错误码对应的说明信息


errorShow

boolean


错误信息是否建议显示


stream

byte[]


完成签署的文档二进制数据


signServiceId

String

40

签署记录id


filePath

String


签署文档源路径


dstFilePath

String


签署后目标路径


markBit

String


客户自由标示位,用于辨识文件



请求示例  

其他示例语言请点击


		// 获取正式生成服务
		// 获取客户端的代码:ServiceClient getKHD = ServiceClientManager.get("您的pojectId");
		EventSignService eventSignService = getKHD.eventSignService();

		// 签署文档信息
		SignPDFFileBean file = new SignPDFFileBean();
		file.setSrcPdfFile("D:/test-template.pdf");// 待签署PDF文档本地路径,含文档名(与bytes至少有一个不为空)
		file.setDstPdfFile("D:/abc/b.pdf");// 签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流)
		file.setFileName("b");// 文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称
		file.setShowImage(true);// 是否增加e签宝logo图标

		// 签章位置信息
		PosBean signPos = new PosBean();
		signPos.setPosType(1);// 定位类型,0-坐标定位,1-关键字定位,默认0,SignType为关键字签署的时候,为1,否则为0。用户可以不作处理。此处只是为了兼容旧版本而保留
		signPos.setPosPage("1-3");// 签署页码,若为多页签章,支持页码格式“1-3,5,8“,若为坐标定位时,不可空
		signPos.setPosX(60L);// 签署位置X坐标,若为关键字定位,相对于关键字的X坐标偏移量,默认0
		signPos.setPosY(0);// 签署位置Y坐标,若为关键字定位,相对于关键字的Y坐标偏移量,默认0
		signPos.setKey("杭州天谷");// 关键字,仅限关键字签章时有效,若为关键字定位时,不可空
		// signPos.setCacellingSign(true);//是否是作废签签署,默认为false;如果签署作废章的话,建议线下也签署一份作废协议,这样法律效力较高
		signPos.setAddSignTime(true);// 是否显示本地签署时间,需要width设置92以上才可以看到时间

		String sealData = "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";

		FileDigestSignResult fileDigestSignResult = eventSignService.localSignPDFByEvent("事件证书id", sealData, file,
				signPos, SignType.Key, "34332DD1838842ACADEBDCD3D126B858", "182681xxxxx", "626130");
		if (fileDigestSignResult.getErrCode() != 0)
			System.out.println("失败:" + JSONObject.fromObject(fileDigestSignResult));
		else
			System.out.println("成功" + JSONObject.fromObject(fileDigestSignResult));



响应示例

{
    "dstFilePath":"D:\abc\b.pdf",
    "errCode":0,
    "errShow":false,
    "filePath":"",
    "markBit":"",
    "msg":"成功",
    "signDetailUrl":"https://smlweb.tsign.cn/e.html?id=1173894445679071238",
    "signServiceId":"1173894445679071238",
    "stream":[

    ]
}



错误码

错误码

错误描述

解决方案


我要纠错