.NetCore对接各大财务软件凭证API——用友系列(1)
一.前言
今天,我们转战用友系列的第一个产品---T+/Tplus。前两篇文章讲解分享的都是金蝶的产品,因为本身公司牵涉的业务有限,后续有金蝶其他产品的API对接业务时,会继续来分享经验。
T+的API接口,哎,想起来都是心酸泪。关于该接口的对接开发经验,我之前也简单记录了一些,传送门记录用友T+接口对接的心酸历程 今天我们就来详细解析下这令人头大的财务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参数以及签名处理
那么 Authorization 参数如何才能生成呢?可以看官网首页的描述是 需要appkey、appsecert、私钥的文件全路径。那这三个参数又如何才能获取呢?必须申请ISV认证,即注册ISV,提交开发申请通过审核后,总部会将这三个参数一并发到注册时预留的邮箱里。
2.1.2 OrgId方式的签名算法处理
这里,我们在上一步已经拿到签名所需的三个必要参数了,官网给了两种请求Head的处理方式,一种使用OrgId,一种使用用户名、密码、账套号,这两种方式我们都会讲到。先看第一种方式OrgId访问。
OrgId的获取方式,官网描述的也有,
即必须开通云企业才能看到
这样,我们第一种使用OrgId认证方式的所需参数就已全部准备完毕了,接着往下看,首先需要对appKey、orgid、appsecret、私钥全路径做一个签名1的算法加密,这个算法官网给我们提供的也有,这里仅提供C#版本的签名算法1接着做一个Base64位的加密即可得到Authorization参数。
if (!APIConfig.AuthorizeParameters.ContainsKey("appkey")
|| !APIConfig.AuthorizeParameters.ContainsKey("orgid")
|| !APIConfig.AuthorizeParameters.ContainsKey("appsecret")
|| !APIConfig.AuthorizeParameters.ContainsKey("secerturl"))
{
throw new Exception("鉴权参数不完整");
}
var request = new AccessTokenRequest();
Dictionary<string, object> parm = new Dictionary<string, object>();
string appkey = APIConfig.AuthorizeParameters["appkey"];
string orgid = APIConfig.AuthorizeParameters[&#