使用 Pusher、HelloSign 和 Spring Boot 在聊天中请求电子签名
介绍
在本教程中,我们将使用Pusher 的 Presence Channels构建聊天室。使用 Pusher,我们的聊天室将能够使用HelloSign API向其成员请求电子签名的保密协议(NDA) 。
您需要满足以下条件才能承担此项目:
- Java 7 或更高版本
- Maven作为构建管理器
- Spring Boot作为服务器端框架
- H2作为内存数据库
- Thymeleaf作为服务器端模板引擎
- jQuery和Handlebars用于客户端交互
我们将使用 Pusher 和 HelloSign webhook从这些 API 接收事件,并使用ngrok将所有内容保存在本地环境中。
该应用程序的设计基于这支笔,其工作方式如下:
首先,用户创建聊天:
然后,另一个用户加入聊天:
聊天所有者可以随时发送签署保密协议的请求:
当聊天成员签署保密协议时,会发送一条通知,其中包含查看已签署文档的链接:
我们不会列出所有文件的完整源代码,只会列出相关部分。不过,你可以在Github上找到该应用程序的完整代码。
要求
Java 环境
推进器
在 https://dashboard.pusher.com/accounts/sign_up 创建一个免费帐户。
首次登录时,系统会要求您输入一些配置选项:
输入名称,选择Javascript作为前端技术,选择Java作为后端技术。
然后转到“入门”或“应用程序密钥”选项卡来复制您的应用程序 ID、密钥和秘密凭证;我们稍后会需要它们。
HelloSign
在 https://www.hellosign.com/ 注册。撰写本文时,您的免费帐户有以下限制:
- 您每月可以免费发送 3 份文件
- 只能有一个发送者
- 您无法访问任何模板
不过不用担心,这些限制并不适用于测试模式,这是我们将要使用的模式。
恩格罗克
当成员添加到聊天室或签署保密协议时,将触发 webhook(将 webhook 视为回调)。这意味着将向我们的服务器发出 HTTP 请求,因此我们需要将应用程序部署在云端或将其保存在本地并使用ngrok等服务使其公开可用。
Ngrok 通过创建安全隧道并为您提供公共 URL 将外部请求代理到您的本地机器。
ngrok 是一个 Go 程序,以单个可执行文件的形式分发(无其他依赖项)。目前,只需从https://ngrok.com/download下载并解压压缩文件即可。
现在我们已经拥有了所需的一切,让我们来创建应用程序。
设置应用程序
依赖项
创建 Spring Boot 应用程序的最简单方法之一是使用https://start.spring.io/上的项目生成器。
转到该页面并选择生成具有以下依赖项的 Maven 项目:
- 网页
- 氢气
- 百里香叶
- 日本电力协会
输入Group ID、Artifact ID并生成项目:
解压下载文件的内容。此时,您可以根据需要将项目导入 IDE。例如,在 Eclipse 中,转到文件 -> 导入并选择现有 Maven 项目:
让我们向pom.xml文件添加一些配置。在属性部分中,如果您不使用 Java 8,请更改 Java 版本,并添加以下行:
<spring.version>4.3.1.RELEASE</spring.version>
撰写本文时,Spring Framework 的最新版本是4.3.1.RELEASE。 上面这行代码将确保 Spring Boot 使用此版本。
另外,在依赖项中,添加我们项目所需的依赖项:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
<dependency>
<groupId>com.pusher</groupId>
<artifactId>pusher-http-java</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.hellosign</groupId>
<artifactId>hellosign-java-sdk</artifactId>
<version>3.4.0</version>
</dependency>
项目架构
现在,进入项目组织。在src/main/java中,我们将使用以下包结构:
- com.example.config将包含配置类
- com.example.constants将包含应用程序中使用的常量值的接口
- com.example.model将包含 JPA 实体模型
- com.example.repository将包含与模型一起使用的 Spring JPA 接口
- com.example.service将包含应用程序的业务服务类
- com.example.web将包含应用程序的 Spring MVC 控制器
- com.example.web.vo将包含用于视图和控制器之间通信的对象
在src/main/resources中,除了以下目录结构之外,我们还将放置一些配置文件:
- static/css将包含应用程序中使用的 CSS 样式文件
- static/img将包含应用程序中使用的图像
- static/js将包含应用程序中使用的 Javascript 文件
- templates将包含应用程序中使用的 Thymeleaf 模板
我们首先创建com/example/web/ChatController类,其内容如下:
@Controller
public class ChatController {
@RequestMapping(method=RequestMethod.GET, value="/")
public ModelAndView index() {
ModelAndView modelAndView = new <span
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~