SpringBoot集成E签宝合同签署服务

背景

因为业务需要和购买课程的学员签署合同,因而需要引入E签宝进行合同签署。

官方指南

根据官方指南,主要的接入流程分为生成合同和发起签署。但个人认为应该分成创建合同模板,生成合同,发起合同签署三步。这里的生成合同和发起签署应该都归属于发起签署。

一、身份认证

请求头格式说明文档
在业务接入之前,需要先接入签名。这个官网就有例子,直接使用推荐的方式即可。
在这里插入图片描述

具体怎么生成签名也有详细的指南,跟着操作即可。甚至有代码例子可以直接使用。
签名生成文档

二、创建签署模板

登录E签宝模板管理后台

  • 创建模板
    在这里插入图片描述

  • 上传签署底文件,也就是没填充关键参数的文件,签署方需要有一个是固定填充的(一般是自己公司),另一方作为签署方
    在这里插入图片描述

  • 设置内容填充框。后台会解析pdf文件作为底文件,可以在上面增加内容填充框。如左上角是我们填充的,可以通过右下角的编码来定位哪一个框,左侧第二个框是签署方签署的时候填充他们的信息的。
    在这里插入图片描述

  • 回到模板管理,开启模板,并复制模板编号。后续可以根据模板编号来确定使用哪一个模板,然后传递所需要的合同参数【上一步的框】即可生成合同签署链接给签署方签署。

在这里插入图片描述

三、发起签署

2.1、通过签署模板创建签署文件

有两个版本生成签署文件的接口,以前的采用的是V1旧版本的,后面新开发的业务采用了V3新版本,初次接入建议使用V3新版本。

1.通过模板创建文件文档V1

  • 通过传入模板id和所需的模板参数去生成合同签署文件,可以查看文件,后续签署根据返回的fieldId确定签署文件
    在这里插入图片描述
    在这里插入图片描述

2.通过签署模板创建签署文件V3

  • 和V1差不多,不过参数通过数组的方式传递,可以更加清楚是控件id还是控件key
    在这里插入图片描述
    在这里插入图片描述

2.2、通过签署文件发起签署

1.直接签署

利用上一步生成的fieldId可以直接生成合同,该方式是系统直接生成签署合同,不会发短信,也不需要人脸认证。

2.人脸识别实名签署

调用该接口,传入前面生成的签署文件fieldId发起签署,E签宝会给用户发送签署短信。

在这里插入图片描述

设置回调地址,判断签署方签署情况,设置通知类型,一般使用短信通知,也就是1
在这里插入图片描述
记得填写签署方手机号,如果对方是个人。
在这里插入图片描述

调用成功会返回一个流程id,记得保存,如果签署方没有收到短信,就需要根据流程id去重新发送短信获取直接查询获取签署链接。
在这里插入图片描述

用户通过短信链接跳转E签宝进行人脸识别签署合同。签署完成E签宝回调通知。

### 实现Java应用中集成e进行电子名或盖章 为了在Java应用程序中集成e实现电子名或盖章功能,需遵循特定的工作流来完成整个过程。此工作流涉及几个关键步骤,包括但不限于获取模板ID、查询并填充模板中的控件信息以及发起签署请求。 #### 获取依赖库 首先,在`pom.xml`文件中加入必要的依赖项以支持操作所需的API调用和其他辅助工具: ```xml <dependencies> <!-- e SDK --> <dependency> <groupId>com.esign</groupId> <artifactId>e-sign-sdk-java</artifactId> <version>LATEST_VERSION</version> </dependency> <!-- Bouncy Castle 加密库用于处理数字证书和名 --> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>1.70</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-ext-jdk15on</artifactId> <version>1.70</version> </dependency> </dependencies> ``` 这些依赖项确保了能够有效地管理和验证数字名,并且可以与e服务端口无缝对接[^1]。 #### 初始化客户端实例 创建一个EsignClient对象以便于后续的操作,比如发送HTTP请求给e服务器。通常情况下,这一步骤会涉及到设置访问凭证(Access Key ID 和 Secret Access Key)以及其他配置选项。 ```java import com.esign.sdk.EsignClient; public class ESignDemo { private static final String ACCESS_KEY_ID = "your_access_key_id"; private static final String SECRET_ACCESS_KEY = "your_secret_access_key"; public static void main(String[] args) throws Exception { EsignClient client = new EsignClient(ACCESS_KEY_ID, SECRET_ACCESS_KEY); // 继续执行其他操作... } } ``` #### 查询模板详情 利用之前初始化好的client对象去调用相应的API方法来检索指定模板的信息,特别是其中定义的各种控件及其属性。这部分对于理解文档结构至关重要,因为之后的数据填充正是基于这些元数据来进行的。 ```java // 假设已经获得了有效的templateId String templateId = "example_template_id"; Map<String, Object> response = client.getTemplateInfo(templateId); System.out.println(response); // 输出模板的具体信息供调试使用 ``` 一旦得到了关于各个字段位置的知识,则可以根据实际需求向它们赋值。 #### 设置控件内容并提交签署申请 当所有必填项都已准备好后,就可以准备构建最终要传递给e系统的JSON格式的消息体了。这里需要注意的是,除了基本的身份认证外,还需要指明具体的签署方式——即是由个人还是企业作为主体来进行字/盖章;另外就是明确指出哪些地方应该放置印章图像等细节问题。 ```json { "templateId": "example_template_id", "formFieldValues": [ {"fieldName":"name","fieldValue":"张三"}, {"fieldName":"date","fieldValue":"2023-10-09"} ], "sealPosition": [{"x": 100,"y": 200}] } ``` 最后一步便是正式发出签署指令,等待对方确认回执后再做进一步的动作,如下载已完成版本的PDF文件存档保存起来。 ```java response = client.createSealRequest( templateId, formFieldValuesJsonArray, sealPositionsList ); if (response.containsKey("success") && Boolean.TRUE.equals(response.get("success"))) { System.out.println("签署成功!"); } else { System.err.println("签署失败:" + response.toString()); } ``` 以上就是在Java环境中借助第三方服务提供商e实施自动化电子约的一个简化版流程概述[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值