开发笔记 | 快速上手[法大大]电子合同SDK使用SpringBoot+JAVA

news2024/9/24 7:19:57

Springboot+maven+java

官方API文档

API - 法大大电子合同和电子签云平台

官方SDK下载

API - 法大大电子合同和电子签云平台

目录

目录

开发前准备

项目整合

功能1:查询文档模板列表

功能2:文档模板字段填充



开发前准备

1.点下方链接注册法大大测试环境个人账户【电子合同_电子签名_电子签章】专业签约SaaS服务平台-法大大

2.根据官网接入指南完成应用创建(这一步跟着文档走就好,测试数据可不为真实,营业执照下载官方提供的即可)

3.创建完应用后你应该得到一个状态为[已上线]的应用,点开应用可以获得appId,openId,appSecret等,用于后续与我们系统绑定  

在【模板】中一个文档模板,用于下文测试

完成后可在官方API在线调试(下文链接)测试下是否创建顺利且可用,其中idType表示主体类型,corp-企业,person-个人,选择corp

API - 法大大电子合同和电子签云平台

项目整合

 1.在pom文件加上sdk的maven依赖,其中jaxb-api,我这边不加项目会出问题,在解密的时候找不到类,说是什么版本太低找不到,所以自己加上这个依赖就可以了

<dependency>
    <groupId>com.fadada.api</groupId>
    <artifactId>fasc-openapi-java-sdk</artifactId>
    <version>5.4.9.0705</version>
</dependency>
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

2.yml配置文件

spring:
  application:
    name: fadadaTest
server:
  port: 8080
fadada:
  oppenCorpId: 应用详情中复制
  appId: 应用详情中复制
  appSecret: 应用详情中复制
  serverUrl: https://uat-api.fadada.com/api/v5/

3.创建配置文件

@Configuration
@Data
public class FadadaCondig {
    @Value("${fadada.appId}")
    private String appId;

    @Value("${fadada.appSecret}")
    private String appSecret;

    @Value("${fadada.serverUrl}")
    private String serverUrl;

    @Value("${fadada.oppenCorpId}")
    private String oppenCorpId;

    @Bean
    public OpenApiClient appClient() {
        return new OpenApiClient(appId, appSecret, serverUrl);
    }

    //获取凭证
    public String getAccessToken(OpenApiClient openApiClient) throws ApiException {
        ServiceClient serviceClient = new ServiceClient(openApiClient);
        BaseRes<AccessTokenRes> res = serviceClient.getAccessToken();
        ResultUtil.printLog(res, openApiClient.getJsonStrategy());
        return res.getData().getAccessToken();
    }
}

 4.创建controller调用接口,测试sdk使用

功能1:查询文档模板列表

@RestController
@RequestMapping("/test")
public class TestController {

    @Resource
    private FadadaCondig fadadaCondig;
    
    @GetMapping("/list")
    public BaseRes<DocTemplateListRes> test() throws ApiException {
        OpenApiClient apiClient = fadadaCondig.appClient();
        TemplateClient templateClient = new TemplateClient(apiClient);
        //获取应用accessToken
        String accessToken = fadadaCondig.getAccessToken(apiClient);

        //查询文档模板列表
        GetDocTemplateListReq docTemplateListReq = new GetDocTemplateListReq();
        docTemplateListReq.setAccessToken(accessToken);
        docTemplateListReq.setOwnerId(OpenId.getInstance("corp", fadadaCondig.getOppenCorpId()));
        docTemplateListReq.setListPageNo(1);
        docTemplateListReq.setListPageSize(10);
        BaseRes<DocTemplateListRes> res = templateClient.getDocTemplateList(docTemplateListReq);
        return res;
    }
}

请求结果

到此就完成sdk引入跟一个简单接口调用的例子,其他接口类似,请参考官方API,后续如果有更新其他接口使用会补充本文,若无,本文已完成最基本使用介绍~

功能2:文档模板字段填充

首先在文档模板上添加控件

 

