开发注意事项必读:https://helptb.kuaidizs.cn/helpMap/getDetail?detailId=1234
测试环境接口链接:https://apiopenp.kuaidizs.cn/api/gateway
正式环境接口链接:https://apiopen.kuaidizs.cn/api/gateway
测试环境登陆连接:https://openmallp.kuaidizs.cn/forward.jsp
正式环境登陆连接:https://openmall.kuaidizs.cn/forward.jsp
1 单店铺类型:一个appKey下只能存在一店铺。
2 多店铺类型:一个appKey下可以存在多个店铺,登录时的APP_KEY格式为 appkey_shopName_token。
公共参数+应用参数
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
appKey | String | 是 | 应用分配APPKey |
method | String | 是 | 方法名 |
mallUserId | Long | 否 | 多店铺模式下必填,由10.2获取 |
timestamp | long | 是 | 时间戳 |
format | String | 否 | 响应格式。当前仅支持json。 |
v | String | 是 | API协议版本,可选值:1.0 |
signMethod | String | 否 | 签名的摘要算法,可选值为:md5,默认值md5 |
sign | String | 是 | API输入参数签名结果,签名算法参照接入的介绍 |
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
appParam | String | 是 | 应用参数的json字符串 |
1、所有非空系统参数和应用参数根据参数名按acsii字符集排序规则排序(注意是非空!),并且在首尾凭借appSecret 如 999999999appKey=AAA&appParam=ABC&method=open.test×tamp=1567862623723999999999
2、待签名串做大写32位MD5加密得到5E4E06D831A2FCB85A8905E0C2B5F9EB
method:trade.create
应用参数: MallTrade
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tid | String | 是 | 订单id,全局唯一 |
buyerMessage | String | 否 | 买家留言 |
salesChannel | String | 否 | 销售渠道 |
buyerNick | String | 否 | 买家昵称 |
receiverName | String | 是 | 收件人姓名 |
receiverProvince | String | 是 | 收件人省份 |
receiverCity | String | 是 | 收件人市 |
receiverCounty | String | 是 | 收件人区/县 |
receiverTown | String | 否 | 收件人街道 |
receiverAddress | String | 是 | 收件人详细地址 |
receiverPhone | String | 是 | 收件人手机号,手机号固话不可同时为空 |
receiverMobile | String | 否 | 收件人固话,手机号固话不可同时为空 |
receiverZip | String | 否 | 收件邮编 |
cod | Integer | 否 | 是否货到付款,1:是;0:否 |
tradeType | String | 否 | 订单类型,一口价、送礼、赠品领取、货到付款 |
totalFee | String | 是 | 商品金额,商品价格*数量。精确到2位小数;单位:元。如:200.07,表示:200元7分 |
payment | String | 是 | 实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分 |
postFee | String | 是 | 邮费。精确到2位小数;单位:元。如:200.07,表示:200元7分 |
discountFee | String | 否 | 优惠金额 单位:元。如:200.07,表示:200元7分 |
created | Date | 是 | 交易创建时间。格式:yyyy-MM-dd HH:mm:ss |
payTime | Date | 是 | 付款时间。格式:yyyy-MM-dd HH:mm:ss。订单的付款时间即为物流订单的创建时间。 |
modified | Date | 是 | 交易修改时间(用户对订单的任何修改都会更新此字段)。格式:yyyy-MM-dd HH:mm:ss。 |
totalNum | Long | 是 | 商品购买数量。取值范围:大于零的整数,对于一个trade对应多个order的时候(一笔主订单,对应多笔子订单),num=0,num是一个跟商品关联的属性 |
orders | List<MallOrder> | 是 | 商品购买数量。取值范围:大于零的整数,对于一个trade对应多个order的时候(一笔主订单,对应多笔子订单),num=0,num是一个跟商品关联的属性 |
sellerFlag | Long | 否 | 卖家备注旗帜 红、黄、绿、蓝、紫 、灰分别对应 1、2、3、4、5、0 |
sellerMemo | String | 否 | 卖家备注 |
status | String | 是 | 交易状态 |
payMethod | String | 否 | 支付方式 |
payType | String | 否 | 支付类型 |
mallInvoice | MallInvoice | 否 | 发票内容 |
refundStatus | String | 否 | 退款状态 |
waybillNo | String | 否 | 发货运单号 |
waybillCode | String | 否 | 发货物流公司code |
sendTime | Date | 否 | 发货时间 |
MallOrder
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
orderId | String | 是 | 子订单Id,全局唯一 |
picPath | String | 是 | 商品图片绝对路径 |
skuUrl | String | 否 | 商品规格图片绝对路径 |
status | String | 是 | 订单状态值 |
title | String | 是 | 商品标题 |
outerId | String | 是 | 商家编码 |
itemId | String | 是 | 商品ID |
skuId | String | 是 | 规格ID |
outerSkuId | String | 是 | 规格商家编码 |
number | Integer | 是 | 购买数量 |
price | String | 是 | 单价 |
totalFee | String | 是 | 应付金额 |
discountFee | String | 否 | 优惠金额 |
payment | String | 是 | 子订单实付金额 |
saleProps | List<MallProp> | 是 | 商品属性 |
MallInvoice(暂无用)
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
invoice | String | 否 | 发票内容 |
invoiceHead | String | 否 | 发票抬头 |
invoiceRecipientAddress | String | 否 | 发票寄件地址 |
invoiceRecipientHandPhone | String | 否 | 发票手机号 |
invoiceRecipientPhone | String | 否 | 发票电话 |
invoiceType | String | 否 | 发票类型,增值还是普通(01增值 02普通 04 电子发票) |
MallProp
名称 | 类型 | 是否必须 | 示例值 | 描述 |
---|---|---|---|---|
key | String | 是 | color | 键值 |
name | String | 是 | 颜色 | 键值(中文) |
value | String | 是 | 红色 | 属性值 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
public void testTradeCreate() throws IOException {
MallTrade mallTrade = createTradeUtil();//创建订单对象的工具类
//请求部分
String appParams = JSON.toJSONString(mallTrade);
Map<String, String> sysParams = buildSysParams("trade.create");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
//应用参数
System.out.println(appParams);
//公共参数
System.out.println(JSONObject.toJSONString(sysParams));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
//返回值格式
System.out.println(res);
}
method:trade.batchCreate
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
mallTradeList | List<MallTrade> | 是 | 订单列表 |
示例代码:
xxxxxxxxxx
public void testBatchCreateTrade() throws Exception {
MallTradeListVo mallTradeListVo = new MallTradeListVo();
List<MallTrade> mallTrades = new ArrayList();
//模拟请求参数 --批量订单
for (int i = 0; i < 3; i++) {
MallTrade mallTrade = createTradeUtil();
mallTrades.add(mallTrade);
Thread.sleep(1000);
}
mallTradeListVo.setMallTradeList(mallTrades);
//请求部分
String appParams = JSON.toJSONString(mallTradeListVo);
Map<String, String> sysParams = buildSysParams("trade.batchCreate");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
//请求参数
System.out.println("appParams" + appParams);
//系统参数
System.out.println("sysParams" + sysParams);
System.out.println("sign:" + signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println("res:" + res);
}
method:trade.update
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tid | String | 是 | 订单id,全局唯一 |
receiverName | String | 否 | 收件人姓名 |
receiverProvince | String | 否 | 收件人省份 |
receiverCity | String | 否 | 收件人市 |
receiverCounty | String | 否 | 收件人区/县 |
receiverTown | String | 否 | 收件人街道 |
receiverAddress | String | 否 | 收件人详细地址 |
receiverPhone | String | 否 | 收件人手机号,手机号固话不可同时为空 |
receiverMobile | String | 否 | 收件人固话,手机号固话不可同时为空 |
receiverZip | String | 否 | 收件邮编 |
modified | Date | 是 | 交易修改时间(用户对订单的任何修改都会更新此字段)。格式:yyyy-MM-dd HH:mm:ss。 |
sellerFlag | Long | 否 | 卖家备注旗帜 红、黄、绿、蓝、紫 、灰分别对应 1、2、3、4、5、0 |
sellerMemo | String | 否 | 卖家备注 |
status | String | 否 | 交易状态 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xpublic void testTradeUpdate() throws IOException {
//模拟订单修改数据
MallTradeUpdate mallTrade = new MallTradeUpdate();
mallTrade.setModified(new Date());
mallTrade.setTid("trade202007231595496355218");
mallTrade.setReceiverAddress("修改订单地址");
mallTrade.setReceiverName("修改收件人姓名");
//请求参数部分
String appParams = JSON.toJSONString(mallTrade);
Map<String, String> sysParams = buildSysParams("trade.update");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
method:trade.send
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tid | String | 是 | 订单id,全局唯一 |
oids | List< String > | 否 | 子订单id,全局唯一 |
companyCode | String | 是 | 快递公司code,详见快递公司对应表 |
waybillNo | String | 是 | 运单号 |
split | String | 是 | 是否拆单,拆单则oids为必传 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
//此情况是开发商将已发货的订单信息同步至快递助手方订单发货信息
public void testTradeSend() throws IOException {
//模拟需要发货的订单数据
MallTradeSend mallTrade = new MallTradeSend();
mallTrade.setCompanyCode("YTO");
mallTrade.setTid("trade202007231595496355218");
mallTrade.setSplit(true);
ArrayList<String> oids = new ArrayList<>();
oids.add("order202007231595496355220");
mallTrade.setOids(oids);
mallTrade.setWaybillNo("YTO787878787878");
//请求部分
String appParams = JSON.toJSONString(mallTrade);
Map<String, String> sysParams = buildSysParams("trade.send");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
method:trade.refund
公共参数 应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tid | String | 是 | 订单id,全局唯一 |
oids | List< String > | 否 | 子订单id,全局唯一 |
refundStatus | String | 是 | 退款状态 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
public void testTradeRefund() throws IOException {
//模拟需要退款的订单数据
MallTradeRefund mallTrade = new MallTradeRefund();
mallTrade.setTid("trade202007231595497923437");
//若传入子订单 则默认更改子订单状态而不改变订单状态 不传子订单 默认更改所有订单状态
ArrayList<String> oids = new ArrayList<>();
oids.add("order202007231595481842541");
mallTrade.setOids(oids);
mallTrade.setRefundStatus("REFUND_SUCCESSED");
//请求部分
String appParams = JSON.toJSONString(mallTrade);
Map<String, String> sysParams = buildSysParams("trade.refund");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
method:trade.batchDelete
公共参数 应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tidList | List< String > | 是 | 订单id列表 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
public void testBatchDelete() throws IOException {
//模拟需要删除订单
MallTradeTidList mallTradeTidList = new MallTradeTidList();
ArrayList<String> tidList = new ArrayList<>();
tidList.add("trade202007231595497923437");
tidList.add("trade202007231595497798431");
mallTradeTidList.setTidList(tidList);
//请求部分
String appParams = JSON.toJSONString(mallTradeTidList);
Map<String, String> sysParams = buildSysParams("trade.batchDelete");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
定时推送全部商品列表
method:product.list
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
itemList | List<MallItem> | 是 | 商品列表 |
MallItem
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
itemId | String | 是 | 商品id,全局唯一 |
title | String | 是 | 商品名称 |
outerId | String | 否 | 商家编码 |
itemNum | String | 否 | 货号 |
itemUrl | String | 否 | 商品绝对路径 |
picUrl | String | 是 | 商品主图绝对路径 |
price | String | 否 | 商品单价 |
status | String | 是 | 商品状态,ONSALE:在售,INVENTORY:仓库中 |
skus | List<MallSku> | 否 | 商品规格列表 |
MallSku
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
skuId | String | 是 | 规格id |
itemId | String | 是 | 商品id |
skuPrice | String | 否 | 规格单价 |
itemTitle | String | 是 | 商品名称 |
skuName | String | 是 | 规格名称 |
status | Integer | 是 | 状态 |
created | String | 是 | 创建时间 |
skuOuterId | String | 否 | 规格商家编码 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
public void testItemList() throws IOException {
MallItemList mallItemList = new MallItemList();
//模拟生成商品对象
List<MallItem> mallItems = new ArrayList<>();
for (int i = 0; i < 3; i++) {
MallItem mallItem = createMallItemUtil();
mallItems.add(mallItem);
}
mallItemList.setItemList(mallItems);
//请求部分
String appParams = JSON.toJSONString(mallItemList);
Map<String, String> sysParams = buildSysParams("product.saveItemList");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
有则更新,无则添加
method:product.saveItemList
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
itemList | List<MallItem> | 是 | 商品列表 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
public void testUpdateItem() throws IOException {
//模拟需要修改的商品对象
MallItem mallItem = JMockData.mock(MallItem.class);
mallItem.setAppKey(openApp.getAppKey());
mallItem.setId(null);
mallItem.setItemId("102");
mallItem.setTitle("修改商品title");
mallItem.setCreated(new Date());
mallItem.setModified(new Date());
mallItem.setStatus("ONSALE");
mallItem.setPicUrl("测试图片地址");
List<MallSku> skus = new ArrayList<>();
MallSku sku = new MallSku();
sku.setItemId("102");
sku.setSkuId("20216224-skuid");
sku.setItemTitle("修改商品sku");
sku.setSkuName("修改sku");
sku.setStatus(1);
sku.setModified(new Date());
skus.add(sku);
mallItem.setSkus(skus);
MallItemList mallItemList = new MallItemList();
mallItemList.setItemList(Arrays.asList(mallItem));
//请求部分
String appParams = JSON.toJSONString(mallItemList);
Map<String, String> sysParams = buildSysParams("product.saveItemList");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
method:product.deleteItemList
公共参数 应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
itemIdList | List< String > | 是 | 商品Id列表 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
public void testDeleteItem() throws IOException {
MallItemIdList mallItemIdList = new MallItemIdList();
List<String> list = new ArrayList<>();
list.add("102");
mallItemIdList.setItemIdList(list);
String appParams = JSON.toJSONString(mallItemIdList);
Map<String, String> sysParams = buildSysParams("product.deleteItemList");
sysParams.put("appParam", appParams);
sysParams.put("sign", signRequestCommon(JSONObject.parseObject(JSONObject.toJSONString(sysParams)), openApp.getAppSecret()));
String res = WebUtils.doPost(apiUrl, sysParams, timeout, timeout);
System.out.println(res);
}
method:trade.send POST application/x-www-form-urlencoded
根据配置回调发货接口
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
tid | String | 是 | 订单id,全局唯一 |
oids | List< String > | 是 | 子订单id,全局唯一 |
companyCode | String | 是 | 快递公司code,详见快递公司对应表 |
waybillNo | String | 是 | 运单号 |
split | String | 是 | 是否拆单 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
@RequestMapping("/trade.send")
public String tradeSendCallBack(MallTradeSend mallTradeSend){
boolean isSuccess = false;
/**
* 接收需要发货的订单实体类信息 自行处理之后 可修改isSuccess参数 也可自定义
*/
WebResponse response = new WebResponse();
if (isSuccess){
response.setCode(200);
response.setMessage("同步发货成功");
}else{
response.setCode(500);
response.setMessage("同步发货失败");
}
String res = JSON.toJSONString(response);
return res;
}
10.2 店铺信息推送 API
method:user.push POST application/x-www-form-urlencoded
店铺第一次登录时回调该接口,推送mallUserId字段
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
shopName | String | 是 | 店铺名称 |
token | String | 是 | 校验该店铺是否有效 |
mallUserId | Long | 是 | 店铺ID |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
/**
* 此情况是多店铺模式 店铺第一次登录时快递助手需要回调该接口 推送mallUserId字段
*/
@RequestMapping("/user.push")
public String userPushCallBack(UserPush userPush){
boolean isSuccess = false;
/**
* 接收店铺信息 自定义校验是否有效
*/
WebResponse response = new WebResponse();
if (isSuccess){
response.setCode(200);
response.setMessage("现在登录的是"+ userPush.getShopName()+"-"+userPush.getMallUserId());
}else{
response.setCode(500);
response.setMessage("该店铺不存在");
}
String res = JSON.toJSONString(response);
return res;
}
10.3 店铺登录 API
method:user.login GET application/x-www-form-urlencoded
店铺每次登录都会回调该接口
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
token | String | 是 | 校验该店铺是否有效 |
返回参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
示例代码:
xxxxxxxxxx
/**
* 此情况是多店铺模式 店铺每次登录 快递助手需要校验店铺
*/
@RequestMapping("/user.login")
public String userLoginCallBack(UserLogin userLogin) {
boolean isSuccess = false;
/**
* 接收店铺token 自定义校验是否有效
*/
WebResponse response = new WebResponse();
if (isSuccess){
response.setCode(200);
response.setMessage("该店铺有效");
}else{
response.setCode(500);
response.setMessage("店铺无效或token失效");
}
String res = JSON.toJSONString(response);
return res;
}
10.4 消息补偿API(未实现)
根据后台配置接口调用,如未配置则不调用。
针对推送失败的消息,需要提供补偿API机制,让快递助手能够主动来查询失败消息列表,做一些补偿的逻辑。
查询式获取失败的消息列表: 获取的消息不会自动确认消费成功的状态,需要调用方手动调用确认api来确认。需注意, 确认后,对接方需清理掉已确认消息
查询式获取失败的消息列表API:
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pageNo | Integer | 是 | 页数,默认1 |
pageSize | Integer | 是 | 页数,默认50,max:100 |
响应参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
pageNo | Integer | 是 | 页数,默认1 |
pageSize | Integer | 是 | 页数,默认50,max:100 |
message | String | 是 | 以json格式存储上述应用参数 |
method | String | 是 | 对应系统参数中method |
id | String | 是 | 失败消息id,全局唯一,用于确认消息消费 |
应用参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
ids | List< String > | 是 | 批量消息id列表 |
响应参数:
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
code | Integer | 是 | 成功:200,异常:非200 |
message | String | 否 | 异常时错误信息 |
快递公司列表:
快递公司发货code | 快递公司名称 |
---|---|
BESTQJT | 百世快运 |
BEST | 百世物流 |
DBKD | 德邦物流 |
EMS | EMS标准 |
EYB | EMS快递包裹 |
FAST | 快捷 |
GTO | 国通 |
HTKY | 百世快递 |
POST | 中国邮政 |
POSTB | 中国邮政国内小包 |
QFKD | 全峰快递 |
SF | 顺丰快递 |
STO | 申通快递 |
SURE | 速尔快递 |
TTKDEX | 天天快递 |
UAPEX | 全一快递 |
UC | 优速快递 |
YTO | 圆通快递 |
YUNDA | 韵达快递 |
ZJS | 宅急送 |
UAPEX | 全一快递 |
ZTKY | 中铁物流 |
ZTO | 中通快递 |
CNEX | 佳吉快运 |
CN7000001003751 | 跨越速运 |
JD | 京东快递 |
ANE56 | 安能快递 |
ANEKY | 安能快运 |
OTHERS | 其他快递 |
订单状态:
订单状态值 | 描述 |
---|---|
ORDER_NO_PAY | 订单未付款 |
ORDER_CANCELLED | 订单取消 |
ORDER_PAID | 买家已付款即等待卖家发货 |
ORDER_SHIPPED | 卖家已发货 |
ORDER_COMPLETED | 订单完成 |
ORDER_CLOSE | 订单关闭 |
订单退款状态:
退款状态值 | 描述 |
---|---|
REFUND_SUCCESSED | 退款成功 |
REFUND_ING | 退款处理中 |
REFUND_CANCELLED | 退款取消 |
REFUND_REFUSE | 退款被拒绝 |
错误码:
错误码 | 描述 |
---|---|
500 | 业务异常 |
601 | 主键冲突 |