费用报销OpenAPI接口说明

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:2

费用报销OpenAPI接口说明

1.描述

openapi接口仅适用于费用报销模块单据导入。

单据导入接口支持导入(通过EAS DEP /BIM工具)动态新增的属性(字段)。

注意:openApi接口在eas8.5.0及以上版本才支持, 8.5需要更新费用补丁PT151074

8.6.1需要更新费用补丁PT155366才支持。

2.接口说明

接口描述:

导入单据

接口URL:

http:// ip : port /easportal/openapi/api?token= ?

(token获取可参考接口调用)

接口API:
cpbcOpenAPI_importBill

接口参数说明:

参数

类型

含义

bosType

String

单据的bostype(如费用报销单:4A44F49F)

data

String

单据对象数组Json字符串

params

String

参数对象,必须包含属性actionTypeactionType可选值为submit/save

1http请求body

{
"api": " cpbcOpenAPI_importBill",      
"data": [“4A44F49F”, data, {“actionType”:”submit”}]
}

其中”data”中的data参数为要导入单据,为数组格式,可放入多张同类型单据,可参考3 .2 d ata 示例:


请求body示例:

{
"api": "cpbcOpenAPI_importBill",
"data": ["4A44F49F", [{"bosType":"4A44F49F","entries":[]}],{"actionType":"submit" }]
}

2http请求返回值为String , JSON格式。JSON格式如下:

{
“status” :  0,
“msg” : “信息”
“billErrors”:[{“id”:””,”number”:””,errorMsgs:[“”,””]},{结构同前面的},…]
}

值说明:

status处理结果:0:全部成功 1:全部失败  2:部分成功

msg : 描述信息

billErrors : 单据错误清单,描述不能导入的原因。

 status: 0导入成功 1导入失败id:单据idnumber:单据编码, errorMsgs:错误信息集。


3.单据字段说明

3.1 数据类型的格式说明

单据的数据格式为JSON,下面的表格描述了每种数据类型的格式要求,传入的数据请严格遵照以下的格式。

数据类型

说明

格式要求

ID

最大长度为44为的字符串

id:A093893DF

数值

小数值,金额类的小数位最多为2位。

amount,23.95

整数

整数值。

year:2013

日期

日期,要求为yyyy-mm-dd

bizDate:2013-06-19

时间

日期,时间类型,要求为 yyyy-mm-dd HH:MM:SS

createTime:”2013-06-19 14:58:23

字符串

字符串

name:nokia 手机

枚举

枚举项

status:2

基础数据

EAS系统中的基础数据,采用对象形式表示,需要传入其编码。

applier:{number:ellen}

布尔型

值为true/false

isTax:true

单据数据模型不需要维护单据id 分录id 和分录的billid,会在单据保存时自动生成

引入接口校验金额关系,需要构建好单据中金额数值关系,否则操作时可能会失败

基础数据类型属性,不推荐加入id,如果id不符合EAS系统id规则且无对应基础数据存在,导入时或者在单据后续流程中可能会发生异常。

说明:单据模型可通过dep单据扩展平台查看实体或者bos开发工具查看元数据

必录字段包含且不限于以下字段:

3.2 单据data示例单据对象数组Json字符串)

[{"overAmountDesc":"1111",
"bosType":"4A44F49F",
"isWithTax":false,
"budgetAmount":0,
"applier":{"number":"ellen"},
"bizDate":"2013-06-19",
"applierCompany":{"number":"LLJT.01"},
"orgUnit":{"number":"LLJT.01.01"},
"company":{"number":"LLJT.01"},
"costedDept":{"number":"LLJT.01.01"},
"currencyType":{"number":"CNY"},
"cause":"cpbcopenApi",
"bizReqDate":"2013-06-19",
"prior":"30",
"state":25,
"entries":[{"happenTime":"2013-06-19","amount":1000,"amountOri":1000,"amountOriWithoutTax":1000,"tax":0,"amountApprovedOri":1000,"amountApproved":1000,"operationType":{"number":"LL002"},"expenseType":{"number":"B001.001"},"costCenter":{"number":"LLJT.01.01"},
    
    
"company":{"number":"LLJT.01"},"currencyType":{"number":"CNY"},"exchangeRate":1,"convertMode":0,"exchangeRatePrecision":4}],
"collectionEntries":[{"payerName":"testPayer","currencyType":{"number":"CNY"},"exchangeRate":1,"convertMode":0,"exchangeRatePrecision":4}]
}]

