金蝶云php webapi,金蝶云星空(WebApi集成方式)免密码登录接口实例模板

本文介绍了如何在PHP中使用KingdeeCDPWebAPISDK进行接口调用,包括配置、初始化SDK、构建请求参数和解析返回结果的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

require './kingdee_cdp_webapi_sdk/index.php'; // 引入并执行指定路径下的PHP文件,路径可以是绝对路径  

use kingdee_cdp_webapi_sdk\entity\IdentifyInfo;

use kingdee_cdp_webapi_sdk\sdk\K3CloudApi;

//注意 1:此处不再使用参数形式传入用户名及密码等敏感信息,改为在登录配置文件中设置。

//注意 2:必须先配置第三方系统登录授权信息后,再进行业务操作,详情参考各语言版本SDK介绍中的登录配置文件说明。

//读取配置,初始化SDK

$config=new IdentifyInfo("./config/conf.ini");

$k3api=new K3CloudApi($config);

//请求参数,要求为json字符串

$para_data = '{"CreateOrgId":0,"Number":"","Id":"1","IsSortBySeq":"false"}';

//业务对象标识

$formId = "BD_Currency";

//调用接口

$response=$k3api->view($formId,$para_data);

//对返回结果进行解析和校验

$json_response = json_decode($response);

if ($json_response ->Result->ResponseStatus->IsSuccess)

{

    echo "接口返回结果:".$response;

}else{

    assert(false,"接口返回结果:".$response);

}  

