清关业务-主单创建 (方法名称:s3.mawb.create)
环境 | HTTP请求地址 |
---|---|
正式环境 | https://open.yw56.com.cn/api/order |
测试环境 | https://ejf-fat.yw56.com.cn/api/order |
环境 | 账号 | 秘钥 apitoken |
---|---|---|
正式环境 | 贵司在我司客户号; | 登录我司客户中心系统-账号管理-制单账号管理信息下查看秘钥; |
测试环境 | 99000015 | E33A3973221DB08128F8FF436EFDB8F4 |
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
user_id | String | 是 | 客户号 |
format | String | 是 | 报文格式 默认为json格式,可选值:json |
method | String | 是 | api名称; |
timestamp | Long | 是 | 时间戳(毫秒级) 有效期为5分钟 |
version | String | 是 | api版本号 固定 V1.0 |
sign | String | 是 | 签名(根据动态规则生成) |
data | String | 是 | 报文内容(body请求参数,放在请求体中,使用json格式) |
1.请求方式 所有接口使用 POST 方式请求,没有特殊说明 所有字符编码为utf-8; Content-Type: application/json;
2.公共请求参数放在url后面,使用&连接
3.签名规则
第一步:按字典序排列将参数拼接。具体顺序为 user_id+data+format+method+timestamp+version
第二步:将apiToken拼接到第一步的字符串的头部和尾部 apitoken+user_id+data+format+method+timestamp+version+apitoken
第三步:将第二步的结果进行md5加密; MD5(apitoken+user_id+data+format+method+timestamp+version+apitoken)
生成签名示例:
E33A3973221DB08128F8FF436EFDB8F499000015{}jsons3.mawb.create1655798809414V1.0E33A3973221DB08128F8FF436EFDB8F4
注:a.data 参数为body请求参数为json格式,并且使用压缩格式 b.MD5加密方式为32位小写;
加密后结果:553c7b9f65638ab8309cd38e4d9aa7f1
4.请求URL示例
https://ejf-fat.yw56.com.cn/api/order?user_id=99000015&method=s3.mawb.create&format=json×tamp=1655798809414&sign=553c7b9f65638ab8309cd38e4d9aa7f1&version=V1.0
注:user_id,method,format,version,timestamp要和生成签名时使用的参数一致。sign为生成参数签名步骤生成的md5加密后得到的
参数 | 类型 | 是否必填 | 长度 | 描述 |
---|---|---|---|---|
mawbNo | String | 是 | 64 | 主单号 |
version | Integer | 是 | 版本号(最大值为最新 版本) | |
channelId | Integer | 是 | 产品编号 | |
importPort | String | 是 | 16 | 进口口岸 |
exportPort | String | 是 | 16 | 出口口岸 |
weight | Integer | 是 | 主单实际重量(单位:g) | |
chargeableWeight | Integer | 是 | 主单计费重量(单位:g) | |
country | String | 是 | 4 | 国家二字码 |
transportType | Integer | 是 | 运输类型 1:空运 2: 海运 3:卡航 | |
flightNo | String | 否 | 16 | 航班号(空运必填) |
scacBill | String | 否 | 35 | 船公司代码(海运必填) |
vesselName | String | 否 | 35 | 船舶名称(海运必填) |
voyageNumber | String | 否 | 35 | 船舶代码(海运必填) |
containerNumber | String | 否 | 35 | 货柜号码(海运必填) |
sealNumber | String | 否 | 35 | 封柜号码(海运必填) |
etdTimeZone | String | 是 | 时区 +08:00 | |
etd | Date | 是 | 预计离港时间 yyyy-MM-dd HH:mm:ss | |
etaTimeZone | String | 是 | 时区 +08:00 | |
eta | Date | 是 | 预计到港时间yyyy-MM-dd HH:mm:ss | |
bagQuantity | Integer | 是 | 大包数量 |
|
parcelQuantity | Integer | 是 | 主单内小件总数量 | |
- bagList | List |
是 | 大包信息列表 | |
bagNo | String | 是 | 64 | 大包号 |
参数 | 类型 | 描述 |
---|---|---|
success | Boolean | 是否成功 true:成功 false:失败 |
code | String | 消息编码 0:成功 >0:失败 <0:系统异常 |
message | String | 消息内容 |
data | Object | 实体信息 |
{
"mawbNo": "test10000001",
"version": "1",
"channelId": "1646",
"importPort": "CDG",
"exportPort": "CAN",
"weight": "20000",
"chargeableWeight": "21000",
"country": "FR",
"transportType": "1",
"flightNo": "ANA962",
"scacBill": "",
"vesselName": "",
"voyageNumber": "",
"containerNumber": "",
"sealNumber": "",
"etdTimeZone": "+08:00",
"etd": "2023-05-17 10:10:00",
"eta": "2023-05-17 16:00:00",
"etaTimeZone": "+08:00",
"bagQuantity": "50",
"parcelQuantity": "1000",
"bagList": [{
"bagNo": "bagNo001"
},
{
"bagNo": "bagNo002"
}
]
}
{
"success": true,
"code": "0",
"message": "操作成功",
"data": null
}