3.3 请求data示例:

[
"4A44F49F"
,
[{"overAmountDesc":"1111",
"bosType":"4A44F49F",
"isWithTax":false,
"budgetAmount":0,
"applier":{"number":"ellen"},
"bizDate":"2013-06-19",
"applierCompany":{"number":"LLJT.01"},
"orgUnit":{"number":"LLJT.01.01"},
"company":{"number":"LLJT.01"},
"costedDept":{"number":"LLJT.01.01"},
"currencyType":{"number":"CNY"},
"cause":"cpbcopenApi",
"bizReqDate":"2013-06-19",
"prior":"30",
"state":25,
"entries":[{"happenTime":"2013-06-19","amount":1000,"amountOri":1000,"amountOriWithoutTax":1000,"tax":0,"amountApprovedOri":1000,"amountApproved":1000,"operationType":{"number":"LL002"},"expenseType":{"number":"B001.001"},"costCenter":{"number":"LLJT.01.01"},
    
    
"company":{"number":"LLJT.01"},"currencyType":{"number":"CNY"},"exchangeRate":1,"convertMode":0,"exchangeRatePrecision":4}],
"collectionEntries":[{"payerName":"testPayer","currencyType":{"number":"CNY"},"exchangeRate":1,"convertMode":0,"exchangeRatePrecision":4}]
}]
, 
{"
actionType
":"submit
" }
]

4.二开相关

dep扩展字段直接加入data数据模型中,在dep启用的情况,会自动保存到数据库中。

如果需要二次开发开导入处理类

1修改类路径下:com/kingdee/eas/cp/bc/app/cpbcImporterConfig.properties文件,修改bostype对应的导入处理类为二开的类。

2该类必须继承com/kingdee/eas/cp/bc/app/openApi/AbstractDefaultImporter.java或者每个单据的具体导入实现类(如费用报销单:BizAccountBillImporter



5.接口调用

5.1 http调用方式

1.登录:

先要进行单点登录,有以下两种方式:

(1) 普通用户密码方式

http://127.0.0.1:6888/easportal/openapi/login?authPattern=BaseDB&dcName =EAS850BETA3&isEncodePwd=0&language=l2&password=&user=zqtest

返回格式:

{
     "data":"{"token":"qZbT9PATjqwuINItQwIZxCSYjesmiDtSYVIPuvV3LzPty2feKpVeFdJrcRnUS9iL"},
     "errCode":0,  
     "errMsg":"执行成功"
}

username : 用户

password : 密码

dcName : 数据中心代码

language : 语言

slnName : eas

authPattern :验证方式 默认 "BaseDB" ; 其他认证方式KEY可从easAuthPatterns.xml中获取。如BaseTrdLtpaToken可动态切上下文

isEncodePwd  密码是否加密方式传递,0未加密,1加密(加密方式为DES,key为username,可以引用common.jar )

appid:第三方拥有权限的应用编码(共享模式不用传均可以调通)。目前费用的OpenAPI接口都是非共享的,所以第三方系统调用需要加上这个参数(参考6OpenAPI用户手册)




errCode 0代表执行成功,其他为失败


(2) LtpaToken 免密码方式

http://localhost:6888/easportal/openapi/login?user=zj001&dcName=EAS850BETA3&language=l2&password=AAECAzVFOUZCNDUyNUU5RkJCNUF6ajAwMQHwJDFSCal3H3RqdinkCvOAVrKI&authPattern=BaseTrdLtpaToken


username : 用户

password : ltpatoken

dcName : 数据中心代码

language : 语言

slnName : eas

authPattern : BaseTrdLtpaToken

appid:第三方拥有权限的应用编码(共享模式不用传均可以调通)

errCode 0代表执行成功,其他为失败


ltpatoken 可参照文档附件中的 第三方系统单点登录到EAS的二次开发指南.docx

java

String username = "user";
String password = LtpaTokenManager.generate(username,filePath).toString();

详细请看上述文档

2.调用:

http://ip:port/easportal/openapi/api?token =

请求body

{
     "api": " cpbcOpenAPI_importBill",   
     "data": [“4A44F49F”, data, {“actionType”:”submit”}]
 }

返回结果

{
    "data":"{}",
    "errCode":0,"
       errMsg":"执行成功"
}


result 为最终执行的结果



5.2 第三方java程序内调用方式

String ip = "172.17.6.176";

int port = 8080;

String userName = "zj003";

String password = "";

String dcName = "EAS860NEW";

String language = "l2";


EASLoginContext loginCtx = new EASLoginContext.Builder(ip, port,

        new CommonLogin.Builder(userName, password, dcName, language)

//.appid("test")

                .build())

.https(false)//是否https

.build();


OpenApiInfo info = new OpenApiInfo();

info.setApi("cpbcOpenAPI_importBill");

info.setData(3.3 data 示例 );

OpenApi openApi = OpenApiFactory.getService(loginCtx);

String result = openApi.invoke(info);

System.out.println("----------result:" + result);


第三方依赖包:

openapi-server.jarsp-openapi-server.jar

log4j-1.2.15.jar

fastjson-1.2.58.jar

获取方式

\eas\server\lib\common\trd

\eas\server\lib\server\bos\openapi-server.jareas\server\lib\patch\ sp-openapi-server.jar(只需要一个)

ps

1. 具体的调用样例可反编译查看

com.kingdee.bos.openapi.third.login.Example

2. 如果调用过程中出现404报错,有可能是调用的访问路径不在白名单之中,被拦截,需要手动添加白名单路径,配置文件的路径为:apusic/domains/server*/config/web.xml。具体如下图

allow_urls新增/easportal/openapi/


6. OpenAPI常见问题

第三方应用使用OpenAPI之前一定要先看用户手册,了解相关基本配置。调用出现问题或报错先在OpenAPI常见问题里面查找解决方案。


OpenAPI用户手册:

https://vip.kingdee.com/article/98349464997083392

OpenAPI常见问题可参考以下云社区链接

https://vip.kingdee.com/article/175622642354077952


7. 测试OpenApi接口是否能调用成功

可以通过postman测试

1.获取token

http://127.0.0.1:6888/easportal/openapi/login?authPattern=BaseDB&dcName=EAS85&isEncodePwd=0&language=l2&password=&user=yangappid=124456

username : 用户

password : 密码

dcName : 数据中心代码

language : 语言

slnName : eas

authPattern :验证方式 默认 "BaseDB" ; 其他认证方式KEY可从easAuthPatterns.xml中获取。如BaseTrdLtpaToken可动态切上下文

isEncodePwd  密码是否加密方式传递,0未加密,1加密(加密方式为DES,key为username,可以引用common.jar )

appid:第三方拥有权限的应用编码(共享模式不用传均可以调通)。目前费用的OpenAPI接口都是非共享的,所以第三方系统调用需要加上这个参数(参考6OpenAPI用户手册)


返回格式:

{
       "data":"{"token":"qZbT9PATjqwuINItQwIZxCSYjesmiDtSYVIPuvV3LzPty2feKpVeFdJrcRnUS9iL"},
    "errCode":0,
    "errMsg":"执行成功"
}


注意:第三方调用,url要加appid参数

2.调用OpenApi接口

通过以上获取到的token发起以下http请求,如果返回执行成功,说明OpenApi口调通了

http://127.0.0.1:6888/easportal/openapi/api?token=bLgs6Ae9ZbBmbkFqG9vkeY11xgdB1x0OIN3DjWS79iGvcM/qTiglK1sGNVYSmAhh


请求body示例:

{
"api": "cpbcOpenAPI_importBill",
"data": ["4A44F49F", [{"bosType":"4A44F49F","entries":[]}], {"actionType":"submit"}]
}

8.文档附件

1.第三方系统单点登录到EAS的二次开发

2.   kingdee_Ltpa 见附件

3. EAS费用报销openAPI1.1 见附件


EAS费用报销openAPI1.1.docx

kingdee_Ltpa.rar

费用报销OpenAPI接口说明

1.描述本openapi接口仅适用于费用报销模块单据导入。单据导入接口支持导入(通过EAS DEP /BIM工具)动态新增的属性(字段)。注意:openA...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息