Skip to content

ERP API(WMS Response)文档汇总

1. 接口概述

ERP API(WMS Response)是 OMS 系统提供的接收方接口,用于接收第三方 WMS 平台推送的仓储业务数据。本文档汇总了所有 WMS 接收方接口的详细信息,包括发货单、入库单、出库单、退货单、盘点、库存异动、商品、转储单、加工单等业务接口。

接口方向:第三方 WMS 平台 → OMS 系统(接收方)

与 OpenAPI 的区别:

  • OpenAPI:OMS 系统对外提供接口,供外部系统调用 OMS 功能(查询、操作等)
  • ERP API(WMS Response):第三方 WMS 平台推送数据到 OMS,OMS 作为接收端处理数据

2. API 调用基础

2.1 请求方式

所有接口均支持 POST 方式请求。

2.2 请求URL

http(s)://[域名]/index.php/api

2.3 系统级参数

所有接口请求必须包含以下系统级参数:

参数名类型必选描述
flagstring接入标识,固定值:erpapi
app_idstring应用ID,如:ecos.ome
certi_idstring证书ID,系统证书编号
from_node_idstring来源节点ID,推送方节点ID
node_idstring目标节点ID,店铺节点ID(OMS节点)
node_typestring节点类型,如:ecos.ome
timestampint时间戳,10位时间戳(单位:秒)
methodstring接口方法名,格式:wms.{resource}.{action},如:wms.delivery.status_update
signstring签名,用于验证请求合法性,详见签名算法章节
formatstring响应格式,可选值:json(默认)
vstringAPI版本号,如:1.0

3. 签名算法