<think>好的,我现在需要帮助用户解决如何在Delphi中调用金蝶云星空API的问题。用户明确要求示例教程,所以我要提供一个结构清晰、步骤明确的指南。首先,我需要回忆一下Delphi调用Web API的一般方法,以及金蝶云星空API的具体要求。 首先,用户可能已经了解过金蝶云的API文档,比如引用[1]和[2]提到的接口说明书和开发实例。我需要确保示例符合这些文档的规范。另外,用户提供的引用[3]有一个C#的示例,我需要将其转换为Delphi代码,并说明关键步骤。 接下来,我应该考虑Delphi中处理HTTP请求的常用组件。Indy的TIdHTTP组件是常用的,所以使用它来发送POST请求是合理的。同时,处理JSON数据可能需要使用Delphi的System.JSON单元或者第三方库,这里假设用户使用内置的JSON库。 然后,认证部分很重要。金蝶云API通常需要获取访问令牌,这需要发送凭证到认证接口。我需要确保示例中包含获取Token的步骤,比如使用TIdHTTP.Post方法发送用户名、密码、客户端ID和密钥。 接下来是构造请求体,用户可能需要创建特定的JSON数据,比如生产订单的信息。这里需要参考金蝶的API文档,确保字段正确。例如,引用[3]中的C#示例使用了FormId、Data等参数,这些需要转换为对应的JSON对象。 在代码结构方面,分步骤说明会更清晰:初始化HTTP客户端、获取Token、构造请求、发送请求、处理响应。同时,异常处理和资源释放也是必须提到的,避免内存泄漏。 另外,用户可能需要知道如何调试和查看返回结果,比如使用ShowMessage或者日志记录。还要提到查看金蝶的官方文档的重要性,因为不同版本的API可能有差异,如引用[2]提到的版本兼容性。 最后,生成相关问题,帮助用户深入理解,比如优化方法、异常处理和企业集成方案,这些都需要基于提供的引用和常见问题。 现在需要检查是否符合系统级指令:使用正确的LaTeX格式,但看起来问题中没有数学公式,可能不需要。确保回答使用中文,结构清晰,分步骤,代码示例正确,引用标记正确。同时,生成的相关问题要围绕主题,比如认证方式优化、异常处理等。 总结步骤: 1. 环境准备:安装Indy组件。 2. 获取访问令牌:发送POST请求认证。 3. 构造API请求:创建JSON数据。 4. 发送请求并处理响应:使用TIdHTTP和TIdSSLIOHandlerSocketOpenSSL。 5. 代码示例:展示完整Delphi代码。 6. 注意事项:异常处理、文档参考等。 需要确保代码中的URL、参数与金蝶的文档一致,比如认证地址是/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc,生产订单保存接口路径正确。同时,SSL处理需要正确配置,避免证书问题。 可能遇到的问题包括JSON格式错误、认证失败、网络问题,这些需要在注意事项中提到。另外,引用[3]中的代码示例是C#,转换为Delphi时要注意语法和结构差异,比如使用TJSONObject构建数据。 现在将这些思考整理成结构化的回答,确保每个步骤清晰,代码正确,并且引用相关的资料,如引用[1]、[2]、[3]来支持说明。</think>### Delphi调用金蝶云星空API的步骤说明 #### 一、环境准备 1. 安装**Indy组件**(TIdHTTP、TIdSSLIOHandlerSocketOpenSSL) 2. 引用`System.JSON`单元处理JSON数据 3. 准备金蝶云API地址和认证信息(账号、密码、客户端ID/密钥) #### 二、核心步骤 1. **获取访问令牌** 向认证接口发送POST请求,携带用户凭证: ```delphi var HTTP: TIdHTTP; Params: TStringList; Response: string; begin HTTP := TIdHTTP.Create(nil); Params := TStringList.Create; try Params.Add('username=your_account'); Params.Add('password=your_password'); Params.Add('client_id=client_id'); Params.Add('client_secret=client_secret'); Response := HTTP.Post('https://api.kingdee.com/auth/validatetoken', Params); // 解析返回的JSON获取access_token finally Params.Free; HTTP.Free; end; end; ``` 2. **构造API请求** 创建生产订单数据(以JSON格式为例): ```delphi var JsonObj: TJSONObject; begin JsonObj := TJSONObject.Create; try JsonObj.AddPair('FormId', 'PRD_PPOrder'); JsonObj.AddPair('Data', TJSONObject.Create .AddPair('FBillTypeID', TJSONObject.Create.AddPair('FNUMBER', '标准订单')) .AddPair('FMaterialID', TJSONObject.Create.AddPair('FNUMBER', '材料001'))); // 更多字段参考引用[3]的示例 finally JsonObj.Free; end; end; ``` 3. **发送API请求** 使用TIdHTTP组件提交数据并处理响应: ```delphi var HTTP: TIdHTTP; SSLHandler: TIdSSLIOHandlerSocketOpenSSL; RequestStream: TStringStream; Response: string; begin HTTP := TIdHTTP.Create(nil); SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); try HTTP.IOHandler := SSLHandler; HTTP.Request.ContentType := 'application/json'; HTTP.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + AccessToken); RequestStream := TStringStream.Create(JsonData, TEncoding.UTF8); Response := HTTP.Post('https://api.kingdee.com/api/productionorder/save', RequestStream); ShowMessage('提交成功:' + Response); finally RequestStream.Free; SSLHandler.Free; HTTP.Free; end; end; ``` #### 三、完整代码示例 ```delphi procedure CallKingdeeAPI; var HTTP: TIdHTTP; SSLHandler: TIdSSLIOHandlerSocketOpenSSL; Params, Headers: TStringList; JsonObj: TJSONObject; Response, AccessToken: string; begin // 1. 获取Token HTTP := TIdHTTP.Create(nil); SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); Params := TStringList.Create; try HTTP.IOHandler := SSLHandler; Params.Add('username=admin'); Params.Add('password=123456'); Params.Add('client_id=your_client_id'); Params.Add('client_secret=your_secret'); Response := HTTP.Post('https://your-domain.com/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc', Params); AccessToken := (TJSONObject.ParseJSONValue(Response) as TJSONObject).GetValue('access_token').Value; finally Params.Free; SSLHandler.Free; HTTP.Free; end; // 2. 提交生产订单 HTTP := TIdHTTP.Create(nil); SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil); JsonObj := TJSONObject.Create; try // 构造JSON数据 JsonObj.AddPair('FormId', 'PRD_PPOrder'); JsonObj.AddPair('Data', TJSONObject.Create .AddPair('FBillTypeID', TJSONObject.Create.AddPair('FNUMBER', 'SCDD01')) .AddPair('FMaterialID', TJSONObject.Create.AddPair('FNUMBER', 'MAT001'))); // 发送请求 HTTP.IOHandler := SSLHandler; HTTP.Request.ContentType := 'application/json'; HTTP.Request.CustomHeaders.AddValue('Authorization', 'Bearer ' + AccessToken); Response := HTTP.Post('https://your-domain.com/api/v1/productionorder/save', TStringStream.Create(JsonObj.ToString)); ShowMessage('结果:' + Response); finally JsonObj.Free; SSLHandler.Free; HTTP.Free; end; end; ``` #### 四、注意事项 1. **SSL证书**:需配置`TIdSSLIOHandlerSocketOpenSSL`的SSLVersions和证书路径 2. **异常处理**:建议用`try...except`包裹关键操作,捕获`EIdHTTPProtocolException` 3. **文档参考**:字段定义需严格参照[金蝶云API文档](https://gitcode.com/Open-source-documentation-tutorial/02d91)[^1][^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值