平台用户PDF签署(意愿bizId批量签署)

更新时间:2024-12-11 11:02:32

接口描述

用指定账户的证书或指定的证书批量签署文档,此签署过程不将文档上传至e签宝平台,只传递文档摘要信息。签署过程需要校验用户意愿认证通过的bizId和意愿受检账户的信息是否匹配。

注:

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

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

接口名称

UserSignService.batchSignWithWillness(WillnessInfo willInfo, SigningAccount signAccount, List<SigningInfo> signInfos)

请求参数

展开全部参数参数名称

类型

必选

参数说明

willInfo

WillnessInfo

签署操作人账号信息


willnessAccountId

String

签署操作人账号(电子签名SDK产品创建的账户,即实际的签署方账户

注:签署主体账号为个人的话,操作人账号id需和主体账号id保持一致

bizId

String

签署操作人完成的签署意愿认证的记录id

signAccount

SigningAccount

签署主体账号信息


signAccountId

String

签署主体账号(电子签名SDK产品创建的账户,即实际的签署方账户,可为个人/企业用户账号),将使用本账号绑定的默认数字证书进行签署。

signInfos

List<SigningInfo>

签署文件、印章、签名域等信息


signType

SignType

签署类型

(1)Single单页签章

(2)Multi多页签章

(3)Edges签骑缝章

(4)Key关键字签章

sealData

String

签署时印章图片字节流Base64编码值

注意:印章数据要和账户信息对应,否则会出现签署的印章和背后的数字证书不一致的情况,从而造成签署纠纷

file

SignPDFStreamBean

/SignPDFFileBean

待签署PDF文档信息

signPos

List<PosBean>

签章位置信息


posType

int

定位类型,0-坐标定位,1-关键字定位,默认0,SignType为关键字签署的时候,为1,否则为0。用户可以不作处理

posPage

String

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

posX

float

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

posY

float

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

key

String

关键字,仅限关键字签章时有效,若为关键字定位时,不可空关键字建议不要设置特殊字符,因Adobe无法识别部分符号,某些特殊字符会因解析失败从而导致搜索不到

width

float

印章展现宽度,将以此宽度对印章图片做同比缩放。  为空:  若图片宽度超过159,印章宽度等比缩小至159;  若图片宽度小于159,印章尺寸默认以图片大小为准;  不为空  印章宽度以传入参数为准。

QrcodeSign

boolean

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

cacellingSign

boolean

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

AddSignTime

boolean

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

SignPDFStreamBean类

展开全部参数参数名称

类型

必选

参数说明

SignPDFStreamBean

SignPDFStreamBean

stream

byte[]

待签署文档本地二进制数据

fileName

String

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

ownerPassword

String

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

dstPdfFile

String

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

markBit

String

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

SignPDFFileBean参数

展开全部参数参数名称

类型

必选

长度

参数说明

SignPDFFileBean

SignPDFFileBean

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图标

markBit

String

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

请求示例

public static void main(String[] args) {
       // 获取正式生成服务
       // 获取客户端的代码:ServiceClient getKHD = ServiceClientManager.get("您的pojectId");
 			
    UserSignService UserSignService = getKHD.userSignService();
		
	WillnessInfo WillnessInfo = new WillnessInfo();
	WillnessInfo.setWillnessAccountId("13ED6****354085B9F545");
	WillnessInfo.setBizId("ba00bc54****81b172c0315c");
	        
	SigningAccount SigningAccount = new SigningAccount();
	SigningAccount.setSignAccountId("13ED64C****354085B9F545");
	        
	SignPDFFileBean file = new SignPDFFileBean();
    file.setSrcPdfFile("D:/模板合同文件/test-templte.pdf");// 待签署PDF文档本地路径,含文档名(与bytes至少有一个不为空)
    file.setDstPdfFile("D:/模板合同文件/test-templte4.pdf");// 签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流)
    file.setFileName("d.pdf");// 文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称
    file.setShowImage(true);// 是否增加e签宝logo图标
 
    List<PosBean> list1 = new ArrayList<>();
    PosBean signPos = new PosBean();
    signPos.setPosType(0);// 定位类型,0-坐标定位,1-关键字定位,默认0,SignType为关键字签署的时候,为1,否则为0。用户可以不作处理。此处只是为了兼容旧版本而保留
    signPos.setPosPage("1");// 签署页码,若为多页签章,支持页码格式“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以上才可以看到时间
    signPos.setMarkBit("XXXXXX");// 客户自由标示位,用于辨识文件
    list1.add(signPos);
        
    List<SigningInfo> list = new ArrayList<>();
	SigningInfo SigningInfo = new SigningInfo();
	SigningInfo.setSealData("iVBORw0KGgoAAAANSUhEUgAAAP8AAAD/CAMAAAAJ1vD4AAADAFBMVEX/////AAAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLakbNAAAAAXRSTlMAQObYZgAAButJREFUeNrtndmS3CAMRfsS/v+Xb2oySaYXg0FIIGz5IalK2oajzSAjAB63vtIj+IP/vlf++oP3ZEfoP/iDP/iDP/iDP/iDP/iDP/iDP/idzld7/6dp/i/sDBcIgKX/4Vz9f0kcC3KnxTaFnZHqnxgSu4URiCxS7P8c9TwfRpDM+rImFPZ2R87PhRIgz7vVZp8D+qfC62e05VF8pfe/m49on/iw4+fqKNCkFtjpn07V/mqVmDL+hU/tn3UtPS5hAHWFwEz/3AG/JoDsvOdKE0HQyP8NDIAzhZod9vp7bvX5RJTbgrQXdvYPDghgWlxJSno/UBacuYDt+//AIHdYWpZ0HJ+H/og78H+xsxCOcAf+z9k4HI+KO+K/RufBffWv0nUDC2hJ/kBB//8GIt2ygKUFNNI3NpvPR2IcUzmn0//Ne3CcX9R5LKbvcrlf6v6J1dPj5pevyfpXN/htdpCui98kAMP8B9U4DEcfyUr65ErpNUsxW+FrZUFq2Q6FVrJX/D8CsI8g2S3+nPiZLPA3upIF/qwXHx3ZP6bTu9L/pvha/FPx4Y5/V+0r8e+Lr8LvGR8w53eNb7r+ZQd86/Uv7vEt179sgW+5/mUpPpuHCTDiX4IPwc9gMv43wIfVb6mvfwvtc7LVZG/Gz9Pk1usPBnNh2Z3vy765TZ//24W+1rDOlfwwd1jX85+r4Av5F+IrN51urX0Z/4XwJfxL8bUbT7fWvoB/LT5W83vRvlbzeSt8iG+iBr+fZI9a+3kn2zf4wpz2c/3OHkBH/w5s30IBaUP8+fN/X0s7ONn/AQ+ysAk/qZN+mQCMWk0d9Fy454lV/EnNUudPndP83Q7Mwm9qVv5L67gIfo0fR2u5+VhgAiP4EL7/SkUsfCov4O7aL/OXa3j4UmDATehL3/9K/CwXMvC9xIDdKJyv/IIAivZfqX3jm3VUi++hpH2OWs/xavLy+Ley/v7VBHpRjZR/yKdQ/8Djf5TqlcrK51ixcW56spoEONH0m9o+rf+tlBzSBT6H2q7XPzZUoBiNg9Czowlk9P/38Bw3MOiqH7qWX2klm/gWVIQ5Y3hpU/9IBUuaM7h2tv8VpsI/XO7/NTXDmm/Mfpr/uD5+7P8e/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MEf/MG/+TW6/geLq4FHSzDU9v9bKAKs4oeTU94GJKCw/x1MiPqKKcQSSAq2j5VKHSzISxrdw0qzHjuHPql0TV0AMrPGJP4JxZ8dZs0RAaR+kX526asSBlYvSlsBnI5/UC9tYPGHb3f1DpSIKUOs3CD/wqmC7BwKQiqA0zsJQ/7/YOfn2qG+Zav8JES7UzQb9z9h27lmqNfA9mF0aFVuALkzCLHDW3zMlupt9sz/2KQCqFnyoVaru5l1umXP+59UUZ2R/lm1XNjN/5u6Iq3h73Zrdkfeufkf2t5XPikP8/RvHc0qOOiPO77zf3z6C2OzDuzIrzaJKN7s3P5/NsOXHSp9Gnm965/yo51fhm0q+58uDAFWD0k7ub50mK8x/tvxwrkJ+av/p3b8r3pQcqcw9M96qsP++l2++L/7CgyrH607SSTPjit+KbRq3+3+B2PfF9B+kzf9V77m8HQw8zHqOQ8ZY+efGWQznvLelA2F0NO/POSlME3nobjbKtQUNPj9F4YeUHl6/46T+vqHlQt8fPg4iOTU2ihp+PwzrFn/Q6VUehrEt3CBJjCddLTk/IMZb4HPlo0a0T3/2tOcX1n/lzjtaZfx//Nu4zA1zl3yHxTjY1/+CfuSJsfkHA6uE85/txMAhy1hwvnvdgJQNH5s6v9j5t+0QHWf779jgYB76v8pg08T6W30/cNEADutf+DrV4D3FIBo5+i8k88bzEHS9S3/EuP/W/LDPuuQ7m3+rvlnVNZlnX5umx3KfpUE9/xzzqqgZXTICurhvuoX8sMqOP+MaeHW//F4PKwN/1zAWMKPRs97mZugx9cnl5NnsUfS5hbOraiXfv+jIQX7LKah39SNf7Q25fOFrlo2kvqbac7Mvv+QEgnTj//394d2b0qlh6bOx1PcP1V8tRDZN/8bOPLR6QzpzP6pY8BW9DTX/7ABU22tjtz8Fb7/0J3uJ/k/V0Bg1rw7tenPlQ4xVf+OTZjjssr70atmnfar/xDhYy/+Wdrfj78T/2cJzAW+f7fmXI9Rwe31X8cX5cl9r38t2T61Hrnj+ie2zNVajcMp/wdKU9wrpdw4Nv6ZPij9EEBz1O92DLf2z4PlmwYDUcf+z+8P67CDN+Cn8sNgCa/Ob1IMaDr9yq7pH/7y/5ulCK42/wn+4A/+4A/+4A/+4A/+4B+5gNB/8Af/Xa/fqfG88+khBcEAAAAASUVORK5CYII=");
	SigningInfo.setSignType(SignType.Single);
	SigningInfo.setSignPos(list1);
	SigningInfo.setFile(file);
    list.add(SigningInfo);      
 
    CodeMultiSignResult CodeMultiSignResult = UserSignService.batchSignWithWillness(WillnessInfo, SigningAccount, list);
      if (CodeMultiSignResult.getErrCode() != 0)
          System.out.println("失败" + JSONObject.fromObject(CodeMultiSignResult));
      else
          System.out.println("成功" + JSONObject.fromObject(CodeMultiSignResult));
	}

响应示例

{
    "errCode":0,
    "errShow":false,
    "failList":[

    ],
    "msg":"成功",
    "successList":[
        {
            "dstFilePath":"D:\模板合同文件\test-templte4.pdf",
            "errCode":0,
            "errShow":false,
            "filePath":"",
            "markBit":"",
            "msg":"成功",
            "signDetailUrl":"https://smlweb.tsign.cn/e.html?id=1273911590214782985&willAuthId=50f9cd52378a456f94b9b4a3d35936cf",
            "signServiceId":"1273911590214782985",
            "stream":[

            ]
        }
    ]
}

响应参数

展开全部参数参数名称

类型

必选

长度

参数说明

示例值

CodeMultiSignResult

CodeMultiSignResult






errCode

int


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


msg

String

100

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


errorShow

boolean


错误信息是否建议显示


successList

List



签署成功列表



errCode

int


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


msg

String

100

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


errorShow

boolean


错误信息是否建议显示


stream

byte[]


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


signServiceId

String

40

签署记录id


filePath

String


签署文档源路径


dstFilePath

String


签署后目标路径


markBit

String


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

failList

List



签署失败列表



errCode

int


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


msg

String

100

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


errorShow

boolean


错误信息是否建议显示


filePath

String


签署文档源路径


dstFilePath

String


签署后目标路径


markBit

String


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



我要纠错