WebAPI java SDK 集成以及无法动态国际化问题解决原创
金蝶云社区-TIanci
TIanci
43人赞赏了该文章 839次浏览 未经作者许可,禁止转载编辑于2023年09月04日 15:58:39

一、金蝶云星空中申请《第三方系统登陆授权》

    参考:https://vip.kingdee.com/knowledge/specialDetail/229961573895771136?category=229963554177453824&id=298030366575393024&productLineId=1

image.png


二、官网下载JAVA SDK包并导入项目中

    下载地址:https://openapidev.open.kingdee.com/ApiSdkCenter

    image.png

image.png

    

    如果是springboot项目

image.png

// maven 中引入 webapi 的 jar 包
<dependency>
    <groupId>com.kingdee.bos</groupId>
    <artifactId>k3cloud-webapi-sdk8.0.4</artifactId>
    <version>8.0.4</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/k3cloud-webapi-sdk8.0.4.jar</systemPath>
</dependency>


三、基础 webapi 接口使用

    在需要调用webapi接口的位置初始化 k3CloudApi

private static final K3CloudApi k3CloudApi = new K3CloudApi();

    保存接口:

String result = k3CloudApi.save(formId, model);
// 自定义解析 可返回 保存的单据编号
MyRepoRet repoRet = new Gson().fromJson(result, MyRepoRet.class);
if (!repoRet.isSuccessfully()) {
    throw new Exception(getErrorMsg(repoRet.getResult().getResponseStatus().getErrors()));
}
return repoRet.getResult().getNumber();

    更新接口:

String result = k3CloudApi.save(formId, model);

    提交接口:

// number 单据编号
OperateParam operateParam = new OperateParam();
operateParam.setNumbers(Collections.singletonList(number));
OperatorResult operatorResult = k3CloudApi.submit(formId, operateParam);

    审核接口:

// number 单据编号
OperateParam operateParam = new OperateParam();
operateParam.setNumbers(Collections.singletonList(number));
OperatorResult operatorResult = k3CloudApi.audit(formId, operateParam);

    作废接口:

// number 单据编号
OperateParam operateParam = new OperateParam();
operateParam.setNumbers(Collections.singletonList(number));
String result = k3CloudApi.excuteOperation(formId, "Cancel", JSONUtil.toJsonStr(operateParam));


四、动态国际化

    由于官方提供的webapi jar 不支持动态国际化,每次调用接口之前需先调用 

LoginByAppSecret 接口
private void loginByAppSecret() {
   AppCfg cfg = CfgUtil.getAppDefaultCfg();
   IdentifyInfo identifyInfo = new IdentifyInfo();
   identifyInfo.copyPropertiesToAppCfg(cfg);
   Object[] loginInfo = {identifyInfo.getdCID(), identifyInfo.getUserName(), identifyInfo.getAppId(),
           identifyInfo.getAppSecret(), getLanguageCode()};
   try {
       String execute = k3CloudApi.execute("Kingdee.BOS.WebApi.ServicesStub.AuthService.LoginByAppSecret", loginInfo);
   } catch (Exception e) {
       log.error(e.getMessage(), e);
   }
}

    例如:

loginByAppSecret();
String result = k3CloudApi.save(formId, model);

    刷新授权信息 就可以支持动态国际化了

赞 43