3.1 签名生成步骤

  1. 收集所有请求参数(不包括 sign 本身)
  2. 按照参数名的 ASCII 码顺序进行排序(ksort
  3. 递归拼接参数名和参数值(对于嵌套数组,递归处理)
  4. 对拼接后的字符串进行 MD5 加密,再转大写
  5. 将上一步的结果与 token(接口密钥)拼接
  6. 再次进行 MD5 加密并转大写,得到最终签名

3.2 签名生成公式

sign = strtoupper(md5(strtoupper(md5(assemble($params))). $token))

3.3 签名算法要点

  • 参与签名的参数集合不包含 sign 本身
  • 参数按键名排序后按约定拼装
  • 首次 MD5 后转大写,与 token 拼接后再 MD5,最终再转大写
  • 保持编码一致(UTF-8)、去除多余空白
  • 对于布尔值,转换为 1 或 0
  • 对于嵌套数组,递归处理

3.4 签名算法代码示例(PHP)

php
/**
 * 生成签名算法函数
 *
 * @param $params
 * @param $token
 * @return string
 */
function gen_sign($params, $token)
{
    return strtoupper(md5(strtoupper(md5(assemble($params))). $token));
}

/**
 * 组装签名参数
 *
 * @param $params
 * @return string|null
 */
function assemble($params)
{
    if (!is_array($params)) {
        return null;
    }
    
    // ksort
    ksort($params);
    
    // sign
    $sign = '';
    foreach ($params as $key => $val)
    {
        if (is_null($val)) {
            continue;
        }
        
        if (is_array($val)) {
            $sign .= $key . assemble($val);
        } else {
            $sign .= $key . $val;
        }
    }
    
    return $sign;
}

/**
 * 系统参数
 *
 * @param $flag
 * @return array
 */
function system_params($flag)
{
    $params['flag'] = $flag;
    $params['type'] = 'json';
    $params['charset'] = 'utf-8';
    $params['ver'] = '1';
    $params['timestamp'] = time();
    
    return $params;
}

// erpapi标识
$flag = 'erpapi';

// token:config目录下certi.php中获取(没有则为空)
$token = 'your_interface_key';

//set params
$setParams = array(
    'app_id' => 'ecos.ome',
    'node_type' => 'ecos.ome',
    'callback_url' => '', //回调url
    'certi_id' => '20215858518', //证书ID
    'from_node_id' => '20218888', //节点ID
    'node_id' => '1311861837', //店铺节点node_id
);

// 系统级参数
$systemParams = system_params($flag);
$systemParams = array_merge($systemParams, $setParams);

// 请求参数
$requestParams = array();

// 组装请求参数
$params = array_merge($systemParams, $requestParams);

// 生成签名
$params['sign'] = gen_sign($params, $token);

4. 接口响应格式

4.1 响应格式说明

所有接口响应格式统一为 JSON,包含以下字段:

字段名类型必填说明
rspstring响应状态:succ(成功)或 fail(失败)
msgstring是/否响应消息(成功时包含操作描述,失败时包含错误信息)
dataobject响应数据(成功时可能包含单号等信息,失败时可能包含错误详情)

4.2 成功响应示例

json
{
    "rsp": "succ",
    "msg": "发货单状态更新成功",
    "data": {
        "delivery_bn": "D20250101001"
    }
}

4.3 失败响应示例

json
{
    "rsp": "fail",
    "msg": "发货单号必填"
}

5. 系统级错误码

错误码描述可能原因
E_PARAM参数缺失或格式不正确必填参数缺失、参数类型错误
E_STATE业务状态不允许状态不允许当前操作
E_DUPLICATE重复提交单号已存在、重复推送等
E_AMOUNT数量校验不通过数量不一致等
E_INTERNAL内部处理异常数据库错误、系统异常等
E_EMPTY数据为空明细不可为空等
E_SIGN签名错误签名算法错误、token 不正确等

6. 支持的接口模块列表

6.1 delivery(发货单)

  • 接口名:发货单接口
  • 请求方法:POST
  • 功能描述:发货单状态更新,包括发货、打印、审核、取消等状态
  • 主要方法
接口方法功能描述
wms.delivery.status_update发货单状态更新(支持 delivery、print、check、cancel、update、accept、pick、package 等状态)

6.2 stockin(入库单)

  • 接口名:入库单接口
  • 请求方法:POST
  • 功能描述:入库单状态更新,支持采购入库、调拨入库、残损入库等
  • 主要方法
接口方法功能描述
wms.stockin.status_update入库单状态更新(支持 FINISH、PARTIN 状态)

6.3 stockout(出库单)

  • 接口名:出库单接口
  • 请求方法:POST
  • 功能描述:出库单状态更新,支持采购退货、调拨出库、残损出库等
  • 主要方法
接口方法功能描述
wms.stockout.status_update出库单状态更新(支持 FINISH、PARTIN 状态)

6.4 reship(退货单)

  • 接口名:退货单接口
  • 请求方法:POST
  • 功能描述:退货单状态更新、新建完成、服务退款等
  • 主要方法
接口方法功能描述
wms.reship.status_update退货单状态更新(支持 FINISH、PARTIN、CLOSE、FAILED、DENY 等状态)
wms.reship.add_complete新建与完成退货单
wms.reship.service_refundWMS退货服务单退款消息

6.5 inventory(盘点)

  • 接口名:盘点接口
  • 请求方法:POST
  • 功能描述:库存盘点数据推送,支持全量盘点和增量盘点
  • 主要方法
接口方法功能描述
wms.inventory.add新增盘点数据(支持全量/增量模式)

6.6 stock(库存异动)

  • 接口名:库存异动接口
  • 请求方法:POST
  • 功能描述:库存变化数据推送,实时同步库存变动
  • 主要方法
接口方法功能描述
wms.stock.quantity库存异动数据推送

6.7 goods(商品)

  • 接口名:商品接口
  • 请求方法:POST
  • 功能描述:商品信息变更推送
  • 主要方法
接口方法功能描述
wms.goods.status_update商品信息变更MQ消息推送

6.8 transferorder(转储单)

  • 接口名:转储单接口
  • 请求方法:POST
  • 功能描述:转储单状态更新,支持仓库间调拨
  • 主要方法
接口方法功能描述
wms.transferorder.update转储单状态更新

6.9 storeprocess(加工单)

  • 接口名:加工单接口
  • 请求方法:POST
  • 功能描述:加工单确认,处理加工完成数据
  • 主要方法
接口方法功能描述
wms.storeprocess.status_update加工单确认(包含原料和成品明细)

6.10 stockdump(转储单)

  • 接口名:转储单接口(简化版)
  • 请求方法:POST
  • 功能描述:转储单状态更新
  • 主要方法
接口方法功能描述
wms.stockdump.status_update转储单状态更新

6.11 receiverinfo(收货人信息)

  • 接口名:收货人信息接口
  • 请求方法:POST
  • 功能描述:发货单地址明文查询
  • 主要方法
接口方法功能描述
wms.receiverinfo.query发货单地址明文查询

7. 接口调用示例

7.1 PHP 示例(发货单状态更新)

php
<?php
/**
 * 生成签名算法函数
 *
 * @param $params
 * @param $token
 * @return string
 */
function gen_sign($params, $token)
{
    return strtoupper(md5(strtoupper(md5(assemble($params))). $token));
}

/**
 * 组装签名参数
 *
 * @param $params
 * @return string|null
 */
function assemble($params)
{
    if (!is_array($params)) {
        return null;
    }
    
    ksort($params);
    
    $sign = '';
    foreach ($params as $key => $val)
    {
        if (is_null($val)) {
            continue;
        }
        
        if (is_array($val)) {
            $sign .= $key . assemble($val);
        } else {
            $sign .= $key . $val;
        }
    }
    
    return $sign;
}

/**
 * 系统参数
 *
 * @param $flag
 * @return array
 */
function system_params($flag)
{
    $params['flag'] = $flag;
    $params['type'] = 'json';
    $params['charset'] = 'utf-8';
    $params['ver'] = '1';
    $params['timestamp'] = time();
    
    return $params;
}

// erpapi标识
$flag = 'erpapi';

// token:config目录下certi.php中获取(没有则为空)
$token = 'your_interface_key';

//set params
$setParams = array(
    'app_id' => 'ecos.ome',
    'node_type' => 'ecos.ome',
    'certi_id' => '20215858518', //证书ID
    'from_node_id' => '20218888', //节点ID
    'node_id' => '1311861837', //店铺节点node_id
);

// 系统级参数
$systemParams = system_params($flag);
$systemParams = array_merge($systemParams, $setParams);

// 业务参数
$requestParams = array(
    'method' => 'wms.delivery.status_update',
    'delivery_bn' => 'D20250101001',
    'status' => 'DELIVERY',
    'logi_no' => 'SF1234567890',
    'logistics' => 'SF',
    'warehouse' => 'WH001',
    'weight' => '1.5',
    'operate_time' => '2025-01-01 10:00:00',
    'item' => json_encode(array(
        array(
            'product_bn' => 'SKU001',
            'num' => 2,
        )
    )),
);

// 组装请求参数
$params = array_merge($systemParams, $requestParams);

// 生成签名
$params['sign'] = gen_sign($params, $token);

// 发送请求
$url = 'http://your-domain.com/index.php/api';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo $response;

8. 注意事项

  1. 接口方向:本文档描述的是接收方接口,由第三方 WMS 平台推送数据到 OMS 系统
  2. 签名验证:所有接口请求必须包含有效的签名,签名算法见第 3 章
  3. 参数格式:复杂参数(如明细列表)需要 JSON 编码后传递
  4. 时间格式:时间参数统一使用 Y-m-d H:i:s 格式
  5. 重量单位:重量参数单位为千克,系统内部会转换为克(乘以 1000)
  6. 批次信息:支持批次管理的商品需要传递批次信息(批次号、生产日期、过期日期等)
  7. 唯一码:支持唯一码管理的商品需要传递序列号列表
  8. 状态映射:WMS 状态与 OMS 状态存在映射关系,详见各接口文档
  9. 幂等性:相同单号重复推送时,系统会进行幂等处理
  10. 部分入库/出库:支持部分入库(PARTIN)和部分出库(PARTIN)状态

9. 快速导航

10. 附录

10.1 状态枚举说明

发货单状态

  • ACCEPT - 已接单
  • PRINT - 已打印
  • PICK - 已拣货
  • CHECK - 已审核
  • PACKAGE - 已打包
  • DELIVERY - 已发货
  • CLOSE - 已关闭
  • FAILED - 失败
  • UPDATE - 更新

入库单/出库单状态

  • FINISH - 完成
  • PARTIN - 部分入库/出库

退货单状态

  • FINISH - 完成
  • PARTIN - 部分入库
  • CLOSE - 已关闭
  • FAILED - 失败
  • DENY - 拒绝

10.2 入库类型说明

  • PURCHASE - 采购入库
  • ALLCOATE - 调拨入库
  • DEFECTIVE - 残损入库
  • WAREHOUSE - 转仓入库
  • OTHER - 其他入库

10.3 出库类型说明

  • PURCHASE_RETURN - 采购退货
  • ALLCOATE - 调拨出库
  • DEFECTIVE - 残损出库
  • VOPSTOCKOUT - JIT出库
  • OTHER - 其他出库

10.4 库存类型说明

  • ZP - 良品
  • CC - 残次品