PHPackages                             chocoboxxf/yii2-cwms-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. chocoboxxf/yii2-cwms-sdk

ActiveYii2-extension[API Development](/categories/api)

chocoboxxf/yii2-cwms-sdk
========================

C-WMS API for Yii 2.0

229PHP

Since Jan 9Pushed 8y ago1 watchersCompare

[ Source](https://github.com/chocoboxxf/yii2-cwms-sdk)[ Packagist](https://packagist.org/packages/chocoboxxf/yii2-cwms-sdk)[ RSS](/packages/chocoboxxf-yii2-cwms-sdk/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

yii2-cwms-sdk
=============

[](#yii2-cwms-sdk)

基于Yii2实现的C-WMS API SDK（目前开发中）

环境条件
----

[](#环境条件)

- > = PHP 5.4
- > = Yii 2.0
- > = GuzzleHttp 6.0

安装
--

[](#安装)

添加下列代码在`composer.json`文件中并执行`composer update --no-dev`操作

```
{
    "require": {
       "chocoboxxf/yii2-cwms-sdk": "dev-master"
    }
}
```

设置方法
----

[](#设置方法)

```
// 全局使用
// 在config/main.php配置文件中定义component配置信息
'components' => [
  .....
  'cwms' => [
    'class' => 'chocoboxxf\Cwms\Cwms',
    'url' => 'http://cwms-api:xxxx/api', // C-WMS API入口地址
    'appKey' => '1234', // C-WMS App Key
    'secretKey' => '123456', // C-WMS Secret Key
    'customerId' => 'testUser', // C-WMS 客户号
  ]
  ....
]
// 代码中调用（调用货主同步接口示例）
$customer = Customer::newInstance([
    'country' => '中国',
    'province' => '江苏省',
    'city' => '南京市',
    'district' => '雨花台区',
    'contactor' => '张三',
    'customerCode' => 'DPB002',
    'customerName' => '张三',
]); // 创建货主同步接口请求对象
$result = Yii::$app->cwms->customerSync($customer); // 调用货主同步接口
....
```

```
// 局部调用
$cwms = Yii::createObject([
    'class' => 'chocoboxxf\Cwms\Cwms',
    'url' => 'http://cwms-api:xxxx/api', // C-WMS API入口地址
    'appKey' => '1234', // C-WMS App Key
    'secretKey' => '123456', // C-WMS Secret Key
    'customerId' => 'testUser', // C-WMS 客户号
]);
// 调用货主同步接口示例
$customer = Customer::newInstance([
    'country' => '中国',
    'province' => '江苏省',
    'city' => '南京市',
    'district' => '雨花台区',
    'contactor' => '张三',
    'customerCode' => 'DPB002',
    'customerName' => '张三',
]); // 创建货主同步接口请求对象
$result = Yii::$app->cwms->customerSync($customer); // 调用货主同步接口
....
```

使用示例
----

[](#使用示例)

货主同步接口

```
$customer = Customer::newInstance([
    'country' => '中国',
    'province' => '江苏省',
    'city' => '南京市',
    'district' => '雨花台区',
    'contactor' => '张三',
    'customerCode' => 'DPB002',
    'customerName' => '张三',
]); // 创建货主同步接口请求对象

$result = Yii::$app->cwms->customerSync($customer); // 调用货主同步接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "接收成功",
    //     "entryOrderId": "DPB002"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "货主已存在"
    // }
    ....
}
....
```

商品同步接口

```
$item = Item::newInstance([
    'itemCode' => 'DPB002001',
    'itemName' => '测试商品1',
    'barCode' => 'DPB002001',
    'itemType' => Item::ITEM_TYPE_ZC,
]); // 创建商品对象

$singleItem = SingleItem::newInstance([
    'actionType' => SingleItem::ACTION_TYPE_ADD,
    'warehouseCode' => 'LS001',
    'ownerCode' => 'DPB002',
    'item' => $item,
]); // 创建商品同步接口请求对象

$result = Yii::$app->cwms->singleItemSync($singleItem); // 调用商品同步接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "接收成功",
    //     "itemId": "ST1708080000004"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "同步商品出错"
    // }
    ....
}
....
```

批量商品同步接口

```
$item = [];

$item[] = Item::newInstance([
    'itemCode' => 'DPB002002',
    'itemName' => '测试商品2',
    'barCode' => 'DPB002002',
    'itemType' => Item::ITEM_TYPE_ZC,
]); // 创建商品对象1

$item[] = Item::newInstance([
    'itemCode' => 'DPB002003',
    'itemName' => '测试商品3',
    'barCode' => 'DPB002003',
    'itemType' => Item::ITEM_TYPE_ZC,
]); // 创建商品对象2

$items = Items::newInstance([
    'item' => $item,
]); // 创建商品列表对象

$multipleItem = MultipleItem::newInstance([
    'actionType' => MultipleItem::ACTION_TYPE_ADD,
    'warehouseCode' => 'LS001',
    'ownerCode' => 'DPB002',
    'items' => $items,
]); 创建批量商品同步接口请求对象

$result = Yii::$app->cwms->multipleItemSync($multipleItem); // 调用批量商品同步接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "成功"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "400",
    //     "message": "货主【DPB002】不存在"
    // }
    ....
}
....
```

入库单创建接口

```
$orderLine = [];

$orderLine[] = OrderLine::newInstance([
    'ownerCode' => 'DPB002',
    'itemCode' => 'DPB002001',
    'planQty' => 100,
]); // 创建入库商品对象1

$orderLine[] = OrderLine::newInstance([
    'ownerCode' => 'DPB002',
    'itemCode' => 'DPB002002',
    'planQty' => 200,
]); // 创建入库商品对象2

$orderLines = OrderLines::newInstance([
    'orderLine' => $orderLine,
]); // 创建入库商品列表对象

$entryOrder = EntryOrder::newInstance([
    'entryOrderCode' => 'DPB0020004',
    'ownerCode' => 'DPB002',
    'warehouseCode' => 'LS001',
]); // 创建入库单基本信息对象

$order = Order::newInstance([
    'entryOrder' => $entryOrder,
    'orderLines' => $orderLines,
]); // 创建入库单创建接口请求对象

$result = Yii::$app->cwms->entryOrderCreate($order); // 调用入库单创建接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "接收成功",
    //     "entryOrderId": "DPB0020004"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "订单已存在"
    // }
    ....
}
....
```

单据取消接口

```
$cancel = Cancel::newInstance([
    // 必填
    'warehouseCode' => 'LS001',
    'orderCode' => 'DPB0020001',
]); // 创建单据取消接口请求对象

$result = Yii::$app->cwms->orderCancel($cancel); // 调用单据取消接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "单据取消成功！"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "订单不存在"
    // }
    ....
}
....
```

库存查询接口

```
$criteria = [];

$criteria[] = Criteria::newInstance([
    'itemCode' => 'DPB002001',
    'ownerCode' => 'DPB002',
]); // 创建查询条件对象1

$criteria[] = Criteria::newInstance([
    'itemCode' => 'DPB002002',
    'ownerCode' => 'DPB002',
]); // 创建查询条件对象2

$criteriaList = CriteriaList::newInstance([
    'criteria' => $criteria,
]); // 创建查询条件组合对象

$query = Query::newInstance([
    'criteriaList' => $criteriaList,
]); // 创建库存查询接口请求对象

$result = Yii::$app->cwms->inventoryQuery($query); // 调用库存查询接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "接收成功",
    //     "items": [
    //         {
    //              "item": {
    //                  "warehouseCode": "LS001",
    //                  "itemCode": "DPB002001",
    //                  "itemId": "ST1708080000004",
    //                  "inventoryType": "ZP",
    //                  "quantity": "300",
    //                  "lockQuantity": "0",
    //                  "locationInfos": [
    //                      {
    //                          "locationInfo": {
    //                             "locationName": "A-01",
    //                              "quantity": "100",
    //                              "lockQuantity": "0"
    //                          }
    //                      },
    //                      {
    //                          "locationInfo": {
    //                             "locationName": "A-02",
    //                              "quantity": "200",
    //                              "lockQuantity": "0"
    //                          }
    //                      }
    //                  ]
    //              }
    //         },
    //         {
    //              "item": {
    //                  "warehouseCode": "LS001",
    //                  "itemCode": "DPB002002",
    //                  "itemId": "ST1708080000005",
    //                  "inventoryType": "ZP",
    //                  "quantity": "100",
    //                  "lockQuantity": "0",
    //                  "locationInfos": [
    //                      {
    //                          "locationInfo": {
    //                             "locationName": "A-01",
    //                              "quantity": "100",
    //                              "lockQuantity": "0"
    //                          }
    //                      }
    //                  ]
    //              }
    //         }
    //     ]
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "未匹配到对应货主:DPB002"
    // }
    ....
}
....
```

库存冻结接口

```
$orderLine = [];

$orderLine[] = OrderLine::newInstance([
    'itemCode' => 'DPB002001',
    'normalFlag' => OrderLine::NORMAL_FLAG_NORMAL,
    'frozenQuantity' => 2,
]); // 创建冻结商品对象1

$orderLine[] = OrderLine::newInstance([
    'itemCode' => 'DPB002002',
    'normalFlag' => OrderLine::NORMAL_FLAG_NORMAL,
    'frozenQuantity' => 2,
]); // 创建冻结商品对象2

$orderLines = OrderLines::newInstance([
    'orderLine' => $orderLine,
]); // 创建冻结商品列表对象

$freeze = Freeze::newInstance([
    'freezeOrderNum' => 'DPB00200001',
    'ownerCode' => 'DPB002',
    'warehouseCode' => 'LS001',
    'orderLines' => $orderLines,
]); // 创建库存冻结接口请求对象

$result = Yii::$app->cwms->inventoryFreeze($freeze); // 调用库存冻结接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "400",
    //     "message": "接收成功"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "客户冻结单号已存在"
    // }
    ....
}
....
```

库存解冻接口

```
$orderLine = [];

$orderLine[] = OrderLine::newInstance([
    'itemCode' => 'DPB002001',
    'normalFlag' => OrderLine::NORMAL_FLAG_NORMAL,
    'frozenQuantity' => 1,
]); // 创建解冻商品对象1

$orderLine[] = OrderLine::newInstance([
    'itemCode' => 'DPB002002',
    'normalFlag' => OrderLine::NORMAL_FLAG_NORMAL,
    'frozenQuantity' => 1,
]); // 创建解冻商品对象2

$orderLines = OrderLines::newInstance([
    'orderLine' => $orderLine,
]); // 创建解冻商品列表对象

$unFreeze = UnFreeze::newInstance([
    'unFreezeOrderNum' => 'DPB00200001',
    'ownerCode' => 'DPB002',
    'warehouseCode' => 'LS001',
    'orderLines' => $orderLines,
]); // 创建库存解冻接口请求对象

$result = Yii::$app->cwms->inventoryUnFreeze($unFreeze); // 调用库存解冻接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "400",
    //     "message": "接收成功"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "客户解冻单号已存在"
    // }
    ....
}
....
```

发货单创建接口

```
$orderLine = [];

$orderLine[] = OrderLine::newInstance([
    'ownerCode' => 'DPB002',
    'itemCode' => 'DPB002001',
    'planQty' => 10,
    'actualPrice' => 11.2,
]); // 创建发货商品对象1

$orderLine[] = OrderLine::newInstance([
    'ownerCode' => 'DPB002',
    'itemCode' => 'DPB002002',
    'planQty' => 20,
    'actualPrice' => 12.2,
]); // 创建发货商品对象2

$orderLines = OrderLines::newInstance([
    'orderLine' => $orderLine,
]); // 创建发货商品列表对象

$senderInfo = SenderInfo::newInstance([
    'name' => '发件人',
    'mobile' => '13000000000',
    'province' => '江苏省',
    'city' => '南京市',
    'detailAddress' => 'y路',
]); // 创建发件人信息对象

$receiverInfo = ReceiverInfo::newInstance([
    'name' => '收件人',
    'mobile' => '13000000000',
    'province' => '江苏省',
    'city' => '南京市',
    'detailAddress' => 'y路',
]); // 创建收件人信息对象

$deliverOrder = DeliveryOrder::newInstance([
    'deliveryOrderCode' => 'DPB0020001',
    'orderType' => DeliveryOrder::ORDER_TYPE_JYCK,
    'warehouseCode' => 'LS001',
    'sourcePlatformCode' => DeliveryOrder::SOURCE_PLATFORM_CODE_OTHER,
    'createTime' => '2017-08-08 00:11:22',
    'placeOrderTime' => '2017-08-08 00:11:22',
    'operateTime' => '2017-08-08 00:11:22',
    'shopNick' => '店铺1',
    'logisticsCode' => DeliveryOrder::LOGISTICS_CODE_SF,
    'senderInfo' => $senderInfo,
    'receiverInfo' => $receiverInfo,
]); // 创建发货单基本信息对象

$order = Order::newInstance([
    'deliveryOrder' => $deliverOrder,
    'orderLines' => $orderLines,
]); // 创建发货单创建接口请求对象

$result = Yii::$app->cwms->deliveryOrderCreate($order); // 调用发货单创建接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "接收成功",
    //     "deliveryOrderId": "DPB0020004"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "承运商不存在"
    // }
    ....
}
....
```

出库单创建接口

```
$orderLine = [];

$orderLine[] = OrderLine::newInstance([
    'ownerCode' => 'DPB002',
    'itemCode' => 'DPB002001',
    'planQty' => 10,
]); // 创建出库商品对象1

$orderLines = OrderLines::newInstance([
    'orderLine' => $orderLine,
]); // 创建出库商品列表对象

$pickerInfo = PickerInfo::newInstance([
    'company' => '收件公司',
    'name' => '收件人',
    'tel' => '55555555',
    'mobile' => '13000000000',
    'id' => '310101198808080000',
    'carNo' => '沪A88888',
]); // 创建提货人信息对象

$senderInfo = SenderInfo::newInstance([
    'name' => '发件人',
    'mobile' => '13000000000',
    'province' => '江苏省',
    'city' => '南京市',
    'detailAddress' => 'y路',
    'company' => '发件公司',
    'zipCode' => '200000',
    'tel' => '55555555',
    'email' => 'sender@test.com',
    'countryCode' => '中国',
    'area' => '雨花台区',
    'town' => 'x镇',
]); // 创建发件人信息对象

$receiverInfo = ReceiverInfo::newInstance([
    'name' => '收件人',
    'mobile' => '13000000000',
    'province' => '江苏省',
    'city' => '南京市',
    'detailAddress' => 'y路',
]); // 创建收件人信息对象

$deliverOrder = DeliveryOrder::newInstance([
    'deliveryOrderCode' => 'DPB0020001',
    'orderType' => DeliveryOrder::ORDER_TYPE_QTCK,
    'warehouseCode' => 'LS001',
    'createTime' => '2017-08-08 00:11:22',
    'receiverInfo' => $receiverInfo,
    'pickerInfo' => $pickerInfo,
    'senderInfo' => $senderInfo,
]); // 创建出库单基本信息对象

$order = Order::newInstance([
    'deliveryOrder' => $deliverOrder,
    'orderLines' => $orderLines,
]); // 创建出库单创建接口请求对象

$result = Yii::$app->cwms->stockoutCreate($order); // 调用出库单创建接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "message": "接收成功",
    //     "deliveryOrderId": "DPB0020004"
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "货主不存在"
    // }
    ....
}
....
```

库存监控接口

```
$inventoryMonitoring = [];

$inventoryMonitoring[] = InventoryMonitoring::newInstance([
    'warehouseName' => 'LS001',
    'customerCode' => 'DPB002',
    'itemCode' => 'DPB002001',
]); // 创建查询条件对象1

$inventoryMonitoring[] = InventoryMonitoring::newInstance([
    'warehouseName' => 'LS001',
    'customerCode' => 'DPB002',
    'itemCode' => 'DPB002002',
]); // 创建查询条件对象2

$inventoryMonitoringList = InventoryMonitoringList::newInstance([
    'inventoryMonitoring' => $inventoryMonitoring,
]); // 创建查询条件组合对象

$query = Query::newInstance([
    'inventoryMonitoringList' => $inventoryMonitoringList,
]); // 创建库存监控接口请求对象

$result = Yii::$app->cwms->inventoryMonitor($query); // 调用库存监控接口

if ($result['flag'] === 'success') {
    // 调用成功
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "success",
    //     "code": "200",
    //     "items": {
    //         "item": [
    //             {
    //                 "warehouseName": "LS001",
    //                 "customerName": "张三",
    //                 "itemCode": "DPB002001",
    //                 "itemName": "测试商品1",
    //                 "barcodeNum": "DPB002001",
    //                 "normalFlag": "ZP",
    //                 "lockQuantity": "0",
    //                 "allQuantity": "800",
    //                 "diffQuantity": "800"
    //             },
    //             {
    //                 "warehouseName": "LS001",
    //                 "customerName": "张三",
    //                 "itemCode": "DPB002002",
    //                 "itemName": "测试商品4",
    //                 "barcodeNum": "DPB002002",
    //                 "normalFlag": "ZP",
    //                 "lockQuantity": "0",
    //                 "allQuantity": "0",
    //                 "diffQuantity": "0"
    //             }
    //         ]
    //     }
    // }
    ....
} else {
    // 调用失败
    // 返回数据格式（原格式XML，转义成json）
    // {
    //     "flag": "failure",
    //     "code": "400",
    //     "message": "货主编码不能为空"
    // }
    ....
}
....
```

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/c67b6da43906c24ec36791cf57fb81b67b517df7c5f3bdecb0674ccf623df770?d=identicon)[chocoboxxf](/maintainers/chocoboxxf)

---

Top Contributors

[![chocoboxxf](https://avatars.githubusercontent.com/u/3401509?v=4)](https://github.com/chocoboxxf "chocoboxxf (25 commits)")

### Embed Badge

![Health badge](/badges/chocoboxxf-yii2-cwms-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/chocoboxxf-yii2-cwms-sdk/health.svg)](https://phpackages.com/packages/chocoboxxf-yii2-cwms-sdk)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[knplabs/github-api

GitHub API v3 client

2.2k15.8M187](/packages/knplabs-github-api)[facebook/php-business-sdk

PHP SDK for Facebook Business

90121.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

73813.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

263103.1M454](/packages/google-gax)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
