ERP接口介绍
一、ERP接口概况
我们增加了ERP接口,接口的作用有:
- 简化天思ERP与外围系统的集成
- 将ERP、TCODE 、TBOSS协调成一个整体
- 与ERP一起维护
- …
ERP接口方便与外围程序集成,是现在很通用的一种模式,那么接口是什么意思,我们怎么使用它?
我们经常说的接口,其实就是一个API。
而API,我们可能经常听到,但是不是很明白,先看它的百科介绍:
API,英文全称Application Programming Interface,翻译为“应用程序接口”,是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
那么实际工作中怎么使用呢,举我们现在软件的例子:
我们的ERP是一个很完善很完整的系统软件,随着手机的便携性越来越高,价位越来越低,客户越来越希望我们ERP中仓库管理部分能在手机上直接使用,这样方便仓库人员及时处理出入库,但是我们的ERP不支持在手机上使用。怎么办?
我们开发了一套手机APP,也就是我们的TCODE仓库管理系统,也就是我们常说的TCODE。
那TCODE和ERP的数据怎么对接呢?总不能ERP做ERP的,TCODE做TCODE的吧?
这里就用到了API接口,通过ERP的API接口,把ERP系统和TCODE系统对接起来,让数据是相互通的。
再举一个实际的例子,以采购入库单存盘为例:
ERP写好了【登录接口】和【单据保存接口】,其中单据保存接口支持采购入库单,TCODE开发了一张采购入库单,在TCODE中先登录,然后录好采购入库单,保存这张单据的时候,直接调用我们ERP的【单据保存接口】,通过这个接口生成一张采购入库单,生成的这张单在ERP中就能看到,并不需要TCODE重新写一段采购入库存盘的代码。
同样,以采购入库新增接口为例,我们了解一下实际的接口使用,接口是一段定义好的函数,我们提供好了接口的种类和接口的模式,如果有其他系统需要调用我们的接口,直接根据我们的格式传好参数后调用就行。
现在很多客户有一些特殊的需求,比如需要用其他来源数据做入库,客户写了一个小程序,这个小程序有自己的数据库用来存放数据,他希望存盘能同时生成一张我们系统的采购入库单,那这时候就可以用到我们的【登录接口】和【单据保存接口】。
二、ERP接口实例介绍
首先,我们需要使用【登录接口】来模拟用户登录,得到返回的LoginId,这个LoginId可以理解成此次登录的身份标识,其他接口调用的时候必须用到这个身份标识。比如我们需要用到【单据保存接口】,那么就必须先取得这个LoginId。
2.1 【登录接口】的介绍
| 基本信息
信息 | 值 | 备注 |
---|---|---|
接口名称 | 用户登录 | 根据语言别、授权凭证等实现用户登录 |
请求状态 | POST | 请求状态一般有四种:使用时可简单理解为 1、POST /url 创建 2、DELETE /url/xxx 删除 3、PUT /url/xxx 更新 4、GET /url/xxx 查看 |
接口路径 | http://localhost:23798/api/User/login | 向服务器地址发送POST请求 |
| 请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Languageid | 0 | 是 | 客户端语言别,0:简体 1:繁体 2:英文 | |
Authorization | 是 | Basic REVNT19BRE1JTjoxMjM= | 授权凭证,由”登录代号_ 操作员代号:密码“组成字符串的Base64加密值,比如 Basic DEMO_ADMIN:123。 | |
ClientType | 否 | TestMgr | 用户自定义的客户端识别号,比如客户是WMS系统,可以自定义ClientType=“WMS” | |
Content-Type | 否 | application/json | 用于指定数据的传输类型,其他接用调用时必须用到,现在默认使用“application/json”格式,以后会支持其他格式 |
| 返回数据
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
LoginId | string | 否 | 返回的LoginId | ||
CompNo | string | 否 | 帐套代号 | ||
UserNo | string | 否 | 操作员代号 | ||
LoginIdExpiry | number | 否 | 登录超时时间(秒) | ||
ClientType | string | 否 | 客户端自定义识别号 | ||
LanguageId | number | 否 | 客户端语言别 |
| 调用范例
返回的Json:
{
"LoginId": "e835943e-55c2-4bf0-832d-6f4166592941",
"CompNo": "DEMO",
"UserNo": "ADMIN",
"LoginIdExpiry": 604800,
"ClientType": "WMS",
"LanguageId": 0
}
| 备注
以上介绍说的我们向服务器发送POST请求,请求参数是Languageid、Languageid、ClientType、ClientType,参数的值根据实际的情况录入,运行后返回LoginId、CompNo等字段的值,通过得出的值,我们可以进行后续新增采购入库的操作。
需要注意:
先判断返回的HttpStatusCode是否等于200,如果是则表示调用成功,否则返回错误信息
登录接口不需要频繁调用,只有当没有获得LoginId或登录已超时后才需要再次调用
登录接口返回的LoginIdExpiry以秒为单位,调用方在调用前先记录本地时间,接口返回后将记录的本地时间加上LoginIdExpiry的值,即是下次需要再次调用登录接口的时机
除了登录接口,其它接口调用必须在Headers里面传入LoginId
所有接口都以JSON格式返回
2.2 【单据保存接口】的介绍
| 基本信息
信息 | 值 | 备注 |
---|---|---|
接口名称 | 单据保存、修改 | 根据单据ID、是否为确认单来新增或修改单据 |
请求状态 | POST | 请求状态一般有四种:使用时可简单理解为 1、POST /url 创建 2、DELETE /url/xxx 删除 3、PUT /url/xxx 更新 4、GET /url/xxx 查看 |
接口路径 | http://localhost:23798/api/Bill/SaveBill | 向服务器地址发送POST请求 |
| 请求参数
Headers
参数名称 | 参数值 | 是否必须 | 示例 | 备注 |
---|---|---|---|---|
Content-Type | application/json | 是 | 用于指定数据的传输类型 | |
LoginId | 是 | e835943e-55c2-4bf0-832d-6f4166592941 | 用户登录的LoginId |
Query
参数名称 | 是否必须 | 示例 | 备注 |
---|---|---|---|
CallID | 是 | CallID=PC | 调用的单据识别号,比如"SA":表示销售出库单 “PC”:表示采购入库单 |
isConfirm | 是 | isConfirm=F | 是否确认单 |
Body
现在使用的是数据库表字段传参来实现,没用统一的字段,所以不用表格列示,后续会修改为统一字段传参
{
"HeadData": {
//表头数据
"CUS_NO":