**生產平臺 Matrix** 是生產者定義發行 Token 的平臺,該平臺提供商品及其 Token 定義、信息查詢、物流信息同步等服務。具體接口如下:
[TOC]
## 演示環境
演示環境:https://matrixdemo.stringon.com
接口地址:https://matrixdemo.stringon.com/api/……
請在演示環境注冊測試賬號,登錄后通過訪問:賬戶 > 安全設置,獲取 apiKey 和 apiSecret。
> **注**:以下接口可使用統一的api_key + api_secret簽名方式訪問,如:
>* api_key: 1c2966df9ea7480ebb29dc863404a7af
>* api_secret: 780221dac2634d7b9a3aba1ebe97f0b4
**假設傳送以下參數:**
api_key: 1c2966df9ea7480ebb29dc863404a7af
spu\_ids: 13,14
origins: 0t5e209wv04tmymw
nonce_str: bFC253c29116D8f3 // nonce_str: 是一個隨機數,長度在8~32位之間,主要是為保證簽名不可預測
> **簽名過程如下**
> 1. 參數按字典序排列,拼成URL鍵值對的格式(key1=value1&key2=value2… ),參數的值為空不參與簽名,拼接成字符串stringA;
stringA = "api_key=1c2966df9ea7480ebb29dc863404a7af&nonce_str=bFC253c29116D8f3&origins=0t5e209wv04tmymw&spu_ids=13,14"
>**(請注意:如果參數值中存在特殊字符,如:空格、=、/ 等,不需做URL Encoder)**
> 2. 在stringA最后拼接上apiSecret得到stringSignTemp字符串,并對stringSignTemp進行MD5運算,再將得到的字符串所有字符轉換為大寫,得到signature值
stringSignTemp = stringA + api_secret;
最終:stringSignTemp = "api_key=1c2966df9ea7480ebb29dc863404a7af&nonce_str=bFC253c29116D8f3&origins=0t5e209wv04tmymw&spu_ids=13,14780221dac2634d7b9a3aba1ebe97f0b4"
> 3. signature = MD5(stringSignTemp).toUpperCase();
經MD5運算,再轉大寫,將得到:signature=316AE3E43E6BB3D6196F298CE99B5195
> 4. 最終得到最終發送的數據:
>* **GET請求參數:**
api_key=1c2966df9ea7480ebb29dc863404a7af&spu\_ids=13,14&origins=0t5e209wv04tmymw&nonce_str=bFC253c29116D8f3&signature=316AE3E43E6BB3D6196F298CE99B5195
>* **POST請求:**
**Content-Type: application/x-www-form-urlencoded**
api_key=1c2966df9ea7480ebb29dc863404a7af
spu\_ids=13,14
origins=0t5e209wv04tmymw
nonce_str=bFC253c29116D8f3
signature=316AE3E43E6BB3D6196F298CE99B5195
> **Content-Type: application/json**
{
"api_key": "1c2966df9ea7480ebb29dc863404a7af",
"spu_ids": "13,14",
"origins": "0t5e209wv04tmymw",
"nonce_str": "bFC253c29116D8f3",
"signature": "316AE3E43E6BB3D6196F298CE99B5195"
}
## 1. 商品接口
### 1.1 獲取商品類目
接口名稱:獲取商品類目
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:獲取所有商品類目信息
~~~[api]
get:/api/v2/prod/category/list
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"id": 2,
"parent_id": 0,
"cat_name": "男人",
"sort": 20000,
"status": 1,
"created_at": "2019-04-11T18:55:43.000Z",
"updated_at": "2019-04-11T18:55:43.000Z",
"children": [],
"root": true
},
{
"id": 3,
"parent_id": 0,
"cat_name": "食品",
"sort": 30000,
"status": 1,
"created_at": "2019-04-11T18:55:43.000Z",
"updated_at": "2019-04-11T18:55:43.000Z",
"children": [],
"root": true
},
...
]
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;500: 系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | array(object) | 返回數據 |
| id | integer | 分類ID |
| cat_name | string | 分類名稱 |
| parent_id | integer | 父分類ID |
| sort | integer | 顯示順序 |
| status | integer | 狀態:1=可用; 2=停用 |
| created_at | integer | 創建時間 |
| updated_at | integer | 更新時間 |
| children | array | 子分類數組 |
| root | boolean | 是否為根結點 |
### 1.2 獲取商品 ID
接口名稱: 獲取 Token 的商品 ID(spu_id、sku_id)
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:根據 Token origin,獲取商品 spu_id 和 sku_id,多個 Token origin 之間用逗號分隔
~~~[api]
post:/api/v2/prod/spu/find
origins#原始Token標識,多個Token之間逗號分隔,如:0t5e209wv04tmymw,ap4ac9rae3tedvh0
producer_ids#按生產商ID查詢,多個生產商ID之間用逗號分隔,如:190417552262,190417969915
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"origin": "0t5e209wv04tmymw", // 原始Token標識
"sku_id": 54, // Matrix平臺SKU ID
"spu_id": 15 // Matrix平臺SPU ID
},
{
"origin": "ap4ac9rae3tedvh0",
"sku_id": 140,
"spu_id": 25
}
]
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功,600: 參數不正確;500: 系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | array(object) | 返回數據 |
| origin | string | 原始Token標識 |
| sku_id | integer | Matrix平臺SKU ID |
| spu_id | integer | Matrix平臺SPU ID |
### 1.3 獲取商品 SKU 信息
接口名稱: 獲取商品 SKU 信息
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:根據原始Token標識,獲取商品 SKU 信息
~~~[api]
get:/api/v2/prod/sku/get
*origin#Token原始標識
<<<
success
{
"code": 0,
"msg": "成功"
"data": {
"spu_id": 25,
"uid": 190420811977,
"caption": "女子運動鞋 Nike Air Max 720",
"unit_name": "雙",
"subcaption": "Nike Air Max 720 女子運動鞋搭載 Nike 革命性的大型 Air 氣墊,為足下注入許多空氣,帶來非凡舒適腳感。Air Max 的大體積設計讓你耳目一新?當然是大體積的好。",
"shortcaption": null,
"type": 1,
"belongs": [
1
],
"keywords": [
"Nike Air Max 720 女子運動鞋搭載 Nike 革命性的大型 Air 氣墊",
"為足下注入許多空氣",
"帶來非凡舒適腳感。Air Max 的大體積設計讓你耳目一新?當然是大體積的好。"
],
"specs": [
{
"key": "1555904570707",
"name": "顏色",
"values": [
{
"key": "1555904570718",
"name": "金屬銀/深藏青",
"image": {
"res_key": "http://img.stringon.com/33b033dfcc8e4effa78fcf0ead8716cd"
}
},
{
"key": "1555905697622",
"name": "白金色/氧氣紫/太空紫/氧氣紫",
"image": {
"res_key": "http://img.stringon.com/83c767fbb4f14f359e8e483f6a9896b3"
}
},
{
"key": "1555905824401",
"name": "白色/激光紫紅/上升粉",
"image": {
"res_key": "http://img.stringon.com/c7134860c9df4a869f3a92559a00f78b"
}
}
]
},
{
"key": "1555905923663",
"name": "尺碼",
"values": [
{
"key": "1555905923669",
"name": "35.5"
},
{
"key": "1555906332700",
"name": "36"
},
{
"key": "1555906335480",
"name": "36.5"
},
{
"key": "1555906349430",
"name": "37.5"
},
{
"key": "1555906353155",
"name": "38"
},
{
"key": "1555906361917",
"name": "38.5"
},
{
"key": "1555906367509",
"name": "39"
},
{
"key": "1555906374495",
"name": "40.5"
},
{
"key": "1555906378208",
"name": "41"
},
{
"key": "1555906380537",
"name": "42"
}
]
}
],
"params": [],
"slideshow": [
{
"res_key": "http://img.stringon.com/e3f1ad6569a7407ea4b14bb3c59b433d"
},
{
"res_key": "http://img.stringon.com/f54e3dd9fdbb4ccfb740f9f05f76b39d"
},
{
"res_key": "http://img.stringon.com/ee6de0839a6942cba7a0672e0fcef8d3"
}
],
"intro_imgs": [
{
"res_key": "http://img.stringon.com/40330b6c3bfb4294b1b57ad3546ecc3b"
},
{
"res_key": "http://img.stringon.com/4dac8935730e411898621ef8ee1c4e18"
},
{
"res_key": "http://img.stringon.com/3cfc2c09dc3649849a4bcc6846acc8cb"
}
],
"brand_id": null,
"group_id": null,
"delivery_type": 1,
"delivery_start": 3,
"delivery_end": null,
"status": 1,
"created_at": "2019-04-22T04:13:23.000Z",
"updated_at": "2019-04-22T04:16:03.000Z",
"sku_list": [
{
"sku_id": 140,
"spu_id": 25,
"uid": 190420811977,
"specs": {
"image": {
"res_key": "http://img.stringon.com/c7134860c9df4a869f3a92559a00f78b",
},
"尺碼": "37.5",
"顏色": "白色/激光紫紅/上升粉"
},
"spe_code": null,
"bar_code": null,
"cost": "300.00",
"status": 0,
"created_at": "2019-04-22T04:13:23.000Z",
"updated_at": "2019-04-22T04:13:23.000Z"
}
]
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功,600: 參數不正確; 602: origin不存在;500: 系統內部錯誤 |
| message | string | 錯誤原因 |
| data | array | sku信息 |
| spu_id | integer | supID |
| uid | integer | 生產商id |
| caption | string | 商品名稱 |
| unit_name | string | 單位 |
| subcaption | string | 商品副標題 |
| shortcaption | string | 商品短標題 |
| type | string | 商品類型 0: 實物商品, 1: 虛擬商品 |
| belongs | array(string) | 所屬分類數組 |
| keywords | array(string) | 搜索關鍵字數組 |
| specs | array(object ) | 規格項數組 |
| params | array(object) | 參數數組 |
| slideshow | array(object) | 輪播圖url數組 |
| intro_imgs | array(string) | 商品詳情圖url數組 |
| brand_id | integer | 品牌商id |
| group_id | integer | 分組id |
| delivery_type | integer | 發貨類型:1=提貨申請后x天發貨; 2=固定時段 |
| delivery_start | date | 發貨起始時間 |
| delivery_end | date | 發貨結止時間 |
| status | integer | 狀態:0=維護中; 1=待發布; 2=已發布; |
| created_at | date | 創建時間 |
| updated_at | date | 修改時間 |
| sku_list | array(object) | sku信息 |
| sku_id | integer | skuID |
| spu_id | integer | supID |
| uid | integer | 生產商id |
| specs | array(object ) | 規格項數組 |
| spe_code | string | 規格編碼 |
| bar_code | string | 條碼 |
| cost | string | 成本 |
| status | integer | 狀態:0=未發布; 1=已發布; |
| created_at | date | 創建時間 |
| updated_at | date | 修改時間 |
### 1.4 獲取商品 SPU 信息
接口名稱:獲取商品 SPU 信息
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:獲取指定商品 spu_ids 的完整商品信息,內容包括:商品信息、全部 SKU 信息
參數:spu_ids、origins 至少一項不為空
~~~[api]
post:/api/v2/prod/sync/spu
spu_ids#一個或多個商品SPU ID,多個之間用逗號分隔
origins#一個或多個合約名稱,多個之間用逗號分隔
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"spu_id": 64,
"caption": "鋼筆",
"unit_name": "支",
"subcaption": "描述描述",
"shortcaption": null,
"type": 1,
"belongs": [
21
],
"keywords": [
"鋼筆關鍵字"
],
"specs": [
{
"key": "1557210984839",
"name": "規格1",
"values": [
{
"key": "1557210984854",
"name": "規格1111",
"image": {
"res_key": "http://img.stringon.com/00cec074eef64a25b1f289b8ec4ef2a3",
}
},
{
"key": "1557211054760",
"name": "規格222",
"image": {
"res_key": "http://img.stringon.com/638c9045c89a45eea8244e0c2cba3697",
}
}
]
}
],
"params": [],
"slideshow": [
{
"res_key": "http://img.stringon.com/00cec074eef64a25b1f289b8ec4ef2a3",
},
{
"res_key": "http://img.stringon.com/3529218792ec4c6e9ed9da5737eb18dd",
}
],
"intro_imgs": [
{
"res_key": "http://img.stringon.com/587973ee57874669bac38b9ac0163098",
},
{
"res_key": "http://img.stringon.com/638c9045c89a45eea8244e0c2cba3697",
}
],
"brand_id": null,
"group_id": 18,
"delivery_type": 2,
"delivery_start": 1557215077,
"delivery_end": 1557215077,
"status": 2,
"created_at": "2019-05-07T06:38:07.000Z",
"updated_at": "2019-05-07T07:54:51.000Z",
"sku_list": [
{
"sku_id": 279,
"spu_id": 64,
"specs": {
"image": {
"res_key": "http://img.stringon.com/00cec074eef64a25b1f289b8ec4ef2a3",
},
"規格1": "規格1111"
},
"spe_code": "22",
"bar_code": "11",
"cost": "11.00",
"status": 1,
"created_at": "2019-05-07T06:38:07.000Z",
"updated_at": "2019-05-07T06:44:01.000Z",
"contract_list": [
{
"contract_id": 874,
"origin": "39079a1p8t8gt0ky",
"sku_id": 279
}
]
},
{
"sku_id": 280,
"spu_id": 64,
"specs": {
"image": {
"res_key": "http://img.stringon.com/638c9045c89a45eea8244e0c2cba3697",
},
"規格1": "規格222"
},
"spe_code": "22",
"bar_code": "11",
"cost": "11.00",
"status": 1,
"created_at": "2019-05-07T06:38:07.000Z",
"updated_at": "2019-05-07T06:44:01.000Z",
"contract_list": [
{
"contract_id": 875,
"origin": "rp78an19238me8eg",
"sku_id": 280
}
]
}
]
}
]
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功,600: 參數不正確;500: 系統內部錯誤 |
| message | string | 錯誤原因 |
| data | array | 返回數據 |
| spu_id | integer | spuid |
| caption | string | 商品名稱 |
| subcaption | string | 商品副標題 |
| shortcaption| string | 商品短標題 |
| type | string | 商品類型 0: 實物商品, 1: 虛擬商品 |
| belongs | array(string) | 所屬分類數組 |
| keywords | array(string) | 搜索關鍵字數組 |
| specs | array(object ) | 規格項數組 |
| params | array(object) | 參數數組 |
| slideshow | array(string) | 輪播圖url數組 |
| intro_imgs | array(string) | 商品詳情圖url數組 |
| brand_id | string | 品牌商id |
| status | integer | 0:維護中, 1:待發布, 2:已發布 |
| created_at | date | 創建時間 |
| updated_at | date | 修改時間 |
| sku_list | array(object) | sku信息 |
| sku_id | integer | sku_id |
| spu_id | integer | spu_id |
| specs | array(object ) | 規格項數組 |
| spe_code | string | 規格編碼 |
| bar_code | string | 條碼 |
| cost | string | 成本 |
| status | integer | 0=未流通; 1=已流通(處理鎖定狀態) |
| created_at | date | 創建時間 |
| updated_at | date | 修改時間 |
| batch_list | array(object) | 批次信息 |
| symbol | string | token標識 |
| sku_id | integer | sku_id |
| spu_id | integer | spu_id |
| uid | integer | 生產商id |
| publish_id | integer | 流水號 |
| total_supply | integer | 發行量 |
| status | integer | 1=待發行; 2=已發行; 3=已作廢; 4=已流通 |
| created_at | date | 創建時間 |
| updated_at | date | 修改時間 |
| transfer_to_add | string | 生產商token回收地址 |
### 1.5 獲取已變更商品列表
接口名稱:獲取已變更商品列表
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:根據指定同步時間,獲取該時間之后的變更商品列表
~~~[api]
post:/api/v2/prod/sync/list
*last_time#上次同步時間,格式為:1552361703000,單位:毫秒
int:producer_id#可空,生產商ID,查詢指定生產商的商品變更信息
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
"spu_id":8
]
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;600: 參數不正確;500: 系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | object | 返回數據 |
| spu_id | integer | 商品id |
### 1.6 查詢簡單商品SKU信息
接口名稱:簡單商品SKU信息
請求數據類型:X-WWW-FORM-URLENCODED 或 JSON
響應類型:JSON
狀態:有效
接口描述:根據憑證名稱(origin)和sku id查詢簡單商品信息
請求參數說明:
origins和sku_ids:至少一項不為空;
**請求類型為:application/x-www-form-urlencoded**
origins[0]=hfh1ukjr1hxmxdfg
origins[1]=hfh1ukjr1hxmxdfg
sku_ids[0]=392
sku_ids[1]=393
**請求類型為:application/json**
{
"origins":["hfh1ukjr1hxmxdfg","gp0ymumbmmq42fty"],
"sku_ids": [392,393]
}
~~~[api]
post:/api/v2/prod/sku/find
array:origins#憑證名稱,數組類型,如:"origins":["hfh1ukjr1hxmxdfg","gp0ymumbmmq42fty"]
array:sku_ids#商品SKU ID,數組類型,如:"sku_ids": [392,393]
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"sku_id": 392,
"specs": {
"image": {
"res_key": "http://img.stringon.com/587973ee57874669bac38b9ac0163098"
},
"規格名": "規格值1"
},
"spu_id": 82,
"caption": "海淘商品",
"unit_name": "個",
"origins": [
"hfh1ukjr1hxmxdfg"
]
},
{
"sku_id": 393,
"specs": {
"image": {
"res_key": "http://img.stringon.com/76c194c37f48472d8ef1d566e34d055f"
},
"規格名": "規格值2"
},
"spu_id": 82,
"caption": "海淘商品",
"unit_name": "個",
"origins": [
"gp0ymumbmmq42fty"
]
}
]
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;600: 參數不正確;500: 系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | object | 返回數據 |
| spu_id | integer | 商品id |
## 2. 提貨接口
### 2.1 獲取提貨商家回收地址
接口名稱: 獲取提貨商家回收地址
請求數據類型:X-WWW-FORM-URLENCODED
響應類型: JSON
狀態:有效
接口描述: 獲取提貨商家回收地址
~~~[api]
post:/api/v2/pickup/fetchAddr
*origin#token原始標識
<<<
success
{
code:0
msg: '成功'
data:{
address: 'OX0DGGSDFFDG'
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;2102: 提貨商品不存在;500: 系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | object| 返回數據 |
| address | string | 地址 |
### 2.2 提貨申請
接口名稱:提貨申請
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:客戶提貨申請
~~~[api]
post:/api/v2/pickup/apply
*txid#交易id
*out_pickup_no#商城提貨單號
int:amount#提貨數量
*consignee#收貨人
*cellphone#收貨人手機號
area#地區
*address#收貨地址
zipcode#郵編
*notify_url#處理結果,通知商城
<<<
success
{
"code": 0,
"msg": "提貨申請成功",
"data": {
pickup_no:生產平臺提貨單號,
out_pickup_no:商城提貨單號,
txid: 交易ID,
status: 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城待發貨成功;5=通知商城待發貨失敗;6=已發貨(廠商受理成功);7=已發貨通知商城成功;8=已發貨通知商城失敗,
amount: 提貨數量(從鏈上查詢得到)
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;405: 無權訪問 ;1021: 用戶被禁用;2700: 提貨單Txid已存在;2600:txid校驗失敗;2601:提貨數量與鏈上不一致;2701:未查到對應的商品;2702:發行地址與鏈上地址不一致 ;2000:提貨失敗|
| msg| string | 錯誤原因 |
| data | object | 返回數據 |
| pickup_no | string | 生產平臺提貨單號 |
| out_pickup_no | string | 商城提貨單號 |
| txid | string | 交易ID |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城待發貨成功;5=通知商城待發貨失敗;6=已發貨(廠商受理成功);7=已發貨通知商城成功;8=已發貨通知商城失敗 |
| amount | integer | 提貨數量(從鏈上查詢得到) |
### 2.3 發貨通知
接口名稱:發貨通知
請求數據類型:APPLICATION/JSON
響應類型:JSON
狀態:有效
接口描述:由生產商ERP系統調用,真實發貨后,通知生產平臺提貨單狀態變化
**請求參數**
~~~
{
"pickup_no": "11001904028341836781", // 生產平臺提貨單唯一編號
"out_delivery_no": "1001201112", // ERP發貨單唯一編號
"receipt_list": [ // 生產商發貨信息及Token信息
{
"txid": "0C697F48392907A015959A00DB1CC6AF", // 交易ID
"waybill_no": "01203131231231", // 運單號
"serial_no": "01203131231231", // 商品編碼,可空
"logistic_no": "01203131231231", // 物流商編號,可空
"logistic_name": "順風" // 物流商名稱,可空
}
]
}
~~~
~~~[api]
post:/api/v2/pickup/delivered
headers:[
{"egg_matrix_api_key":"aa"},
{"egg_matrix_sign":"bb"},
{"ts":4323435}
]
body:{
"pickup_no": "11001904028341836781",
"out_delivery_no": "1001201112",
"receipt_list": [
{
"txid": "0C697F48392907A015959A00DB1CC6AF",
"waybill_no": "01203131231231",
"serial_no": "01203131231231",
"logistic_no": "01203131231231",
"logistic_name": "順風"
}
]
}
<<<
success
{
"code": 0,
"msg": "發貨通知成功",
"data": {
"pickup_no": "11001904195198261193", // 生產平臺提貨單唯一編號
"out_delivery_no": "1001201112", // ERP發貨單唯一編號
"status": 6, // 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城待發貨成功;5=通知商城待發貨失敗;6=已發貨(廠商受理成功);7=已發貨通知商城成功;8=已發貨通知商城失敗
"amount": 1 // 發貨數量(從鏈上查詢得到)
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;405: 無權訪問 ;1021: 用戶被禁用;2100: 提貨單不存在;2600:txid校驗失敗;2706:發貨Txid已存在;2701:未查到對應的商品;2702:發行地址與鏈上地址不一致 ;2703:提貨數量與發貨數量不一致;2704:提貨生產商與發貨商不一致;2705:提貨憑證轉入地址與客戶地址不一致;2300:提貨單狀態有誤;2010:發貨通知保存失敗 |
| msg| string | 信息 |
| data | object | 返回結果 |
pickup_no | string | 生產平臺提貨單號 |
| out_delivery_no | string | ERP發貨單唯一編號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城待發貨成功;5=通知商城待發貨失敗;6=已發貨(廠商受理成功);7=已發貨通知商城成功;8=已發貨通知商城失敗 |
| amount | integer | 提貨數量(從鏈上查詢得到) |
### 2.4 商城提貨單查詢
接口名稱:商城提貨單查詢
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:請求參數:pickup\_no:生產平臺提貨單號、out\_pickup\_no:商城平臺提貨單號,二選一查詢
~~~[api]
post:/api/v2/pickup/findForMall
pickup_no#生產平臺提貨單號
out_pickup_no#商城平臺提貨單號
txid#提貨上鏈交易ID
delivered_txid#發貨上鏈交易ID
waybill_no#發貨運單號
time_range#查詢時間段,格式為:[1552060800000,1552147200000],單位:毫秒
page_no#查詢頁
page_size#每頁條數
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"pickup_no": "11001904181154785525",
"out_pickup_no": "111119",
"txid": "8866CB397916001E1595995158C40D76",
"tx_type": "astro.token.exchange",
"symbol": "Victor1",
"symbol_child": "Victor1_ex_36688a66-2805-4798-98eb-62c13914b0fb,Victor1_ex_366d1ce7-0fb2-4ddb",
"from_addr": "AfmAE1K-T8V-y4ObshuwV2faNMOdNMYW0Q",
"to_addr": "ARJtq6Q46oTnxDwvVqMgDtZeNxs7Ybt81A",
"amount": 1,
"status": 6,
"created_at": "2019-04-18T06:49:09.000Z",
"updated_at": "2019-04-18T06:51:04.000Z",
"receipt_list": [
{
"txid": "0C697F48392907A015959A00DB1CC6AF",
"tx_type": "astro.token.deliver",
"symbol": "Victor1",
"symbol_child": "Victor1_ex_36688a66-2805-4798-98eb-62c13914b0fb",
"from_addr": "ARJtq6Q46oTnxDwvVqMgDtZeNxs7Ybt81A",
"to_addr": "AfmAE1K-T8V-y4ObshuwV2faNMOdNMYW0Q",
"amount": 1,
"serial_no": "01203131231231",
"waybill_no": "01203131231231",
"logistic_no": "01203131231231",
"logistic_name": "順風",
"created_at": "2019-04-18T06:51:04.000Z",
"updated_at": "2019-04-18T06:51:04.000Z"
}
]
}
]
"pagination": {
"current": 1,
"pageSize": 10,
"total": 3
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;600:參數不正確;500:系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | array | 返回數據 |
| pickup_no | string | 生產平臺提貨單號 |
| out_pickup_no | string | 商城提貨單號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城待發貨成功;5=通知商城待發貨失敗;6=已發貨(廠商受理成功);7=已發貨通知商城成功;8=已發貨通知商城失敗 |
| txid | string | 商城提貨單號 |
| tx_type | string | 合約分類: astro.token.offer=增發; astro.token.create=發行; astro.token.exchange=提貨; astro.token.deliver=發貨; astro.token.change=換貨; astro.token.refund=退貨 |
| symbol | string | token名稱 |
| symbol_child | string | 新token名稱 |
| from_addr | string | 用戶轉出Token A地址,也做為A''接收地址 |
| to_addr | string | 生產商接收Token A地址 |
| amount | integer | 數量 |
| created_at | date | 訂單時間 |
| updated_at | date | 修改時間 |
| receipt_list | array(object) | |
| txid | string | 商城提貨單號 |
| tx_type | string | 合約分類: astro.token.offer=增發; astro.token.create=發行; astro.token.exchange=提貨; astro.token.deliver=發貨; astro.token.change=換貨; astro.token.refund=退貨 |
| symbol | string | token名稱 |
| symbol_child | string | 新token名稱 |
| from_addr | string | 用戶轉出Token A地址,也做為A''接收地址 |
| to_addr | string | 生產商接收Token A地址 |
| amount | integer | 數量 |
| serial_no | string | 商品序列號 |
| waybill_no | string | 物流運單號(獲取運單號后,改狀態為已發貨) |
| logistic_no | string | 物流商編號 |
| logistic_name | string | 物流商名稱 |
| pagination| object | 分頁信息 |
| current | integer | 當前頁 |
| total | integer | 總條數 |
### 2.5 ERP 發貨單查詢
接口名稱:ERP發貨單查詢
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:發貨單查詢,請求參數:pickup\_no、out_delivery_no,二選一查詢
~~~[api]
post:/api/v2/pickup/findForErp
pickup_no#生產平臺提貨單號
out_delivery_no#ERP平臺發貨單號
txid#提貨上鏈交易ID
delivered_txid#發貨上鏈交易ID
waybill_no#發貨運單號
time_range#查詢時間段,格式為:[1552060800000,1552147200000],單位:毫秒
page_no#查詢頁
page_size#每頁條數
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": {
"status": 0,
"message": "操作成功",
"data": [
{
"pickup_no": "11001904194136563266",
"out_pickup_no": "111119",
"txid": "8866CB397916001E1595995158C40D76",
"tx_type": "astro.token.exchange",
"symbol": "Victor1",
"symbol_child": "Victor1_ex_36688a66-2805-4798-98eb-62c13914b0fb",
"from_addr": "AfmAE1K-T8V-y4ObshuwV2faNMOdNMYW0Q",
"to_addr": "ARJtq6Q46oTnxDwvVqMgDtZeNxs7Ybt81A",
"amount": 1,
"consignee": "張三",
"cellphone": "13912345678",
"area": "北京/北京市/朝陽區",
"address": "望京SOHO",
"zipcode": "",
"erp_notify_url": "http://localhost:6001/api/v1/mockup/erpreceiver",
"caption": "牙膏",
"specs": {
"image": null,
"顏色": "白"
},
"status": 6,
"created_at": "2019-04-19T03:04:45.000Z",
"updated_at": "2019-04-19T03:17:32.000Z"
}
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 1
}
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;600:參數不正確;500:系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | array | 提貨數據 |
| pickup_no | string | 生產平臺提貨單號 |
| out_pickup_no | string | 商城提貨單號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城待發貨成功;5=通知商城待發貨失敗;6=已發貨(廠商受理成功);7=已發貨通知商城成功;8=已發貨通知商城失敗 |
| txid | string | 商城提貨單號 |
| tx_type | string | 合約分類: astro.token.offer=增發; astro.token.create=發行; astro.token.exchange=提貨; astro.token.deliver=發貨; astro.token.change=換貨; astro.token.refund=退貨 |
| symbol | string | token名稱 |
| symbol_child | string | 新token名稱 |
| from_addr | string | 用戶轉出Token A地址,也做為A''接收地址 |
| to_addr | string | 生產商接收Token A地址 |
| amount | integer | 數量 |
| area | string | 地區 |
| address | string | 地址 |
| zipcode | string |郵編 |
| mail_notify_url | string | 回調地址 |
| specs | array | 商品規格 |
| caption | string | 商品名稱 |
| consignee | string | 消費者姓名 |
| cellphone | string | 電話 |
| created_at | date | 訂單時間 |
| updated_at | date | 修改時間 |
| pagination| object | 分頁信息 |
| current | integer | 當前頁 |
| total | integer | 總條數 |
## 3. 提貨進度通知
### 3.1 待發貨 | 已發貨通知商城平臺
接口名稱: 待發貨|已發貨通知商城平臺
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:商城平臺指定的回調URL 。
*注意:請求參數只有 apiKey 和 ciphertext,ciphertext 包含的參數為解密后結果。*
**生產平臺加密過程:**
1. 參數按字典序排列,拼成URL鍵值對的格式(key1=value1&key2=value2…?),參數的值為空不參與加密,拼接成字符串 stringA,如:
```
待發貨stringA
stringA="pickup_no=xxx&out_pickup_no=xxx&status=3&txid=xxx&msg_ts=1552361701472&ts=1552361703000"
已發貨stringA
stringA="pickup_no=xxx&out_pickup_no=xxx&status=3&txid=xxx&receipts=[{xxx:xxx}]&msg_ts=1552361701472&ts=1552361703000"
注:receipts為JSON字符串
```
2. 在stringA 最后拼接上 apiSecret 得到 stringSignTemp 字符串,?并對 stringSignTemp 進行 MD5 運算,再將得到的字符串所有字符轉換為大寫,得到 sign 值,如:
```
stringSignTemp?=?stringA +?apiSecret;?
sign =?MD5(stringSignTemp).toUpperCase();
```
3. 生成 ciphertext:采用AES-256加密方式,加密內容為:params =?stringA + "&sign=" +?sign,如:
```
apiSecret=65b9477712dc43c8a899dfb69729c600
iv =?apiSecret.substr(0,16)
cipher =?crypto.createCipheriv('aes-256-cbc',?apiSecret,?iv);
encrypted?=?cipher.update(params);?
ciphertext =?Buffer.concat(\[encrypted,cipher.final()\]).toString('hex')
```
**解密過程:**
1. 根據參數 apiKey 獲得對應的 apiSecret;
2. 解密 ciphertext:采用 AES-256 加密方式,加密內容為:data =?stringA + "&sign=" +?sign,? ?如:
```
apiSecret = "65b9477712dc43c8a899dfb69729c600"
iv =?apiSecret.substr(0,16)
encrypted?=newBuffer(ciphertext,'hex')
decipher =crypto.createDecipheriv('aes-256-cbc',?apiSecret,iv);
decrypted?=decipher.update(encrypted);
params =?Buffer.concat([decrypted,decipher.final()]).toString();
```
3. 從 params 字符串中去掉末尾參數,&sign=xxx,獲得字符串 stringA;
4. 在 stringA 最后拼接上 apiSecret 得到 stringSignTemp 字符串,并對 stringSignTemp 進行 MD5 運算,再將得到的字符串所有字符轉換為大寫,得到 tempSign 值;
5. 比對 tempSign 與 sign 一致,表示數據有效。
**ciphertext密文內容包括:**
```
待發貨通知:
pickup_no: Matrix平臺提貨單唯一編號;
out_pickup_no: 商城平臺提貨單唯一編號;
txid:發起提貨交易ID;
status: 提貨單狀態;
notify_ts:通知創建時間;
ts:通知發送時間。
```
```
已發貨通知:
pickup_no: Matrix平臺提貨單唯一編號;
out_pickup_no: 商城平臺提貨單唯一編號;
txid:發起提貨交易ID;
status: 提貨單狀態;
receipts: 發貨單票據,JSON字符串數據,包括:
pickup_no:Matrix平臺提貨單唯一編號;
tx_type:合約類型,astro.token.exchange=提貨; astro.token.deliver=發貨; astro.token.refund=退貨;
origin:原始Token標識;
origin_child:新Token標識;
from_addr:轉出地址;
to_addr:轉入地址;
amount:轉出數量;
waybill_no:發貨運單號;
logistic_no:物流商編號;
logistic_name:物流商名稱;
serial_no:商品唯一編號
```
~~~[api]
post:商城平臺指定的回調URL
*apiKey#apiKey
*ciphertext#密文
<<<
success
{
"code": 0表示成功, 非0表示失敗
"msg"
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功,非0:請求錯誤 |
| msg | string | 信息 |
### 3.2 待發貨通知 ERP 平臺
接口名稱: 待發貨通知ERP平臺
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:生產商ERP系統指定的回調URL
注意:請求參數只有apiKey和ciphertext,ciphertext包含的參數為解密后結果。
加解密過程參考:「待發貨|已發貨通知商城平臺」
**ciphertext密文內容包括:**
```
pickup_no:Matrix平臺提貨單唯一編號;
txid:發起提貨交易ID;
origin: 原始Token標識;
origin_child: 提貨Token標識;
sku_id: Matrix平臺商品SKU ID;
caption: Matrix平臺商品名稱;
spce: Matrix平臺商品規格;
consignee: 提貨人姓名;
cellphone: 提貨人手機號;
area: 提貨人所在區域;
address: 提貨人地址;
zipcode: 郵編;
notify_ts:通知創建時間戳(1970到生成時的毫秒數);
ts:通知發送時間戳(1970到生成時的毫秒數)。
```
~~~[api]
post:生產商ERP系統指定的回調URL
*apiKey#apiKey
*ciphertext#密文
<<<
success
{
"code": 0表示成功, 非0表示失敗
"msg"
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功,非0:請求錯誤 |
| msg | string | 信息 |
## 4. 退貨接口
### 4.1 獲取退貨商家回收地址
接口名稱: 獲取退貨商家回收地址
請求數據類型:X-WWW-FORM-URLENCODED
響應類型: JSON
狀態:有效
接口描述:獲取退貨商家回收地址
~~~[api]
post:/api/v2/pickup/fetchAddr
*uid#生產商id
*symbol#token標識
*sku_id#sku_id
<<<
success
{
code:0
msg: '成功'
data:{
address: 'OX0DGGSDFFDG'
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;2102: 退貨商品不存在;500: 系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | object| 返回數據 |
| address | string | 地址 |
### 4.2 退貨申請
接口名稱:退貨申請
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:客戶退貨申請
~~~[api]
post:/api/v2/refund/apply
*txid#交易id
*out_refund_no#商城退貨單號
*notify_url#處理結果,通知商城
int:amount#提貨數量
consignee#收貨人
cellphone#收貨人手機號
area#地區
address#收貨地址
zipcode#郵編
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": {
refund_no:生產平臺退貨單號,
out_refund_no:商城退貨單號,
status: 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城退貨成功;5=通知商城退貨失敗;6=已退貨(廠商受理成功);7=已退貨通知商城成功;8=已退貨通知商城失敗,
amount: 退貨數量(從鏈上查詢得到)
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;405: 無權訪問 ;1021: 用戶被禁用;2801: 退貨Txid已存在;2600:txid校驗失敗;2803:退貨數量與鏈上不一致;2701:未查到對應的商品;2702:發行地址與鏈上地址不一致 ;2800:退貨申請失敗 |
| msg | string | 錯誤原因 |
| data | object | 返回數據 |
| refund_no | string | 生產平臺退貨單號 |
| out_refund_no | string | 商城退貨單號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城退貨成功;5=通知商城退貨失敗;6=已退貨(廠商受理成功);7=已退貨通知商城成功;8=已退貨通知商城失敗 |
| amount | integer | 退貨數量(從鏈上查詢得到) |
### 4.3 退貨通知
接口名稱:退貨通知
請求數據類型:APPLICATION/JSON
響應類型:JSON
狀態:有效
接口描述:由生產商ERP系統調用,真實退貨后,通知生產平臺退貨單狀態變化
<!-- **請求參數**
~~~
{
"pickup_no": "11001904028341836781", // 生產平臺退貨單唯一編號
"out_delivery_no": "1001201112", // ERP發貨單唯一編號
"receipt_list": [ // 生產商發貨信息及Token信息
{
"txid": "0C697F48392907A015959A00DB1CC6AF", // 交易ID
"waybill_no": "01203131231231", // 運單號
"serial_no": "01203131231231", // 商品編碼,可空
"logistic_no": "01203131231231", // 物流商編號,可空
"logistic_name": "順風" // 物流商名稱,可空
}
]
}
~~~ -->
~~~[api]
post:/api/v2/refund/refunded
txid#交易id
*out_refund_no#商城退貨單號
*refund_no#生產平臺退貨單號
<<<
success
{
"code": 0,
"msg": "退貨通知成功",
"data": {
"refund_no": "12001904199498821447",
"out_refunded_no": "3223422342",
"status": 6,
"amount": 1
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;405: 無權訪問 ;1021: 用戶被禁用;2902: 退貨單不存在;2600:txid校驗失敗;2804:退貨單編號已存在;2701:未查到對應的商品;2702:發行地址與鏈上地址不一致 ;2806:退貨數量與返還數量不一致;2807:生產商ID不一致;2805:轉入地址與客戶地址不一致;2808:退貨單狀態有誤;2809:退貨通知保存失敗 |
| msg | string | 信息 |
| data | object | 返回數據 |
| refund_no | string | 生產平臺退貨單號 |
| out_refund_no | string | 商城退貨單號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城退貨成功;5=通知商城退貨失敗;6=已退貨(廠商受理成功);7=已退貨通知商城成功;8=已退貨通知商城失敗 |
| amount | integer | 退貨數量(從鏈上查詢得到) |
### 4.4 商城退貨單查詢
接口名稱:退貨單商城查詢
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:商城查詢退貨單
~~~[api]
post:/api/v2/refund/findForMall
refund_no#生產平臺退貨單號
out_refund_no#商城退貨單號
txid#交易id
refund_txid#退貨交易id
time_range#查詢時間段,格式為:[1552060800000,1552147200000],單位:毫秒
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"refund_no": "119030814581566011699905",
"out_refund_no": "1001007",
"txid": "8866CB397916001E1595995158C40D76",
"tx_type": "astro.token.exchange",
"symbol": "Victor1",
"symbol_child": "Victor1_ex_36688a66-2805-4798-98eb-62c13914b0fb"
"from_addr": "AfmAE1K-T8V-y4ObshuwV2faNMOdNMYW0Q",
"to_addr": "ARJtq6Q46oTnxDwvVqMgDtZeNxs7Ybt81A",
"amount": 1,
"notify_url": "http://localhost/pickup/callback",
"status": "待退貨",
"created_at": "2019-03-08T13:00:36.000Z",
"updated_at": "2019-03-14T09:23:08.000Z"
}
],
"pagination": {
"current": 1,
"pageSize": 10,
"total": 3
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;600:參數不正確;500:系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | array | 返回數據 |
| refund_no | string | 生產平臺退貨單號 |
| out_refund_no | string | 商城退貨單號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城退貨成功;5=通知商城退貨失敗;6=已退貨(廠商受理成功);7=已退貨通知商城成功;8=已退貨通知商城失敗 |
| txid | string | 商城退貨單號 |
| tx_type | string | 合約分類: astro.token.offer=增發; astro.token.create=發行; astro.token.exchange=提貨; astro.token.deliver=發貨; astro.token.change=換貨; astro.token.refund=退貨 |
| symbol | string | token名稱 |
| symbol_child | string | 新token名稱 |
| from_addr | string | 用戶轉出Token A地址,也做為A''接收地址 |
| to_addr | string | 生產商接收Token A地址 |
| amount | integer | 數量 |
| notify_url | string | 回調地址 |
| created_at | date | 訂單時間 |
| updated_at | date | 修改時間 |
| pagination| object | 分頁信息 |
| current | integer | 當前頁 |
| total | integer | 總條數 |
### 4.5 ERP 退貨單查詢
接口名稱:退貨單ERP查詢
請求數據類型:X-WWW-FORM-URLENCODED
響應類型:JSON
狀態:有效
接口描述:退貨單ERP查詢
~~~[api]
post:/api/v2/refound/findForErp
refund_no#生產平臺退貨單號
out_refunded_no#ERP退貨單號
txid#退貨申請交易id
refunded_txid#退貨id
time_range#查詢時間段,格式為:[1552060800000,1552147200000],單位:毫秒
<<<
success
{
"code": 0,
"msg": "操作成功",
"data": [
{
"refund_no": "11001904181154785525",
"out_refunded_no": "111119",
"txid": "8866CB397916001E1595995158C40D76",
"tx_type": "astro.token.exchange",
"symbol": "Victor1",
"symbol_child": "Victor1_ex_36688a66-2805-4798-98eb-62c13914b0fb,Victor1_ex_366d1ce7-0fb2-4ddb",
"from_addr": "AfmAE1K-T8V-y4ObshuwV2faNMOdNMYW0Q",
"to_addr": "ARJtq6Q46oTnxDwvVqMgDtZeNxs7Ybt81A",
"amount": 1,
"status": 6,
"notify_url": "http://localhost/pickup/callback",
"created_at": "2019-04-18T06:49:09.000Z",
"updated_at": "2019-04-18T06:51:04.000Z",
"consignee": "張三",
"cellphone": "13912345678",
"area": "北京/北京市/朝陽區",
"address": "望京SOHO",
"zipcode": "",
"caption": "牙膏",
"specs": {
"image": null,
"顏色": "白"
},
}
]
"pagination": {
"current": 1,
"pageSize": 10,
"total": 3
}
}
<<<
error
~~~
**返回值**
| 參數名 | 參數類型 | 描述 |
| --- | --- | --- |
| code | integer | 0:成功;600:參數不正確;500:系統內部錯誤 |
| msg | string | 錯誤原因 |
| data | array | 返回數據 |
| fefund_no | string | 生產平臺退貨單號 |
| out_refunded_no | string | ERP退貨單號 |
| status | integer | 狀態:1=待通知廠商;2=通知廠商成功;3=通知廠商失敗;4=通知商城退貨成功;5=通知商城退貨失敗;6=已退貨(廠商受理成功);7=已退貨通知商城成功;8=已退貨通知商城失敗 |
| txid | string | 商城提貨單號 |
| tx_type | string | 合約分類: astro.token.offer=增發; astro.token.create=發行; astro.token.exchange=提貨; astro.token.deliver=發貨; astro.token.change=換貨; astro.token.refund=退貨 |
| symbol | string | token名稱 |
| symbol_child | string | 新token名稱 |
| from_addr | string | 用戶轉出Token A地址,也做為A''接收地址 |
| to_addr | string | 生產商接收Token A地址 |
| amount | integer | 數量 |
| area | string | 地區 |
| address | string | 地址 |
| zipcode | string |郵編 |
| notify_url | string | 回調地址 |
| specs | array | 商品規格 |
| caption | string | 商品名稱 |
| consignee | string | 消費者姓名 |
| cellphone | string | 電話 |
| created_at | date | 訂單時間 |
| updated_at | date | 修改時間 |
| pagination| object | 分頁信息 |
| current | integer | 當前頁 |
| total | integer | 總條數 |