NCCloud系列(二)openAPI

首先声明一下。本案例是针对用友NCC2111版本的。

首先附上官方的文档,参考如下

API文档 – YonBIP开发者社区

一、调用NCCloud的API

1.1 注册第三方应用

访问地址http://ip:port/nccloud/resources/opm,并通过管理员登录

打开页面后按下图操作

NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图
NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图1

NCC用户编码需要填写系统里面的。否则会显示undefined。通过查看network会发现报错说用户不存在。

点击操作后,就会自动创建对应的APP Secret公钥,如图所示

NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图2

创建好的第三方应用后,点击关联API,选择需要关联的API即可

1.2 通过使用NCCloudStudio工具进行OpenAPI接口的测试

提供一个官方的参考地址:https://community.yonyou.com/article/detail/199

安装最新版YonBuilder Premium开发工具,下载地址为:https://nccdev.yonyou.com/studio/

NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图3
NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图4

我们将上述的信息填写完毕后,就可以进行调试了。

NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图5

下面就以供应商修改的接口为例子

NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图6

1.3如何查看API接口文档呢?

NCCloud、基础技术、技术与框架NCCloud系列(二)openAPI插图7

1.4 java调用API

同样,先提供一下官方的文档如何在项目中调用OpenAPI:如何在项目中调用OpenAPI



import nccloud.open.api.auto.token.factory.APIUtilsFactory;
import nccloud.open.api.auto.token.factory.NCCVersionEnum;
import nccloud.open.api.auto.token.itf.IAPIUtils;

public class TokenTest {

    public static void main(String[] args) throws Exception {
        IAPIUtils util = null;
        // 传参版本号或版本枚举获取工具类
        util = APIUtilsFactory.getAPIUtils(NCCVersionEnum.NCC2111);
        // 服务地址ip
        String ip = "39.***.***.***";
        // 服务端口号
        String port = "***";
        // 账套编码,开发环境使用develop,生产环境需要使用用root账号登录,在“系统管理”节点查看账套编码
        String busi_center = "***";
        // 第三方应用编码
        String app_id = "nccapi";
        // app_secret,用于请求加签
        String app_secret = "******";
        // 公钥,加解密使用
        String public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs+lJHN3WvIknKLBJWdhHF99VL1DILtpVUWDiSZDtGbpjnwo2V40zg+t4aVI3wUyx+AF+fyRBCWb6mYwG219W5PMzbJfhv7cq7Qj3PDfexb0x/9ItV8y1+jCKSqlR/W4fnCA0wkc0MlM/18heNBjQs55XbW2dTnsji8cqqqEjDM/SXGY+p4kIZMCpEuL2cSm5YY5SSoBGgE4+FlR9YcQpb/+tGQu7NCOTzdRFqyNxS+V9CY1NSC2xEys1j6pWLY/S6x1QCF9reKargVq7J3IM+bnt8GwhkjuXF03n+i2vvDJ/Oo6BcomLTiAnbOPJKp/Bid8P99j2SZ4XZ2QtlmbpiQIDAQAB";
        // ncc用户名
        String ncc_user = "***";
        // ncc用户密码
        String password = "123456a!";
        // 公有云租户id
        String tenant_id = null;
        // 加密等级
        String secret_level = "L0";
        // 授权模式,客户端模式为client,密码模式为:password
        String grant_type = "client";

        // 初始化方法1
        util.init(ip,
                port,
                busi_center,
                app_id,
                app_secret,
                public_key,
                ncc_user,null);
        // 初始化方法2,tenant_id、secret_level、grant_type这三个参数也可以通过setter注入
        // util.init(ip, port, busi_center, app_id, app_secret, public_key, ncc_user, password, tenant_id, secret_level, grant_type);

        // 获取token
        String token = util.getToken();
        //System.out.println(token);
        // 请求的OpenAPI接口地址,注意nccloud前面没有"/"
        String apiuri = "nccloud/api/ic/saleout/schemequery";
        util.setApiUrl(apiuri);
        String requestParam = "{dbilldate:\"2021-03-09 00:00:00~2025-11-12 23:59:59\",vbillcode:\"XC2024120100144936\",pk_org:\"10040003\"}";
        // 携带token访问接口,获取结果
        String result = util.getAPIRetrun(token, requestParam);
        System.out.println(result);
    }

}