一.前言
今天,我们转战用友系列的第一个产品—T+/Tplus。前两篇文章讲解分享的都是金蝶的产品,因为本身公司牵涉的业务有限,后续有金蝶其他产品的API对接业务时,会继续来分享经验。
二.API接口详解
2.1接口定义和入参
根据开发者 区API文档的描述我们可以看到,T+版本为12.3以上的API对接,都必须使用V2版本,那v2与v1版本的区别有哪些呢?主要有两点:1. 请求认证方式,增加云企业ID认证方式 ;2.v2版本支持异步请求。OK,因为我们对接的客户财务环境为12.3,那么我们就来处理v2版本的OpenAPI,该版本的API引入了鉴权机制,简单来说就是在请求头增加了授权 Authorization 参数.
2.1.1 Authorization参数以及签名处理
2.1.2 OrgId方式的签名算法处理
这里,我们在上一步已经拿到签名所需的三个必要参数了,官 给了两种请求Head的处理方式,一种使用OrgId,一种使用用户名、密码、账套 ,这两种方式我们都会讲到。先看第一种方式OrgId访问。
OrgId的获取方式,官 描述的也有
即必须开通云企业才能看到
这样,我们第一种使用OrgId认证方式的所需参数就已全部准备完毕了,接着往下看,首先需要对appKey、orgid、appsecret、私钥全路径做一个签名1的算法加密,这个算法官 给我们提供的也有,这里仅提供C#版本的签名算法1.接着做一个Base64位的加密即可得到Authorization参数。
当你处理完第一步,调试接口正常返回
先不要高兴的太早了,我们还要根据这一步获取到的Token做业务调用。如图所示
官 也给的有测试的Demo供我们调用调试,这比较方便我们对问题作出反馈。 T+OpenAPI测试工具-包含v2版本-C#.zip. 然后大坑就来了… demo中的jose-jwt.dll是 .NET Framework的版本,但是我们的开发环境是.netCore2.2,很遗憾的是该dll在.netCore环境下不支持.详细的解决过程很心酸,就不再多叙述,我在之前的文章里已详细描述,这里我们只说最后的结果就是解决了不支持的问题。
2.1.3 用户名密码方式的签名算法处理
这种方式的登录相比第一种使用OrgId认证的方式有什么好处呢?我在实际的开发中得到了验证,OrgId方式的认证在对那些没有开通云企业的客户来说这种方式是行不通的,所以相比较来说,还是用户名密码的认证比较通用,只要客户能提供给我们一个正常可登录财务系统的用户名和密码,我们就可以使用该方式来进行接口的开发对接。下面具体来说一下,如何正确得到该方式的Authoirzation参数
这是第一步得到Token的方法,可以看到签名方式和加密方式不变,变得是签名方式的参数不同,orgId为空,在PostBody里要传入用户名、密码和账套 。
账套 为中括 里的,比如上图的021809… 不要传名称!不要传名称!不要传名称!接着获取到Token后,我们就可以调用业务接口了,这里还是使用用户名密码的方式来调用。
增加了上一步获取到的Token,详细代码如下
两种方式都处理完毕了,我们就可以愉快的使用API来做业务的处理啦。
2.2 业务接口调用
2.2.1 会计科目查询
URL的话,v2版本的调用,我们只需将v1改为v2即可,若想一次性获取到所有的会计科目,查询条件传空值即可,即如下:
该方法可返回所有会计科目用作基础档案或者前端页面展示使用。
2.2.2 凭证相关操作
凭证创建请求实体:
URL: TPlus/api/v1/doc/Create || TPlus/api/v2/doc/Create
构造好对应的凭证实体即可正常传输凭证了。
凭证查询:官 给的示例是传入一个dtos的数组,但是在实际的开发过程中,真正传入一个起始期间,一个截止时间时,并没有正确的返回对应的数据,所以我到现在也没搞明白这个起始和截止时间该咋用,如果有知道的小伙伴,还请帮忙解答。
三.结束语
其实,真正对于T+的业务调用并没有花费很多时间,因为前面的坑已经踩完了,后面基本上也没啥了,就是我很纳闷的是,每个接口的返回值格式是不固定的,这个就很令人费解啊。咱也搞不懂到底为啥这样定义。倒是前面处理签名算法和dll不兼容的问题前前后后大约搞了一个星期才完整解决,这个很是让人头大。
曾经在T+的开发群里看到这样一句话,每个开发都是一个实施。也确实是这样一种情况,你对接的每个API接口,不可能总会有人给你解答问题,这时候你只能靠自己去摸索,去猜,当然了大部分的开发文档还是很规范的。其实做对接的做多了,你会遇到不同形式的API接口,每家厂商都有自己独特的开发标准,我们能做的就是遵循这套标准,不然如何对接,如何正确处理我们的工作。
最后的最后,希望我们做API对接或者说是做开发的,要保持一颗良好的心态去面对问题,要相信问题总是会被解决的,只是时间早晚。而且要找对方法,比如 区,或者对应的交流群等等,会有很多大佬帮你解答疑惑,祝你在开发的道路上勇往直前的。
我是程序猿贝塔,一个分享自己对接过财务系统API经历和生活感悟的程序员。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!