1 公共参数
与V1的变化
见 v2升级指南
请求地址
测试地址: https://openapi.st.xiaomiyoupin.com
线上地址: https://shopapi.io.mi.com
HTTP Header
Content-Type: application/json
HTTP Method
POST
代码示例
数据加密
比如单次发货接口 /mtop/aftersale/openapi/delivery/single
你的请求参数原始data内容为:
{"orderId":"4191005964004759","expressSn":104534,"expressName":"中通快递","bizCode":"zhongtong","userId":123456,"itemList":[{"skuId":3000054,"count":2,"pid":19558}],"partnerId":65}
签名token是最终加密sign签名时用 key
, 加密key是加密data字段内容时用 aesKey
对 data 进行加密, 加密工具可以参考该 AesUtils 加密方式, data 的内容不做任何处理, 暴露原始 json
格式即可
ngUcGaGPK06fSjcKepbxwDyFFKu/tGdmCjMpdF6oJKDHDbWao6degoi142CZ+2agSL+qOPINKbdq7RUiLVxrQMXcT5Ztsr5clwILR5bzdq+mvMe1Pf9DLQ79OmoOVGz8UEiVuEPJjeOswKYIUNK4gsbT10jraX8Aow3EDMtw1koDidKf0AOcV/MhvjGrphVeE1Cx5wld2ZRa1g7NihNikahfbvlyoEilruZHfyd+WmZG5GpWSlN8ueGXu0C2nC43
签名计算
原始字符串固定位置为 data=你上一步加密后的data内容&partnerId=你的商户标识×tamp=拼接一个11位时间戳(一般为当前)+你的签名密钥token
比如商户 65
data=ngUcGaGPK06fSjcKepbxwDyFFKu/tGdmCjMpdF6oJKDHDbWao6degoi142CZ+2agSL+qOPINKbdq7RUiLVxrQMXcT5Ztsr5clwILR5bzdq+mvMe1Pf9DLQ79OmoOVGz8UEiVuEPJjeOswKYIUNK4gsbT10jraX8Aow3EDMtw1koDidKf0AOcV/MhvjGrphVeE1Cx5wld2ZRa1g7NihNikahfbvlyoEilruZHfyd+WmZG5GpWSlN8ueGXu0C2nC43&partnerId=65×tamp=1570327235658624ba4066187ae293b63851686bcf
然后整体进行md5加密后得到你的签名
sign=8b5472bd8453be8304c7d87b317b93f8
请求示例
curl -H "Content-Type:application/json" -X POST "https://openapi.test.youpin.mi.com/mtop/aftersale/openapi/delivery/single" -d '[{"partnerId":"65","data":"ngUcGaGPK06fSjcKepbxwDyFFKu/tGdmCjMpdF6oJKDHDbWao6degoi142CZ+2agSL+qOPINKbdq7RUiLVxrQMXcT5Ztsr5clwILR5bzdq+mvMe1Pf9DLQ79OmoOVGz8UEiVuEPJjeOswKYIUNK4gsbT10jraX8Aow3EDMtw1koDidKf0AOcV/MhvjGrphVeE1Cx5wld2ZRa1g7NihNikahfbvlyoEilruZHfyd+WmZG5GpWSlN8ueGXu0C2nC43","sign":"8b5472bd8453be8304c7d87b317b93f8","timestamp":1570327235}]'
请求参数格式统一为, 注意外层的数组格式:
[
{
"partnerId": "65",
"data": "ngUcGaGPK06fSjcKepbxwDyFFKu/tGdmCjMpdF6oJKDHDbWao6degoi142CZ+2agSL+qOPINKbdq7RUiLVxrQMXcT5Ztsr5clwILR5bzdq+mvMe1Pf9DLQ79OmoOVGz8UEiVuEPJjeOswKYIUNK4gsbT10jraX8Aow3EDMtw1koDidKf0AOcV/MhvjGrphVeE1Cx5wld2ZRa1g7NihNikahfbvlyoEilruZHfyd+WmZG5GpWSlN8ueGXu0C2nC43",
"sign": "8b5472bd8453be8304c7d87b317b93f8",
"timestamp": 1570327235
}
]
返回:
{
"code": 400080002,
"message": "当前pid-skuId[19558-3000054]总发货数量: 3, 超过订单实际购买的数量: 1"
}
常见对接问题
1.
{
"code": 400080010,
"message": "参数为空"
}
商家id使用partnerId
2.
{
"code": 400080019,
"message": "数据反序列化异常"
}
参数类型错误导致反序列化失败
如订单列表接口:
错误参数示例:
{
"pageSize": 50,
"pageNo": 1,
"beginTime": 1594609845,
"endTime": 1594782645,
"status": "[4,6]"
}
示例中的字段status是String类型,与要求不一致。
正确参数:
{
"pageSize": 50,
"pageNo": 1,
"beginTime": 1594609845,
"endTime": 1594782645,
"status": [4,6]
}
返回反序列化异常时,请按照文档参数类型检查请求参数。
3.
{
"code": 400080011,
"message": "请求已过期"
}
时间戳的有效时间是10分钟
4.
{
"code": 400080002,
"message": "已选择过pid维度发货,不可操作包裹发货,请继续使用pid维度发货"
}
有品目前支持两种发货方式:pid发货(V1发货接口),包裹发货(V2发货接口)
一个订单只能使用一种发货方式
具体请见 升级指南 新增包裹发货模式
5.
{
"code": 500,
"message": "系统繁忙,请稍后重试",
"detailMsg": "...Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 2 column 6 path $"
}
请求参数格式为json数组([{}])
检查在json外层是否有[]