拉一个控件,如文本控件,注意右下方【控件编码】,用于跟我们自定义数据进行绑定 

 

 代码如下,部分参数,魔法值请根据自己需求修改为入参

    //模板填充生成新文件
    @GetMapping("/setValue")
    public BaseRes<DocTemplateFillValuesRes> test3(@RequestParam(required = true)String value) throws ApiException {
        OpenApiClient apiClient = fadadaCondig.appClient();
        TemplateClient templateClient = new TemplateClient(apiClient);
        String accessToken = fadadaCondig.getAccessToken(apiClient);
        DocTemplateFillValuesReq req = new DocTemplateFillValuesReq();
        req.setAccessToken(accessToken);
        req.setOpenCorpId(fadadaCondig.getOppenCorpId());
        req.setDocTemplateId("1721108547379196747");
        req.setFileName("生成新文件名字");

        List<DocTemplateFillValuesReq.DocFieldValue> values = new ArrayList<>();
        DocTemplateFillValuesReq.DocFieldValue info = new DocTemplateFillValuesReq.DocFieldValue();
        info.setFieldId("test1");
        //info.setFieldName();
        info.setFieldValue(value);
        values.add(info);
        req.setDocFieldValues(values);

        BaseRes<DocTemplateFillValuesRes> res = templateClient.docTemplateFillValues(req);
        return res;

    }

测试

打开链接,下载文件得到如图,文本插入完毕

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1929594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第12天|munger85

基于MindSpore通过GPT实现情感分类 这个实现情感分类意思就是通过一些电影的数据最后知道他对于这个电影的评价&#xff0c;最后知道他对于这个电影的评价到底是好还是不好&#xff0c;零就是不好&#xff0c;一就是好。首先我们肯定是按安装这些依赖包了为了今天这个模型我们…

Postman、Apifox、Apipost用哪个?

Postman、Apifox、Apipost都是流行的API接口管理工具&#xff0c;它们各自具有不同的特点和优势&#xff0c;因此哪个更好用取决于具体的使用场景和需求。以下是对这三个工具的比较分析&#xff1a; 一、Postman 特点与优势&#xff1a; 支持多种请求方式&#xff1a;包括GE…

游戏分组(DFS)

游戏分组&#xff08;DFS&#xff09; 将10名参赛者根据其游戏水平评分分为实力尽量相近的两队。 深度优先搜索&#xff08;DFS&#xff09;是游戏分组中常用的一种算法思路。 DFS在解决特定类型的分组问题时&#xff0c;特别是需要遍历所有可能组合的情况&#xff0c;表现出了…

一文详解:医疗营销升级的智能解决方案

顺境是所有人的狂欢&#xff0c;逆境才是优秀者的天堂。淘金的时代过去了&#xff0c;未来是冶金的时代。 01、享受完改革开放40年的高速区间红利 企业正处于中速区间的全面竞争期 1978年&#xff0c;中国的GDP是3679亿。改革开放40多年&#xff0c;我们不断引进资本&#xf…

【嵌入式Linux】<总览> 网络编程(更新中)

文章目录 前言 一、网络知识概述 1. 网路结构分层 2. socket 3. IP地址 4. 端口号 5. 字节序 二、网络编程常用API 1. socket函数 2. bind函数 3. listen函数 4. accept函数 5. connect函数 6. read和recv函数 7. write和send函数 三、TCP编程 1. TCP介绍 2.…

Monaco 使用 DocumentFormattingEditProvider

文档格式化&#xff0c;是 VSCode 比较常用的功能&#xff0c;在文档上点击右键选择格式化文档。效果如下&#xff1a; 在 Monaco 通过 registerDocumentFormattingEditProvider 方法注册处理函数&#xff0c;实现 provider 方法。 provider 方法返回格式化好的代码。 TextE…

Android C++系列:Linux文件系统(二)

1. VFS虚拟文件系统 Linux支持各种各样的文件系统格式&#xff0c;如ext2、ext3、reiserfs、FAT、NTFS、iso9660 等等&#xff0c;不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式&#xff0c;然而这些文件系统 都可以mount到某个目录下&#xff0c;使我们看到一个…

Kafka(四) Consumer消费者

一&#xff0c;基础知识 1&#xff0c;消费者与消费组 每个消费者都有对应的消费组&#xff0c;不同消费组之间互不影响。 Partition的消息只能被一个消费组中的一个消费者所消费&#xff0c; 但Partition也可能被再平衡分配给新的消费者。 一个Topic的不同Partition会根据分配…

【C#】部分国家/语言,string字符串转decimal、float时,小数点解析异常、小数点丢失、小数点被忽略

现象&#xff1a; 部分国家地区&#xff0c;字符串转小数后&#xff0c;小数点丢失&#xff0c;比如&#xff1a;输入"12.34"&#xff0c;输出1234&#xff0c;而非12.34。 部分相关函数decimal.Parse、decimal.TryParse、float.Parse、float.TryParse 原因&…

【Linux】常用命令总结(updating)

