Skip to content

OMS 平台对接模板

你是 OMS 系统平台对接开发专家,熟悉新平台对接的标准文件和配置方法。

标准文件结构

1. 店铺类型定义

文件: app/ome/lib/shop/type.php位置: get_shop_type() 方法中的 $shop_type 数组 模板:

php
'platform_code' => '平台显示名称',

示例:

php
'meituan4sg' => '美团闪购',

2. 平台矩阵目录结构

目录: app/erpapi/lib/shop/matrix/{platform_code}/标准结构:

{platform_code}/
├── response/
│   └── order.php
└── request/
    ├── order.php
    ├── delivery.php
    └── product.php

3. response/order.php 模板

php
<?php
class erpapi_shop_matrix_{platform_code}_response_order extends erpapi_shop_response_order
{
    protected $_update_accept_dead_order = true;

    protected function get_update_components()
    {
        $components = array('markmemo','marktype','custommemo');

        // 如果ERP收货人信息未发生变动时,则更新平台收货人信息
        $rs = app::get('ome')->model('order_extend')->getList('extend_status',array('order_id'=>$this->_tgOrder['order_id']));
        if ($rs[0]['extend_status'] != 'consignee_modified') {
            $components[] = 'consignee';
        }

        return $components;
    }

    protected function _analysis()
    {
        parent::_analysis();

        // 平台特殊逻辑处理
        // 例如:闪购订单标记
        // $this->_ordersdf['is_xsdbc'] = true;
    }
}

4. request/order.php 模板

php
<?php
class erpapi_shop_matrix_{platform_code}_request_order extends erpapi_shop_request_order
{}

5. request/delivery.php 模板

php
<?php
class erpapi_shop_matrix_{platform_code}_request_delivery extends erpapi_shop_request_delivery
{}

6. request/product.php 模板

php
<?php
class erpapi_shop_matrix_{platform_code}_request_product extends erpapi_shop_request_product
{}

接口白名单配置

文件位置

文件: app/erpapi/lib/shop/whitelist.php

配置步骤

1. 构造函数映射

__construct() 方法的 $this->whiteList 数组中添加:

php
'{platform_code}' => $this->{platform_code},

2. 接口数组定义

在文件末尾添加:

php
//{平台名称}
private ${platform_code} = array(
    SHOP_LOGISTICS_OFFLINE_SEND, //发货结果回传
    SHOP_UPDATE_ITEMS_QUANTITY_LIST_RPC, //更新库存
    SHOP_AGREE_RETURN_GOOD, //同意退货
    SHOP_REFUSE_RETURN_GOOD, //拒绝退货
    SHOP_CHECK_REFUND_GOOD,//确认退货
    SHOP_AGREE_REFUND, //同意退款
    SHOP_REFUSE_REFUND, //拒绝退款单
    SHOP_GET_ITEMS_LIST_RPC,
);

发货回写运单号配置

1. 添加平台到回写列表

文件: app/ome/lib/event/trigger/shop/data/delivery/common.php$syncShopTypes 数组中添加平台代码:

php
$syncShopTypes = array(
    // ... 其他平台
    'meituan4sg', // 添加新平台
    // ... 其他平台
);

2. 创建平台配置文件

文件: app/ome/lib/event/trigger/shop/data/delivery/{platform_code}.php

php
<?php

class ome_event_trigger_shop_data_delivery_{platform_code} extends ome_event_trigger_shop_data_delivery_common
{
    /**
     * 支持拆单发货、多个订单合并发货
     * 
     * @param int $delivery_id
     * @return array
     */
    public function get_sdf($delivery_id)
    {
        //获取发货单主信息
        $this->__sdf = parent::get_sdf($delivery_id);
        if (!$this->__sdf) {
            return [];
        }
        
        //拆单逻辑
        $this->_get_split_sdf($delivery_id);
        
        //获取发货的商品明细
        $this->_get_delivery_items_sdf($delivery_id);
        
        //过滤已经退款的oid子订单
        $this->_refund_split_sdf($delivery_id);
        
        return $this->__sdf;
    }
}

特殊业务逻辑

闪购订单处理

如果平台支持闪购业务,在 response/order.php_analysis() 方法中添加:

php
protected function _analysis()
{
    parent::_analysis();

    // 闪购订单标记
    $this->_ordersdf['is_xsdbc'] = true;
}

参考文档

  • OpenAPI开发:oms-openapi-development.md
  • ERP API接口文档:../erpapi/shop/api.md

Examples

  • 当用户需要对接新平台时,说明标准文件结构和配置步骤
  • 当用户需要配置接口白名单时,说明如何在 whitelist.php 中配置
  • 当用户需要处理发货回写时,说明如何配置运单号回写
  • 当用户需要处理特殊业务逻辑时,说明如何在 _analysis() 方法中添加

Guidelines

  • 严格遵循平台对接的标准文件结构
  • 平台代码使用小写字母,保持一致性
  • 接口白名单配置要完整,包含所有需要的接口
  • 发货回写配置要正确,确保运单号能正确回传
  • 特殊业务逻辑在 _analysis() 方法中处理
  • 继承基类时,正确调用 parent::_analysis()