金蝶ERP星空对接流程

发布于:2025-03-05 ⋅ 阅读:(17) ⋅ 点赞:(0)

1.金蝶ERP星空OPENAPI地址:

     金蝶云星空开放平台

2.下载金蝶云星空的对应SDK包

      金蝶云星空开放平台

3.引入SDK流程步骤

引入Kingdee.CDP.WebApi.SDK

右键项目添加引用,在打开的引用管理器中选择浏览页签,点击浏览按钮,找到从官网上下载的Kingdee.CDP.WebApi.SDK.dll文件,添加并确定。

引入SDK所需依赖包

右键项目选择“管理NuGet程序包”,搜索并安装Microsoft.Extensions.Configuration、Microsoft.Extensions.Configuration.FileExtensions、Microsoft.Extensions.Configuration.Json、Newtonsoft.Json。如果原程序已有安装可忽略。

配置文件说明

配置文件appsettings.json

由于链接产品需要读取配置文件,因此必须严格规范和审查配置文件的位置和内容。

appsetting.json文件必须放置在与项目内的Config文件夹下,如果没有Config文件夹则需要创建。

同时,appsetting.json文件的属性“复制到输出目录”的值应为:如果较新则复制。

配置参数说明

//第三方系统登录授权的账套ID

"X-KDApi-AcctID": "6244******6bff",

//第三方系统登录授权的应用ID

"X-KDApi-AppID": "225***_***************************d4rLE",

//第三方系统登录授权的应用密钥

"X-KDApi-AppSec": "2bb1d*********************80aeae",

//第三方系统登录授权的用户

"X-KDApi-UserName": "demo",

//账套语系,默认2052

"X-KDApi-LCID": "2052",

//服务Url地址,以k3cloud/结尾

"X-KDApi-ServerUrl": "http://172.17.55.175/k3cloud/"

如果集成用户的值为中文名,配置文件的编码集必须为utf-8。

调用示例

请参考OPENAPI官网(金蝶云星空开放平台)的API文档中的标准代码示例;

using Kingdee.CDP.WebApi.SDK;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace KingdeeWebAPP.Utility.Helper
{
    public static class K3CloudHelper
    {
        // 使用volatile关键字确保多线程环境下正确读取instance
        private static volatile K3CloudApi clienter;

        private static readonly object lockObject = new object();

        // 公共静态方法,返回K3CloudApi实例
        public static K3CloudApi Instance
        {
            get
            {
                // 第一次检查,无需锁
                if (clienter == null)
                {
                    lock (lockObject)
                    {
                        // 第二次检查,确保在多线程环境中只有一个线程会创建实例
                        if (clienter == null)
                        {
                            clienter = new K3CloudApi();
                        }
                    }
                }
                return clienter;
            }
        }
    }
}

4.通过金蝶云星空的webapi接口查看对应的FormId字段,查询字段,过滤条件字段等

 [HttpGet]
 public WebApiCallBack GetSalesOutboundOrderList()
 {
     var jm = new WebApiCallBack();

     // 输出字符串以验证
     string filter = $"FSaleOrgId.FNumber='154' and FDocumentStatus='C' and FCustomerID.FNumber='C0115748' and FApproveDate > '2025-02-20'";

     var param = new QueryParam()
     {
         FormId = "SAL_OUTSTOCK",
         FieldKeys = "FId,FBillNo,FMaterialID,FMaterialID.FNumber,FMaterialName,FMateriaModel,FRealQty,FStockID,FStockID.FNumber,FStockID.FName ",
         FilterString = filter,
     };

     //调用单据查询接口
     var returnInfo = K3CloudHelper.Instance.ExecuteBillQuery(param.ToJson());
     if (returnInfo.Count > 0)
     {
         List<SAL_OUTSTOCK> salOutstockList = returnInfo.Select(row => new SAL_OUTSTOCK
         {
             FId = (long)row[0],
             FBillNo = (string)row[1],
             FMaterialID = (long)row[2],
             FMaterialID_FNumber = (string)row[3],
             FMaterialName = (string)row[4],
             FMateriaModel = (string)row[5],
             FRealQty = (double)row[6],
             FStockID = (long)row[7],
             FStockID_FNumber = (string)row[8],
             FStockID_FName = (string)row[9]
         }).ToList();

         //对返回结果进行解析和校验,这里使用的是JsonPatch
         var resultJObject = JsonConvert.SerializeObject(returnInfo);
         Console.WriteLine("物料单据查询接口:" + resultJObject);
         jm.otherData = resultJObject;
         return jm;
     }

     return jm;
 }