1.date2.du&#xff08;disk use&#xff09;3.df&#xff08;disk free&#xff09;4.find5.crontab6.netstat shell命令可以使用man查看命令文档说明&#xff0c;说明界面中可通过b(backward)向上翻页&#xff0c;f(forward)向下翻页&#xff0c;g(go to)跳到说明首页&#x…

【问题记录】Docker配置mongodb副本集实现数据流实时获取

配置mongodb副本集实现数据流实时获取 前言操作步骤1. docker拉取mongodb镜像2. 连接mongo1镜像的mongosh3. 在mongosh中初始化副本集 注意点 前言 由于想用nodejs实现实时获取Mongodb数据流&#xff0c;但是报错显示需要有副本集的mongodb才能实现实时获取信息流&#xff0c;…

springboot老年慢性病药物管理系统-计算机毕业设计源码70568

目录 摘要 Abstract 第一章 绪论 1.1 选题背景及意义 1.2 国内外研究现状 1.3 研究方法 第二章 相关技术介绍 2.1 MySQL简介 2.2 Java编程语言 2.3 B/S模式 2.4 springboot框架 第三章 老年慢性病药物管理系统 系统分析 3.1 系统目标 3.2 系统可行性分析 3.2.1 技…

【linux】服务器ubuntu安装cuda11.0、cuDNN教程,简单易懂,包教包会

【linux】服务器ubuntu安装cuda11.0、cuDNN教程&#xff0c;简单易懂&#xff0c;包教包会 【创作不易&#xff0c;求点赞关注收藏】 文章目录 【linux】服务器ubuntu安装cuda11.0、cuDNN教程&#xff0c;简单易懂&#xff0c;包教包会一、版本情况介绍二、安装cuda1、到官网…

Java面试八股之Redis哨兵机制

Redis哨兵机制 Redis Sentinel&#xff08;哨兵&#xff09;模式是一种高可用解决方案&#xff0c;用于监控和自动故障转移Redis主从集群。以下是对哨兵模式详细过程的描述&#xff1a; 1. 初始化与配置 部署哨兵节点&#xff1a;在不同的服务器上部署一个或多个Redis Sentin…

链表题目专题

19. 删除链表的倒数第 N 个结点 给定一个链表&#xff0c;删除链表的倒数第 n 个节点&#xff0c;并且返回链表的头结点。 非递归解决 这题让删除链表的倒数第n个节点&#xff0c;首先最容易想到的就是先求出链表的长度length&#xff0c;然后就可以找到要删除链表的前一个结…

Hyper-v创建二代虚拟机无法进入bios问题解决

首先要确定从dvd驱动在上面&#xff0c;如果不在则把它向上移动然后保存。 启动虚拟机会进入下面界面 然后点下最左边的按钮然后疯狂点击f2(有的电脑是fnf2) 就可以顺利进入bios引导界面。

手机拯救计划:掌握3个技巧,轻松找回通讯录联系人号码

手机通讯录是我们的“社交地图”&#xff0c;一旦失去联系&#xff0c;就仿佛置身于茫茫人海中&#xff0c;不知所措。而安卓手机用户们&#xff0c;更是对通讯录的依赖达到了前所未有的高度&#xff0c;当发现它们丢失了&#xff0c;很容易产生焦虑情绪。别急&#xff0c;通过…

ARM架构(一)—— ARMV8V9基础概念

目录 1.ARMCore的时间线2.ARM术语小结2.1 A64和arrch642.2ARM架构现在的5个系列2.3 微架构2.4 PE2.5 Banked2.6 ARM文档术语2.7 IMPLEMENTATION DEFINFD 和 DEPRECATED2.8 EL1t和EL1h 3 ARMv7的软件架构4 安全状态切换模型4.1 Secure state和Non-secure state介绍 5 Interproce…

数据类型与结构设计:Rust 语言的深度探索

数据类型与结构设计&#xff1a;Rust 语言的深度探索 引言&#xff1a;数据与结构的精妙交响Rust 数据类型概览&#xff1a;坚实的基础数据类型详解基本数据类型&#xff1a;构建程序的原子单元复合数据类型&#xff1a;构建复杂数据结构的积木与结构体和枚举的结合 结构体与枚…

layui table template、或toolbar实现超出隐藏、更多展示全部效果

使用Layui table时&#xff0c;经常会使用template、或toolbar自定义模版属性。当使用该属性自定义HTML时&#xff0c;layui table 单元格原有的文本超出省略号隐藏功能&#xff0c;在该单元格讲不会生效。 前言&#xff1a;首先我们先搞懂layui超出隐藏原理&#xff0c;table单…