NAV

CDEK接口说明 CDEK API Reference

文档内容 Doc-content

该文档集中了大部分CDEK公开的接口技术描述

编辑者:冬星 – a.kolupaev@cdek.ru

需要订阅所有接口变更的话请发邮件 题目为【订阅CDEK接口变更】

该文档里发现错误请联系冬星, 感谢您的反馈

本技术文档编辑历史 Doc-history

已注册的ERP

以下WMS,TMS系统是已经注册的并且已经开发好对接CDEK接口的系统列表。 对接模块开发者必须提供给CDEK测试账号才可以被录入到该列表

ERP 官网 价格 + 维护费(人民币) *
K5 易宇通科技 http://kingtrans.cn 2800-15800 + 15%/年
华磊科技 http://www.sz56t.com 19 800 + 3 800/年
速递管家 http://www.rtb56.com 38 000 + 10 000/年
钮门快递系统 http://www.56track.com 20 000
易仓 http://www.eccang.com

* 是参考价格具体价格取决于不同的配置请联系ERP销售咨询

已注册的ERP设置CDEK接口

由于CDEK不是以上ERP的开发者所以设置CDEK接口方式有可能不同,具体设置接口方法请联系ERP售后咨询。 CDEK只提供对接账号 - 获取对接账号

中国国内交货:仅可用 CDEK快递、中俄快递 的服务

俄罗斯交货:其他服务(CDEK快递、中俄快递不可用)

易于通代理接口设置 Kingtrans Config

易于通CDEK代理接口设置1

易于通CDEK代理接口设置2

华磊代理接口设置 Hualei Config

华磊CDEK代理接口设置0

华磊CDEK代理接口设置1

华磊CDEK代理接口设置2

速递管家接口设置 SuDi Config

速递管家CDEK代理接口设置0

速递管家CDEK代理接口设置1

速递管家CDEK代理接口设置2

速递管家CDEK代理接口设置3

用户验证 Auth

部分接口请求需要通过用户验证,有两种验证:

  1. 按照用账号(Account)和秘钥(Secure)
  2. 按照令牌(token)

第一种验证方式 Account-Secure

用Python计算验证密钥:

import hashlib
m = hashlib.md5()

Account  ='3335f13492502568373e88adaf1aad89' #对接账号
Secure_password =  'ba9fe430acdcfd1b0266a4d6115454f2' #对接密码
Date = '2018-04-01' #当天日期

m.update(Date+'&'+Secure_password) #计算MD5散列函数
secure = m.hexdigest() #转为十六进制数字
print secure #打印出结果
# 613ed76d69d6989406244dc955f5fa94

第一种验证 – 提交对接账号和对接秘钥,获取对接账号之后可以计算出来用于验证的对接密钥

按照今天日期 Date 和账号密码 Secure_password 可以计算出来对接密钥 – secure MD5散列函数的结果

secure = md5(Date+"&"+Secure_password) 比如:

当天日期 Date = 2018-04-01

对接账号 Account = 3335f13492502568373e88adaf1aad89

对接密码 Secure_password = ba9fe430acdcfd1b0266a4d6115454f2

对接秘钥 secure = md5("2018-04-01&ba9fe430acdcfd1b0266a4d6115454f2")

第二种验证方式 Token

用Python获取验证令牌(token)

import requests
import hashlib

username = 'apiuser_xxx'        #账号
password = '5461s3ffa002'       #密码

tocken = ""
auth_url = 'http://auth.api.cdek.ru/api/tokenauth/authorize'

m = hashlib.md5()
m.update(password)
hashedPass = m.hexdigest()
headers = {'content-type' : 'application/json'}
get_token_data = {  "user": username,  "hashedPass": hashedPass}
result = requests.post(auth_url, json=get_token_data, headers=headers)

#返回成功:
{"token":"16c8ead608de41299636aa28a38aae87"}

#提交失败的话):

{
 "alerts":
  [{
      "type":"danger",
      "msg":"Неверное имя пользователя или пароль.",
          #<!-- 验证失败 - 用户名或密码不对  -->
      "errorCode":"auth_failed"
  }]
}

第二种 Token – 按照用户名和密码获取令牌(token)

获取token请求地址: http://auth.api.cdek.ru/api/tokenauth/authorize

提交的数据:

返回数据中 token 就是所需要的令牌

获取token失败

获取令牌失败返回数据:

auth_failed – 验证失败 - 用户名或密码不对

接入API说明书

开发对接流程 Integration

  1. 获取开发者密钥
  2. 获取客户合同号
  3. 获取对接账号
  4. 开始开发并测试
  5. 测试完成开始正式使用接口

1) 获取开发者密钥 Developer Key

申请资料: 开发者名称(公司或者个人姓名)、联系方式、ERP、WMS等等其他系统名称和简单介绍,网址

申请邮箱:a.kolupaev@cdek.ru (冬星)

2) 获取对接账号 Integration Account

申请资料: CDEK客户合同号 (以获得合同号请联系CDEK客户经理)、将使用的ERP系统名称 对接账号包括两个字段:

Account: 对接账号

Secure_password: 对接密码

每个客户合同号只有一个对应的对接账号

没有合同号的话可以申请对接测试账号,申请测试账号时候需要提供公司名或者个人姓名和联系方式、所在城市

申请邮箱:a.kolupaev@cdek.ru (冬星)

下单接口 Get Waybill

下单流程 Process Diagram

下单流程

下单接口 DeliveryRequest

2019年7月份的下单接口变更

2019年7月份的新格式的XML内容实例:

<?xml version="1.0" encoding="UTF-8"?>
<DeliveryRequest Account="12349209e96ece5b0545d472b739abcd" Date="2019-05-30" DeveloperKey="abcd2bc8fe919d33d671d93f16c61234" Lang="eng" Number="ZZZZZ9053038349YQ" OrderCount="1" Secure="dacb6a9512ca8bffaa08d247f84a92bc">
    <Order 
        Address="leningradskii prospekt dom 80 kvartira 13 / " 
        Comment="" 
        ItemsCurrency="CNY" 
        Number="TEST-ZZZZZ9053038342YQ" 
        Phone="9533880000" 
        SendCountryCode="CN" 
        RecCountryCode="RU" 
        SendCityPostCode="200050" 
        RecCityPostCode="622048" 
        RecipientEmail="" 
        RecipientName="Khramov Grigorii Vyacheslavovich" 
        TariffTypeCode="294" 
        DateInvoice="2019-05-30" 
        SellerAddress="Shanghai yananxi road 777 1804" 
        SellerName="Shanghai mobysel" 
        ShipperAddress="Guangzhou jixiang roud 455" 
        ShipperName="Guangzhou 56 logistics">
        <Address Flat="-" House="-" Street="leningradskii prospekt dom 80 kvartira 13 / "/>
        <Package BarCode="ZZZZZ9053038349YQ" Number="1" Weight="300.0">
            <Item Amount="1" Comment="headphone" Cost="0" Payment="0" WareKey="headphone" Weight="300.0" WeightBrutto="300.0"/>
        </Package>
    </Order>
</DeliveryRequest>

2019年7月起创建订单请求必须包含以下属性(必填的):

请求方式 Order-params

下单提交的XML标签和属性 Order-XML

用Python提交更请求:

# -*- coding: utf-8 -*-
import requests
from pprint import pprint  

input_xml_file = 'waybill-create.xml'
full_url = "http://int.cdek-express.cn/api/v1/waybill/create"

print "Request to: "+full_url
xml_data = ''
with open(input_xml_file, 'r') as content_file:
    xml_data = content_file.read()

print xml_data
r = requests.post(full_url, data = {'xml_request': xml_data}, timeout=30,  headers={"Content-Type":"application/x-www-form-urlencoded; charset=utf8"})


res = r.text.encode('utf-8')
print res

序号 标签/属性名称 格式 必需 描述
- DeliveryRequest 下单请求标签
1 DeveloperKey varchar(32) ERP开发者识别码 不可给用户显示
2 Number varchar(40) 请求序号(取消订单时候需要的,建议跟 Order->Number 一致)
3 Date Date 下单日期
4 Account varchar(255) 对接的账号 (按CDEK客户合同号签发的32位的字段)
5 Secure varchar(255) 对接密钥(计算出来的)
6 OrderCount Number 该请求中订单数量
7 Order 订单标签
7.1 Number string(40) 电商订单号或者站单号,不可以重复,必须等于Package->Barcode
7.2 SendCountryCode string(2) 备注一 始发地国家代码(中国-CN、俄罗斯-RU ISO 3166-1 二维字母)
7.3 SendCityCode integer 备注一 始发地城市ID
7.4 SendCityPostCode string(6) 备注一 始发地邮编
7.5 RecCountryCode string(2) 备注二 目的第国家代码(中国-CN、俄罗斯-RU ISO 3166-1 二维字母)
7.6 RecCityCode integer 备注二 目的地城市ID
7.7 RecCityPostCode string(6) 备注二 目的地邮编
7.8 Address 备注三 目的地地址(到门-街道楼房门号,到仓-网点代码)
7.8.1 Street string(50) 备注四 目的地街道
7.8.2 House string(30) 备注四 目的地楼号
7.8.3 Flat string(10) 备注四 目的地门号
7.8.4 PvzCode string(10) 备注四 仅自提需要提交的(到仓)目的地服务网点代码
7.9 RecipientName string(128) 收件人姓名
7.10 RecipientEmail string(255) 收件人电子邮箱地址
7.11 Phone string(255) 收件人手机号 (可隔着";“填多个 - 必须目的国家的电话,不建议填座机)
7.12 TariffTypeCode integer 服务代码
7.13 DeliveryRecipientCost float 到付代收运费金额
7.14 ItemsCurrency string(10) 申报价值币种代码(必须等于结算币种,跟中国的客户结算币种CNY)
7.15 Comment string(255) 订单特殊备注
7.16 SellerName string(255) 卖家名称
7.17 Package 包装件的标签
7.17.1 Number string(20) 包装件序号
7.17.2 BarCode string(20) 包装件条码 必须等于 Order->Number
7.17.3 Weight integer 毛重 (克)
7.17.4 SizeA integer 长度(厘米) 1-150 cm
7.17.5 SizeB integer 宽度(厘米) 1-150 cm
7.17.6 SizeC integer 高度(厘米) 1-150 cm
7.17.7 Item 产品的标签 (可多个)
7.17.7.1 WareKey string(50) SKU
7.17.7.2 Cost float 单件申报价值(结算币种)
7.17.7.3 Payment float 单件到付代收货款金额(目的地币种)
7.17.7.4 Weight integer 单件重量(克)
7.17.7.5 Amount integer 产品数量
7.17.7.6 Comment string(255) 产品详细名
7.18 DateInvoice Date 交货日期
7.19 AddService 增值服务标签
7.19.1 ServiceCode integer 增值服务代码

XML内容实例:

<?xml version="1.0" encoding="UTF-8"?>
<DeliveryRequest 
    DeveloperKey="abcdefd4621d373cade4e832627b123" 
    Number="888" 
    Date="2018-12-05" 
    Account="098f6bcd4621d373cade4e832627b4f6" 
    Secure="5abbba4119be98a196d50694359df66f" 
    OrderCount="1">
    <Order Number="TEST-163432451"  
        DeliveryRecipientCost="0" 
        SendCityPostCode="101000" 
        RecCityPostCode="443000"
        RecipientName="Sergei Alekseevich Menyaev"  
        Phone="9171155969"  
        Address="Samarskaya oblast, Samara, Artsibushevskaya, 26, 13"  
        TariffTypeCode="137">
        <Address Street="Artsibushevskaya" House="26" Flat="13" />
        <Package Number="1" BarCode="16343245" Weight="700">
            <Item 
                WareKey="1" 
                Cost="5000" 
                Payment="0.00" 
                Weight="305" 
                Amount="1" 
                Comment="iphone 6"/>
            <Item 
                WareKey="2" 
                Cost="5000" 
                Payment="0.00" 
                Weight="305" 
                Amount="1" 
                Comment="iphone 6"/>
        </Package>
    </Order>
</DeliveryRequest> 

备注一 – 有两种指定始发城市的方法:

  1. 城市ID – SendCityCode CDEK数据库的城市ID(可以在查询城市接口查询)
  2. 国家ID和邮政编码 – SendCountryCode 和 SendCityPostCode

备注二 – 有两种指定目的地城市的方法:

  1. 城市ID – RecCityCode CDEK数据库的城市ID(可以在查询城市接口查询)
  2. 国家ID和邮政编码 – RecCountryCode 和 RecCityPostCode

备注三 – 可以把地址一个字符串的提交(具体看XML内容实例)

备注四 – 根据投送模式(到仓库、到门): 如果投送模式是自提(到仓)四个项其中只需要提交服务网点代码 PvzCod, 到门的话需要提交 街道、楼号、门号

下单异常代码 Errors

下单时接口返回的异常代码:

异常代码 异常名称 – 异常解释
ERR_XML_EMPTY 没提交XML数据 提交XML并且XML的内容放在$_POST[xml_request]变量
ERR_AUTH 验证失败 提交的对接账号和秘钥不匹配
ERR_RESULT_SERVICE_EMPTY 未找到符合条件的服务 请尝试使用其他服务代码或者申请加上该服务
ERR_RECCITYPOSTCODE 未找到对应邮编 该邮编不在CDEK数据库,请申请加上邮编
ERR_PACK_WEIGHT_MIN 包裹重量过低 包裹重量不能少于100克
ERR_ORDER_DUBL_EXISTS 订单号重复 该订单号(DeliveryRequest->Order->Number)已存在,不能重复下单
ERR_WAREKEY_DUBL 产品条码重复 一个订单里不可重复产品条码(DeliveryRequest->Order->Package->WareKey)
ERR_NEED_ATTRIBUTE 没提交数据 提交的XML里缺少标签(比如ADDRESS标签等等)
ERR_RECCITYPOSTCODE_DUBL 目的地邮编对应多个城市 邮编对应多个城市无法识别具体城市
ERR_SENDCITYPOSTCODE_DUBL 始发地邮编对应多个城市 邮编对应多个城市无法识别具体城市
ERR_INVALID_WEIGHT 重量必须大于0 提交的重量要大于0
ERR_INVALID_WEIGHT 重量必须大于0 提交的重量要大于0
ERR_GOODS_CODE_MAX 产品条码过长 产品条码(DeliveryRequest->Order->Package->WareKey)不能超过50字
ERR_RECCITYCODE 目的地代码错误 提交了不正确的目的地代码,必须是数字(DeliveryRequest->Order->RecCityCode)
ERR_NOT_FOUND_RECCITY 未指定目的地 没提交目的地的邮编或者城市代码(RecCityPostCode或RecCityCode)
ERR_WEIGHT_LIMIT 超过该服务重量限制 提交的重量(DeliveryRequest->Order->Package->Weight)超过了该服务重量限制
ERR_API 调用接口失败 CDEK服务器异常请联系CDEK技术支持
ERR_SHORT_RECIPIENT_NAME 收件人姓名过短 收件人名称必须长于3个字
ERR_SENDCITYCODE 始发地代码错误 提交了不正确的始发地代码,必须是数字(DeliveryRequest->Order->SendCityCode)
ERR_GOODS_EMPTY 没有输入产品 没提交产品标签(DeliveryRequest->Order->Package->Item
ERR_CURRENCY_NOTVALID_DECLAREDCOST_CLIENT 不正确的产品报价币种 产品报价币种(ItemsCurrency)必须跟合同里面的结算币种一致
ERR_DATABASE_INSERTINTOORDERS 下单失败 CDEK服务器异常请联系CDEK技术支持
ERR_PVZ_WITH_TARIFF_MISTAKE 网点代码错误 目的地没有对应的网点代码
ERR_CASH_ON_DELIV_PAYREC_MISTAKE 目的城市不提供代收货款服务 目的城市不提供代收货款服务
ERR_INVALID_TARIFF_WITH_WEIGHT_MORE_30 重量大于30kg 该服务不支持重量大于30kg(DeliveryRequest->Order->Package->Weight)
ERR_CURRENCY_CASH_ON_DELIV_MISTAKE 提交的收件人币种不对 需要按照目的国家提交正确的币种代码
ERROR_VALIDATE_GOOD_GROS_WEIGHT_LESS_THAN_NET_WEIGHT 没提交毛重或者净重大于毛重 提交正确的毛重(WeightBrutto)

常见的问题

有什么原因能导致 ERR_RESULT_SERVICE_EMPTY – 下单返回未找到符合条件的服务有几个原因:

取消订单接口 Delete

通过该接口可以取消订单(删除订单)

请求方式 Delete-params

提交的数据 Delete-data

取消订单请求实例一 (XML):

<?xml version="1.0" encoding="UTF-8" ?>
<DeleteRequest DeveloperKey="12345670e2a14beef66fbe688657bcdef" Number="ABCDEF0034567890YQ" Account="af976a50e2a14beef66fbe688657eda1" Date="2018-08-08"  Secure="59aa6d7f28338ff8678e3078e338916b" OrderCount="1">
    <Order Number="ABCDEF0034567890YQ" /> 
</DeleteRequest>

请求失败返回的数据例子 (XML):


<?xml version="1.0" encoding="UTF-8"?>
<response>
    <DeleteRequest Msg="Удалено заказов:0" ErrMsg="Не удалено заказов:1"> 
                  <!-- 成功取消的订单数量:0       取消失败订单数量:1 -->
        <Order Number="" ErrorCode="ERR_ORDER_NOTFIND" Msg="Заказ не найден в базе СДЭК: Number=ABCDEF0034567890YQ"/>
                                                          <!-- 订单未找到 :Number=ABCDEF0034567890YQ" -->
    </DeleteRequest>
</response>

请求成功返回的数据例子 (XML):

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <DeleteRequest Msg="Удалено заказов:1" >
              <!-- 成功取消的订单数量:1 -->
        <Order Number="ABCDEF0034567890YQ" Msg="Заказ удален" />
                                         <!-- 订单取消成功 -->
    </DeleteRequest>
</response>

XML请求数据

序号 标签/属性名称 格式 必需 描述
- DeleteRequest 取消订单标签
1 DeveloperKey varchar(32) ERP开发者识别码
2 Number varchar(40) 下单时候提交的请求序号 (DeliveryRequest->Number)
3 Date Date 今天的日期
4 Account varchar(32) 对接的账号 (按CDEK客户合同号签发的32位的字段)
5 Secure varchar(32) 对接密钥(计算出来的)
6 OrderCount Number 该请求中订单数量
7 Order 订单标签
7.1 Number string(40) 网店提供的跟踪号(网店订单号),下单时候提交的请求序号 (DeliveryRequest->Order->Number)

取消订单请求失败

ERR_ORDER_NOTFIND – 没找到对应的订单

ERR_AUTH – Secure 计算错误

更新订单接口 Order-update

…需要吗?

获取物流状态接口 Status

接口说明 Status-info

通过该接口可以获取一下信息

请求方式 Status-request

请求提交的内容 Status-xml-data

python提交更请求:

# -*- coding: utf-8 -*-
import requests

filename = 'input/status-orders.xml'
url = 'http://int.cdek.ru/status_report_h.php'
#url = 'http://integration.cdek-asia.cn/status_report_h.php'

xml_data = ''
with open(filename, 'r') as content_file:
            xml_data = content_file.read()

result = requests.post(url, data = {'xml_request': xml_data}, timeout=100)
print result.status_code
print result.text.encode('utf-8')

往 http://integration.cdek.ru/status_report_h.php 提交的 input/status-orders.xml 文档的XML内容:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<StatusReport 
    DeveloperKey="af131376185245870fwh2f9096" 
    Date="2019-03-28" 
    Account="28hvll2d0sg24glsg4" 
    Secure="92nmvizkl2f0slvgsle" 
    ShowHistory="1">

    <Order DispatchNumber="1000028000"/>
    <Order DispatchNumber="1000356200"/>
    <Order DispatchNumber="1000356201"/>
    <Order DispatchNumber="1000356202"/>
    <Order DispatchNumber="1000356203"/>
    <Order DispatchNumber="1000356204"/>
</StatusReport>

php提交更请求:

<?php

$postdata =<<<xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<StatusReport Date="2019-03-28" Account="12314fqwasfeff13ec21essfad3gd12" Secure="2f8fg84fgq9w7faosdii08f1d62ehrs" ShowHistory="1" ShowReturnOrder="1" ShowReturnOrderHistory="1" >
    <ChangePeriod DateFirst="2019-03-27"/>
    <Order DispatchNumber="1133386633"/>
</StatusReport>
xml;
$apiUrl = "https://integration.cdek.ru/status_report_h.php";
$post_data = array('xml_request' => $postdata);
$stream_options = array(
    'http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded' . "\r\n",
        'timeout' => 60,
        'content' =>  http_build_query($post_data))
);
$context  = stream_context_create($stream_options);
$apiResult = file_get_contents($apiUrl, null, $context);
var_dump($apiResult);
序号 标签/属性名称 格式 必需 描述
- StatusReport 物流状态标签
1 Date datetime/date 今天的日期
2 DeveloperKey varchar(255) ERP开发者识别码
3 Account varchar(255) 对接的账号 (按CDEK客户合同号签发的32位的字段)
4 Secure varchar(255) 对接密钥(计算出来的)
5 ShowHistory boolean 是否获取物流状态历史记录
6 ShowReturnOrder boolean 是否获取退回件单号
7 ShowReturnOrderHistory boolean 是否获取退回件的物流状态历史记录
8 ChangePeriod 状态所发生时间段
9 DateFirst 时间起
10 DateLast 时间至
11 Order 订单标签 可多条
12 DispatchNumber CDEK运单号

返回的数据 Status-data

返回内容例字:

<?xml version="1.0" encoding="UTF-8"?>
<StatusReport DateFirst="2000-12-31T17:00:00+00:00" DateLast="2018-08-10T08:55:52+00:00" >
    <Order ActNumber="" Number="2080965069" DispatchNumber="1000028000"  DeliveryDate="2018-04-06T13:33:27+03:00" RecipientName="Руслан Альбертович" >
        <Status Date="2018-04-06T10:33:42+00:00" Code="4" Description="Вручен" CityCode="1081" CityName="Нальчик">
            <State Date="2018-03-21T14:54:13+00:00" Code="1" Description="Создан" CityCode="44" CityName="Москва" />
            <State Date="2018-03-21T17:32:32+00:00" Code="3" Description="Принят на склад отправителя" CityCode="44" CityName="Москва" />
            <State Date="2018-03-21T17:35:12+00:00" Code="6" Description="Выдан на отправку в г.-отправителе" CityCode="44" CityName="Москва" />
            <State Date="2018-03-21T23:00:12+00:00" Code="7" Description="Сдан перевозчику в г.-отправителе" CityCode="44" CityName="Москва" />
            <State Date="2018-03-21T23:36:53+00:00" Code="21" Description="Отправлен в г.-транзит" CityCode="44" CityName="Москва" />
            <State Date="2018-03-22T19:01:19+00:00" Code="22" Description="Встречен в г.-транзите" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-22T22:18:47+00:00" Code="13" Description="Принят на склад транзита" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-22T22:18:47+00:00" Code="19" Description="Выдан на отправку в г.-транзите" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-22T22:19:44+00:00" Code="20" Description="Сдан перевозчику в г.-транзите" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-22T22:59:19+00:00" Code="8" Description="Отправлен в г.-получатель" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-24T15:11:53+00:00" Code="17" Description="Возвращен на склад транзита" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-24T15:11:53+00:00" Code="19" Description="Выдан на отправку в г.-транзите" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-25T21:25:02+00:00" Code="20" Description="Сдан перевозчику в г.-транзите" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-25T22:32:47+00:00" Code="8" Description="Отправлен в г.-получатель" CityCode="438" CityName="Ростов-на-Дону" />
            <State Date="2018-03-26T11:13:27+00:00" Code="10" Description="Принят на склад доставки" CityCode="1081" CityName="Нальчик" />
            <State Date="2018-04-06T05:28:09+00:00" Code="11" Description="Выдан на доставку" CityCode="1081" CityName="Нальчик" />
            <State Date="2018-04-06T10:33:42+00:00" Code="4" Description="Вручен" CityCode="1081" CityName="Нальчик" />
        </Status>
        <Reason Code="" Description="" Date=""></Reason>
        <DelayReason Code="" Description="" Date="" ></DelayReason>
        <Call>
            <CallGood>
                <Good Date="2018-03-26T12:50:31+00:00" DateDeliv="2018-04-06" />
                <Good Date="2018-03-26T12:50:37+00:00" DateDeliv="2018-04-06" />
            </CallGood>
        </Call>
    </Order>
    <Order ActNumber="" Number="2066479243" DispatchNumber="1000356200"  DeliveryDate="2018-04-07T15:29:32+03:00" RecipientName="Аркадий Якубович" >
        <Status Date="2018-04-07T12:29:39+00:00" Code="4" Description="Вручен" CityCode="44" CityName="Москва">
            <State Date="2018-04-01T14:15:20+00:00" Code="1" Description="Создан" CityCode="44" CityName="Москва" />
            <State Date="2018-04-01T18:03:43+00:00" Code="10" Description="Принят на склад доставки" CityCode="44" CityName="Москва" />
            <State Date="2018-04-02T09:04:38+00:00" Code="11" Description="Выдан на доставку" CityCode="44" CityName="Москва" />
            <State Date="2018-04-02T09:13:41+00:00" Code="18" Description="Возвращен на склад доставки" CityCode="44" CityName="Москва" />
            <State Date="2018-04-02T09:13:41+00:00" Code="11" Description="Выдан на доставку" CityCode="44" CityName="Москва" />
            <State Date="2018-04-03T07:56:08+00:00" Code="18" Description="Возвращен на склад доставки" CityCode="44" CityName="Москва" />
            <State Date="2018-04-07T06:14:36+00:00" Code="11" Description="Выдан на доставку" CityCode="44" CityName="Москва" />
            <State Date="2018-04-07T12:29:39+00:00" Code="4" Description="Вручен" CityCode="44" CityName="Москва" />
        </Status>
        <Reason Code="20" Description="Частичная доставка" Date="2018-04-07T12:29:39+00:00"></Reason>
        <DelayReason Code="" Description="" Date="" >
            <State Date="2018-04-03T16:56:41+00:00" Code="47" Description="Адрес не существует" />
        </DelayReason>
        <Package Number="2066479243" BarCode="2066479243">
            <Item WareKey="2201073352678" Amount="1" DelivAmount="0" />
            <Item WareKey="2201084246850" Amount="1" DelivAmount="1" />
            <Item WareKey="654321" Amount="1" DelivAmount="0" />
        </Package>
        <Call>
            <CallGood>
                <Good Date="2018-04-01T14:15:46+00:00" DateDeliv="2018-04-02" />
                <Good Date="2018-04-03T16:56:41+00:00" DateDeliv="2018-04-07" />
            </CallGood>
            <CallFail>
                <Fail Date="2018-04-02T15:35:47+00:00" ReasonCode="3" ReasonDescription="Абонент недоступен" />
            </CallFail>
        </Call>
    </Order>
</StatusReport>
序号 标签/属性名称 格式 必有 描述
1 StatusReport 物流状态标签
1.1 DateFirst datetime/date 状态所发生时间起
1.2 DateLast datetime/date 状态所发生时间至
2 Order 订单标签 (可多个)
2.1 ActNumber string(30) 请求编码 (可以每次请求生成1,2,3,等等
2.2 Number string(30) 电商订单号
2.3 DispatchNumber integer CDEK运单号
2.4 DeliveryDate datetime 签收/未签收 日期
2.5 RecipientName string(50) 收件人姓名
2.6 ReturnDispatchNumber integer 退回件的CDEK运单号
2.7 Status 订单目前的物流状态
2.7.1 Date datetime 物理状态所发生时间UTC时间区
2.7.2 Code integer 物流状态代码
2.7.3 Description string(100) 物流状态描述(俄文)
2.7.4 CityCode integer 状态所发生城市代码(城市ID)
2.7.5 CityName string(100) 状态所发生城市名称(俄文)
2.7.6 State 状态历史记录,多个
2.7.6.1 Date datetime 物理状态所发生时间UTC时间区
2.7.6.2 Code integer 物流状态代码
2.7.6.3 Description string(100) 物流状态描述(俄文)
2.7.6.4 CityCode integer 状态所发生城市代码(城市ID)
2.7.6.5 CityName string(100) 状态所发生城市名称(俄文)
2.8 Reason 目前附加状态
2.8.1 Date datetime 附加状态所发生时间UTC时间区
2.8.2 Code integer 附加状态代码
2.8.3 Description string(100) 物流状态描述(俄文)
2.9 DelayReason 运输延迟原因
2.9.1 Date datetime 导致延迟的事件所发生时间
2.9.2 Code integer 延迟原因代码
2.9.3 Description string(100) 延迟原因描述(俄文)
2.9.4 State 延迟原因历史记录,多个
2.9.4.1 Date datetime 导致延迟的事件所发生时间
2.9.4.2 Code integer 延迟原因代码
2.9.4.3 Description string(100) 延迟原因描述(俄文)
2.10 Package 包装
2.10.1 Number string(20) 电商的订单号
2.10.2 Item 包装所包含的产品
2.10.2.1 WareKey string(20) SKU
2.10.2.2 DelivAmount 收件人收到的产品数量
2.10.2.3 Amount 下单提交的产品数量
2.11 Attempt 预约的派送时间
2.11.1 ID 派送约定内部ID
2.11.2 ScheduleCode integer 延迟原因代码
2.11.3 ScheduleDescription string(50) 延迟原因描述(俄文)
2.12 Call 电话通知收件人历史记录
2.12.1 CallGood 通知成功的通知历史记录
2.12.1.1 Good 通知成功
2.12.1.1.1 Date 通知日期
2.12.1.1.2 DateDeliv 约定的派送/自提 时间
2.12.2 CallFail 电话通知失败的通知历史记录
2.12.2.1 Fail 通知失败
2.12.2.1.1 Date 通知日期
2.12.2.1.2 ReasonCode integer 通知失败原因代码
2.12.2.1.3 ReasonDescription string(255)
2.12.3 CallDelay 电话通知改期历史记录
2.12.3.1 Delay 通知改期
2.12.3.1.1 Date 本来约定的通知日期
2.12.3.1.2 DateNext 新约定的通知日期
3 ReturnOrder 退回件包含 ActNumber, Number, DispatchNumber, DeliveryDate, RecipientName, Status, Reason, DelayReason 内容跟原件的同样

物流状态表 Status-code

代码 名称 描述
1 已办理 只下单,没入过仓
2 已删除 订单已经被删除
3 由发货人仓库接收 已经入寄件城市的仓库
4 签收 成功妥投
6 在寄件人所在城市已准备派送 在准备从寄件城市发往其他城市
7 在寄件人所在城市已交给承运方 在寄件城市货物交了给承运商
8 往收件人所在城市已发送 货物已经发了往目的城市
9 在收件人所在城市已接收 货物已经在目的城市被接好了
10 已被派送网点接收 目的城市站点已经收到了货物
11 在派送中 在目的城市正在派送
12 在目的网点侯领 在自提站点等待被收件人领取
13 在中转仓库里已被接收 货物到了中转站点
14 已通知收件人, 快件已准备派送 联系了收件人并且准备派送
15 联系不上收件人 打不通收件人
16 已退回到寄件人所在城市的仓库 在退回到寄件城市
17 已退回到中转城市的仓库 在退回到中转站点
18 已退回到收件人所在城市的仓库 派送失败退回到目的地站点
19 在中转城市已被准备派送 在中转城市准备发往其他城市
20 在中转城市已被交给承运人 在中转城市把货物已经交了给承运商
21 已被发送到中转城市 已经发好了往中转城市
22 在中转城市已被接到 在中转城市接好了货物
23 通关过程中(国外) 在国外通关过程中
24 通关过程中(俄罗斯联邦) 在俄罗斯通关过程中
25 往俄罗斯发送 通过好了海关
26 通关完毕 通过好了俄罗斯的海关

附加状态表 Additional-status

代码 名称
1 退件, 地址不正确
2 退件, 电话联系不上
3 退件, 收件人不在地址
12 退件, 拒绝收件, 商品质量有问题
4 退件, 实际重量和申报重量相差…..公斤
5 退件, 实际上没有货物
6 退件, 在交接单里面的订单号码填入了两次
7 退件, 无法派送到目的地
8 退件, 在寄件人那儿的取件时发现破碎的包装
9 退件, 拒绝收件, 在承运人包装破损
10 退件, 拒绝收件, 在我们的仓库里包装破损
11 退件, 拒绝收件, 无任何原因
13 退件, 拒绝收件, 商品不足
14 退件, 拒绝收件, 商品兑换
15 退件, 拒绝收件, 对送货时间不满意
16 退件, 拒绝收件, 已买到
17 退件, 拒绝收件, 改变主意
18 退件, 拒绝收件, 办理有错误
19 退件, 拒绝收件, 在收件人包装破损
20 部分派送
21 退件, 拒绝收件, 没钱付款
22 退件, 拒绝收件, 货物不合适
23 退件, 存货期已到
24 退件, 货没过海关
25 退件, 该快件需要报关
26 被丢失
27 没人需要, 回收利用

延迟原因 Delay-reason

代码 名称
1 快递员来不及
1 快递员来不及
2 汽车故障
3 地址不正确
4 其他
5 取消申请
6 不知道该发什么
7 货物没准备好
8 违禁品不可以发
9 拒收
11 公司无此员工
12 没有联系人
13 货物转给其他运输公司
14 快递员无法打通收件人
15 在约定的派送时间未派送
16 自提
17 派送信息在核实中

无法打通收件人的原因 Call-fail

代码 中文名称 俄文名称
1 电话占线 Телефон
2 不接电话 Абонент не берет трубку
3 无法打通 Абонент недоступен
4 电话号码不对 Неверный номер
5 电话号码未填写 Телефон не указан
6 电话无风音 Тишина
7 电话掉线 Сброс
8 挂了电话 Бросил трубку

查询轨迹 Tracing

接口描述

通过该接口可以查询任何客户的轨迹,但是要注意该接口不返回具体轨迹的时间,只返回节点日期

接口变更 Tracking-update

5月初该接口更新了,具体变化:token, lang 这俩参数现在在 HTTP header 里面了

对应的名称:

X-Auth-Token: token

X-User-Lang: lang

提交的数据,返回的数据 Tracing-data

python提交查询轨迹的请求:

# -*- coding: utf-8 -*-
import requests
from pprint import pprint

data = {"orderNumber": "1119709217"} 

token =  '' # 令牌

url = "http://tracing.api.cdek.ru/cdekApi4/tracing/getTrackingInfo"


def get_secure(date, secure_password):
    md5fun = hashlib.md5()
    md5fun.update(date+'&'+secure_password)
    secure = md5fun.hexdigest()
    return secure


print 'Sending request to: '+url+', Json data:'
pprint(data)
print 'Answer: '
try:
    print 
    r = requests.post(url, json = data, headers = {'X-Auth-Token': token, 'X-User-Lang': 'eng'})
except requests.exceptions.ConnectionError as e:
    print str(e).encode('utf-8')

print r.text.encode('utf-8')

返回的json内容例子:

{
    "orderNumber": "1119709217",
    "cityFrom": {
        "id": "44",
        "name": "Moscow"
    },
    "cityTo": {
        "id": "283",
        "name": "Yakutsk"
    },
    "senderFullName": "Zhang Yatao",
    "orderDate": "29.04.2019",
    "tariffDateEnd": "27.05.2019",
    "storageDateEnd": "26.06.2019",
    "availableTimeForDelivery": [{
            "date": "27.05.2019",
            "timeIntervals": [{
                "timeFrom": "9:00",
                "timeTo": "18:00"
            }, {
                "timeFrom": "18:00",
                "timeTo": "21:00"
            }]
        }
    ],
"receiverAddress": "Zavodskaya stree 30 apartment 6",
"receiverInitials": "Y.N.P.",
"packagesCount": 1,
"weight": 0.37,
"tariff": "238",
"status": {
    "code": "status_general_in_progress",
    "name": "In transit"
},
"trackingDetails": [{
    "statusName": "Accepted in sender city",
    "cityCode": "44",
    "cityName": "Moscow",
    "date": "29.04.2019"
}, {
    "statusName": "Shipped to transit city",
    "cityCode": "44",
    "cityName": "Moscow",
    "date": "13.05.2019"
}],
"canBeChanged": true,
"currentDateTimeCityTo": "20.05.2019 12:15:03"
}

提交的数据实例:

HTTP Headers 包含:

X-Auth-Token - 令牌

X-User-Lang - 语言(eng,rus,zho)

JSON内容: { “orderNumber”: “1048344869” }

参数 位置 描述 必需
X-Auth-Token HTTP HEADER 令牌用于验证
X-User-Lang HTTP HEADER 返回信息的语言
orderNumber JSON BODY 需要产生的令牌用于验证

返回的数据:

序号 名称 描述 格式
1 orderNumber CDEK运单号 string
2 cityFrom 始发城市
2.1 id 城市ID number
2.2 name 城市名 string
3 cityTo 目的城市
3.1 id 城市ID number
3.2 name 城市名 string
4 senderFullName 寄件人全名 string
5 agreedCourierDate 已跟收件人约好的派送日期 日-月-年 Date
6 agreedCourierStartTime 已跟收件人约好的派送时间起 点:分钟 Time
7 agreedCourierEndTime 已跟收件人约好的派送时间至 点:分钟 Time
8 orderDate 下单日期 Date
9 tariffDateEnd 派送最晚日期 (有时空的) Date
10 storageDateEnd 储存免费日期至 Date
11 receiverAddress 收件人(或派送站或自取箱的)详细地址 string
12 receiverStockType 派送站类型(仅派送模式到库时候会出现的) Number
13 receiverStockSystemName CDEK网点代码 比如 “MSK38”是莫斯科网点之一 string
14 receiverStockSchedule 目的网点的营业时间表
14.1 id 系统内ID
14.2 weekdayBegin 从星期几(1-7)
14.3 weekdayEnd 到星期几(1-7)
14.4 worktimeBegin 营业开始时间
14.5 worktimeEnd 营业结束时间
15 receiverStockPhone 目的网点电话号码
15.1 id 系统内ID Number
15.2 phoneType 0-固定电话,1-手机电话 Number
15.3 phoneNumber 电话号码 string
16 weight 总重量 (公斤,kg) Real
17 tariff 运费率代码 (服务代码) number
18 status 物流简短动态(只包括动态名称)
18.1 code 简短动态代码 Number
18.2 name 简短动态名称 string
19 trackingDetails 物流动态 Array
19.1 statusName 物流动态名称 string
19.2 cityCode 动态所发生的城市ID Number
19.3 cityName 动态所发生的城市名称 string
19.4 date 动态所发生的日期 Date
20 canBeChanged 可以通过官网修改派送地点或时间 Boolean
21 currentDateTimeCityTo 目前的派送日期时间
22 availableTimeForDelivery 可以修改派送所可能的时间段(可以忽略)
23 failReasonText 派送失败原因 string

receiverStockType 1 – CDEK网点,2 – 取件箱

查询服务网点接口 Branch

通过该接口可以查到CDEK服务网点的联系方式、地址、位置

接口地址 Branch-api

请求网址: http://integration.cdek.ru/pvzlist/v1/json

Method: GET

筛选参数 Branch params:

参数 描述 类型 必填
citypostcode 目的地城市的邮编 string
cityid CDEK城市ID integer
type 服务网点类型 (PVZ-网点、POSTOMAT-自提柜、ALL-全部) string(8)
countryid CDEK国家ID(1-俄罗斯,138-中国) integer
regionid CDEK州省ID integer
havecashless 接收无现金支付方式 1-是 0-否 integer
allowedcod 接收到付代收款 1-是 0-否 integer
isdressingroom 有试衣间 1-是 0-否 integer
weightmax 包裹最大接收的重量 kg integer
lang 查询结果语言 (rus-俄文、zho-中文、eng-英文) string(3)
takeonly 仅自提(不收货) boolean

URL例子:

http://integration.cdek.ru/pvzlist/v1/json?countryid=138&lang=zho – 查询中国的服务网点,结果为中文

http://integration.cdek.ru/pvzlist/v1/json?citypostcode=690003&lang=zho – 根据邮编690003查询服务网点,结果为中文

http://integration.cdek.ru/pvzlist/v1/json?countryid=1&lang=rus – 查询俄罗斯的服务网点,结果为俄文

http://integration.cdek.ru/pvzlist/v1/json?lang=zho – 查询全部服务网点,结果为中文

返回结果描述 Branch result

GET http://integration.cdek.ru/pvzlist/v1/json?cityid=22887&lang=zho (json 结果):

{
  "pvz": [
    {
      "code": "XXX1",
      "postalCode": "161005",
      "name": "合作",
      "countryCode": "138",
      "countryName": "中国",
      "regionCode": "884",
      "regionName": "黑龙江省",
      "cityCode": "22887",
      "city": "黑河市",
      "workTime": "周一至周日 08:00-20:00",
      "address": "合作区弘发粮苑26号门市",
      "fullAddress": "中国黑龙江省黑河市合作区弘发粮苑26号门市",
      "phone": "+8613845677246",
      "note": "",
      "coordX": "127.489309",
      "coordY": "50.242221",
      "type": "PVZ",
      "ownerCode": "cdek",
      "isDressingRoom": "true",
      "haveCashless": "true",
      "allowedCod": "true",
      "nearestStation": "",
      "metroStation": "",
      "site": "",
      "email": "",
      "qqId": "",
      "addressComment": "",
      "workTimeYList": [
        {
          "day": "1",
          "periods": "08:00/20:00"
        },
        {
          "day": "2",
          "periods": "08:00/20:00"
        },
        {
          "day": "3",
          "periods": "08:00/20:00"
        },
        {
          "day": "4",
          "periods": "08:00/20:00"
        },
        {
          "day": "5",
          "periods": "08:00/20:00"
        },
        {
          "day": "6",
          "periods": "08:00/20:00"
        },
        {
          "day": "7",
          "periods": "08:00/20:00"
        }
      ],
      "phoneDetailList": [
        {
          "number": "+8613845677246"
        }
      ]
    }
  ]
}

返回的结果为json格式,Pvz是服务网点列表,其中每一个网点包含以下参数:

参数 描述 类型 必填
Code 服务网点代码 string(10)
PostalCode 网点所在城市的邮编 string(10)
Name 网点名称 string(50)
CityCode CDEK城市ID integer
City 城市名称 string(50)
WorkTime 营业时间 string(100)
Address 详细地址 string(255)
FullAddress 国家+州省名+城市名+详细地址 string(255)
Phone 联系方式 phone
Note 特殊备注 string(255)
coordX 经度 float
coordY 纬度 float
WeightLimit 重量限制
WeightMin WeightLimit的子项 能收的最大重量 float
WeightMax WeightLimit的子项 最小重量 float
CountryCode CDEK国家ID(1-俄罗斯,138-中国) integer
CountryName 国家名称 string(50)
RegionCode 州省ID integer
RegionName 州省名称 string(50)
IsDressingRoom 有试衣间 “true"、"false” boolean
HaveCashless 支持无现金支付方式 “true"、"false” boolean
AllowedCod 支持到付 “true"、"false” boolean
NearestStation 附近的交通站 string(50)
Site 网站网址 string(255)
MetroStation 附近的地铁站 string(50)
workTimeYList boolean
day workTimeYList 日期序号(1-7) integer
periods workTimeYList 营业时间段 string(20)
OfficeImage 服务网点相册
url OfficeImage的子项 图片网址 string(255)
OfficeHowGo 地图
url OfficeHowGo的子项 图片网址 string(255)

查询运费时效接口 Calculator

通过该接口可以查到运费和时效,目的地是否有具体CDEK提供的服务

接口地址 calc-api

http://api.cdek.ru/calculator/calculate_price_by_json.php

Content-Type: application/json

同样可以用http或者https

提交的数据 calc-data

计算运费请求实例一 (json):

{ 
    "version":"1.0",
    "dateExecute":"2012-07-27", 
    "authLogin":"098f6bcd4621d373cade4e832627b4f6", 
    "secure":"396fe8e7dfd37c7c9f361bba60db0874", 
    "senderCityId":"270", 
    "receiverCityId":"44", 
    "tariffId":"137", 
    "goods": 
        [ 
            { 
                "weight":"0.3", 
                "length":"10", 
                "width":"7", 
                "height":"5" 
            }, 
            { 
                "weight":"0.1", 
                "volume":"0.1" 
            } 
        ] 
} 

提交请求时候要注意:

计算运费时效返回 calc-responce

计算接口返回数据 (json):

{
 "error" : [ {
   "code" : 3, //未找到符合条件的服务
   "text" : "Невозможно осуществить доставку по этому направлению при заданных условиях.",
   "tariffId" : 137
 }, {
   "code" : 3,
   "text" : "Невозможно осуществить доставку по этому направлению при заданных условиях.",
   "tariffId" : 233
 } ],
 "results" : [ {
   "price" : "5220.0",
   "deliveryPeriodMin" : 3,
   "deliveryPeriodMax" : 4,
   "deliveryDateMin" : "2012-08-01",
   "deliveryDateMax" : "2012-08-02",
   "tariffId" : 11,
   "priceByCurrency" : 5220.0,
   "currency" : "RUB"
 } ]
}

运费计算接口错误代码 calc-error-code

异常代码 描述
0 系统内错误,请联系CDEK技术支持
1 您提交的接口版本已经不支持的。
2 验证失败
3 未找到符合条件的服务
4 提交的包裹的信息不符规则(goods的内容)
5 没提交包裹(goods的内容)
6 没提交运费率代码
7 没提交始发城市
8 没提交目的城市
9 没提交预计发货日期(可提交了验证信息)
10 派送模式不对
11 格式不对
12 译码失败,预料收
13 提交的始发邮编未找到在CDEK数据库
14 提交的寄件人的邮编属于两个或更多城市,寄件人的城市不明确
15 提交的目的邮编未找到在CDEK数据库
16 提交的收件人的邮编属于两个或更多城市,收件人的城市不明确

货币表格 currency

货币代码 对应的国家的币种
RUB 俄罗斯卢布
USD 美元
EUR 欧元
KZT 坚戈(哈萨克斯坦)
GBP 镑(英国)
CNY 人民币(中国)
BYN 白俄罗斯卢布
UAH 格里夫纳(乌克兰)
AMD 德拉姆(亚美尼亚)
KGS 索姆(吉尔吉斯坦)

服务表格 Services

以下服务列表仅参考信息,请用查询运费时效接口查询当天所有可用的服务

服务代码是下单时候提交的TariffTypeCode也是计算运费时候提交的tariffId

服务代码 服务名称 派送模式 重量限制 服务类别
136 快件 库到库 (Parcel W-W) 30 kg一下 仅网店
137 快件 库到门 (Parcel W-D)
138 快件 门到库 (Parcel D-W)
139 快件 门到门 (Parcel D-D)
233 经济性快件 库到门 (Economy Parcel W-D) 50 kg一下
234 经济性快件 库到库 (Economy Parcel W-W)
291 CDEK快递 库到库 (CDEK Express W-W)
293 CDEK快递 门到门 (CDEK Express D-D)
294 CDEK快递 库到门 (CDEK Express W-D)
295 CDEK快递 门到库 (CDEK Express D-W)
243 中俄快递 库到库 (China Express W-W)
245 中俄快递 门到门 (China Express D-D)
246 中俄快递 库到门 (China Express W-D)
247 中俄快递 门到库 (China Express D-W)
1 小包快递 门到门 (Express Light D-D) 30kg以下
10 小包快递 库到库 (Express Light W-W)
11 小包快递 库到门 (Express Light W-D)
12 小包快递 门到库 (Express Light D-W)
238 间断性小包快递 库到门 (Express Light Inerval W-D)
239 间断性小包快递 库到库 (Express Light Inerval W-W)
5 经济性特快 库到库 (Economy express W-W)
15 重货快递 库到库 (Express heavy weight W-W) 30kg以上
16 重货快递 库到门 (Express heavy weight W-D)
17 重货快递 门到库 (Express heavy weight D-W)
18 重货快递 门到门 (Express heavy weight D-D)
57 9点之前的特快 门到门 (Super express till 9 D-D) 5kg以下
58 10点之前的特快 门到门 (Super express till 10 D-D)
59 12点之前的特快 门到门 (Super express till 12 D-D)
60 14点之前的特快 门到门 (Super express till 14 D-D)
61 16点之前的特快 门到门 (Super express till 16 D-D)
3 18点之前的特快 门到门 (Super express till 18 D-D)
62 干线快递 库到库 (Main express W-W)
63 干线特快 库到库 (Main super express W-W)

服务描述

派送模式表

代码 名称 – 派送模式解释
1 门到门 – CDEK快递员上门取货并送到门
2 门到库 – CDEK快递员上门取货并送到仓库(自提)
3 库到门 – 客户把货件送到CDEK仓库然后CDEK快递员送货上门
4 库到库 – 客户把货件送到CDEK仓库然后CDEK把货物送到另外一个仓库(自提)

增值服务 Additional Services

代码 名称 描述
2 保险 自动加上的,下单不需要提交
3 周末派送 +300卢布
4 周末发送 +300卢布
5 重货 75至200kg+18卢布/kg;    >200kg+25卢布/kg
6 超尺寸货 体积重量 < 实际重量的话并且单边 > 150cm  运费*1.3
7 危险货物 运费*1.5 (不收禁品)
8 快递员等待时间超过15分钟 +170卢布
9 在收件处等待时间15分钟以上 +170卢布
10 存货 7天免费储存 尺寸不超25*40*60 – 15卢布/天; 尺寸不超25*40*60 – 30卢布/天
13 其他 被CDEK财务加上的附加费用
14 遥远的地方 在遥远的地方上门(收/送)货
15 第二次取送 快递员第二次上门(收/送)货
16 在寄件人所在城市取件
17 在收件人所在城市派送
20 罚金
23 木条包装 打木架
24 纸箱一包装 310*215*280mm <=10kg – 30卢布
25 纸箱一包装 430*310*280mm <=15kg – 45卢布
26 快递员等候 170卢布/小时 3个小时起
27 短信通知 签收短信通知寄件人
28 货物加工
29 分货 分拣
30 试衣 快递员等待30分钟
31 递交给收件人手中 要求收件人提供身份证件
32 签收底单
33 用手提送到楼上
34 用电梯送到楼上
35 电话通知 派送之前电话通知收件人
36 部分派送 允许收件人只收部分产品
37 货物检查 到付的话 可以先看货再付款
38 晚上发运 晚上发货 +300卢布
39 晚上派送 晚上派送 +300卢布
40 保暖 运输中可保持一定的温度
41 退回文件 文件退件
42 代理费
44 网上收费 在线收款
45 标准纸箱-S 20x19x13cm
46 标准纸箱-M 20x19x13cm
47 标准纸箱-L 31x26x38cm

查询城市接口 City API

搜索城市、对应的邮编(俄文)工具 City rus

ID города/城市ID
Регион/州省
Индексы/邮编

城市列表 City XLS

可以下载XML表格(城市列表和对应的ID和邮编)

本表格包含以下列:

列名 内容描述 例子
ID 城市ID 286
City (ru) 城市名(俄文) Благовещенск, Амурская область
City (en) 城市名(英文) Blagoveschensk
City (ch) 城市名(中文) 布拉戈维申斯克
Postcodes 邮编(隔着逗号) 675000,675001,675002…
Region (ru) 省会名(俄文) Амурская обл.
Region ID 省会ID 56
Region (en) 省会名(英文) Amur Oblast
Region (ch) 省会名(中文) 阿穆尔州
Country (en) 国家名(英文) Russia

常用城市列表 Commonly used cities

城市 城市ID 邮编
广州 6684 510000
深圳 7157 518000
义乌 16770 322000
莫斯科 44 101000
海参崴 288 690000
上海 12683 200050
绥芬河 16769 157300
北京 10150 100000

查询城市接口 City-autocomplete

通过该接口可以按照输入的城市名或部分的城市名查询到城市ID,支持中文、英文、俄文。

请求数据 (json):

{    
    "lang": "zho",
    "limit":3,
    "field": "term",
    "value": "新西伯利"
}

返回的数据 (json):

{
  "items": [
    {
      "code": "270",
      "name": "新西伯利亚",
      "lang": "zho",
      "countryCode": "1",
      "countryName": "俄罗斯",
      "countryIso": "RU",
      "isResponsibilityCenter": true,
      "active": true
    },
    {
      "code": "734",
      "name": "丘雷姆,新西伯利亚州",
      "lang": "zho",
      "countryCode": "1",
      "countryName": "俄罗斯",
      "countryIso": "RU",
      "isResponsibilityCenter": false,
      "active": true
    },
    {
      "code": "750",
      "name": "乌宾斯科耶,新西伯利亚州",
      "lang": "zho",
      "countryCode": "1",
      "countryName": "俄罗斯",
      "countryIso": "RU",
      "isResponsibilityCenter": false,
      "active": true
    }
  ]
}

请求方式

提交的数据

序号 名称 描述
1 lang 语言 (zho、rus、eng)
2 limit 返回城市数量<=50
3 field 固定的内容= “term”
4 value 搜索输入的内容(城市名)

返回的数据

错误返回实例:

{
    "success": false,
    "errors": [
        {
            "errorCode": "exceed_maximum_allowable_limit",
            "errorMessage": "Превышено максимальное количество возвращаемых сущностей" //март 2016 это 1000шт
        }
    ]
}
序号 名称 描述
1 items List – 查到的城市列表
1.1 code 城市ID
1.2 name 城市名称
1.3 lang 语言 (zho、rus、eng)
1.4 countryCode 国家ID(1-俄罗斯,138-中国)
1.5 countryName 国家名称
1.6 countryIso 国家ISO国家代码
1.7 isResponsibilityCenter 内部参数)
1.8 active 是否活跃城市)

重量推送(入仓前) RMSR-1

用Python提交更新重量请求:

import requests
import hashlib

url = "http://rmsr.api.cdek.ru/remeasure/create"
headers = {'content-type' : 'application/json'}  

data  = {
    "date": '2018-12-10',
    "account": "abcdef31742309effff223", #客户验证账号 
    "secure": "387f300be382982402ac389", #客户验证秘钥
    # 账号和秘钥不提交用因为选了token验证方式
    "orderCount": "1", 
    "orders": [{
        "dispatchNumber": "1087319386", #CDEK运单号 
        "items": [{
            "barcode": "ITEM1341", #包裹条码
            "weight": "1200", #重量(单位:克)  
            "sizeA": 20, #20.0 不可以 - 尺寸必须整数并不可包含.,符合
            "sizeB": 15,
            "sizeC": 15
            # 尺寸不是必填项

            }]
        }]
    }

result = requests.post(url, json=data, headers=headers)

电商下单之后可通过该接口推送重量(仅入仓之前)

请求地址http://rmsr.api.cdek.ru/remeasure/create

HTTP请求中Content-Type(内容类型属性): “Content-Type”: "application/json"

参数 描述 数据格式 是否必需
1 date 日期(今天) Date
2 account 账号 varchar(255)
3 secure 密钥 varchar(255)
5 orderCount 运单数量 integer
6 orders 需要修改运单列表 Array
7.1 dispatchNumber CDEK运单号 integer
7.2 items 包裹的内容 Array
7.2.1 barcode 包裹代码 varchar(20)
7.2.2 weight 重量(克) integer 是(备注二)
7.2.3 sizeA 尺寸(长度,厘米) integer 是(备注二)
7.2.4 sizeB 尺寸(宽度,厘米) integer 是(备注二)
7.2.5 sizeC 尺寸(高度,厘米) integer 是(备注二)

更新重置返回数据(更新失败):


{"order":
    [ 
        {
            "number":"KYTCD7052201121YQ",
            "dispatchNumber":"1047042944",
            "success":false,
            "errorCode":"ERR_WRONG_STATUS",
            "msg":"Заказ должен быть в статусе 1 или 3. Статус заказа: 4"
        }
    ],
    "errors":[]
}

更新重置返回数据(更新成功):

{
"orders": [
    {
        "number": "ORDER12294108",  //网店的运单跟踪号
        "dispatchNumber": "1086518471", //CDEK运单号
        "success": "true"
    },
    {
        "number": "网店的运单跟踪号",
        "dispatchNumber" :" CDEK运单号",
        "success": "false",
        "errorCode": "错误代码",
        "msg": "错误解释"
    },
    {
        "msg": "总结:修改好了一个运单"
    }]
}

返回数据中 orders列表中凡是包含number是更新具体运单请求结果 一个请求中运单数量不能超过1000票

更新重量接口错误代码

错误代码 描述
ERR_AUTH 验证失
ERR_TOO_MANY_ORDERS 一个请求中运单数量超过1000票
ERR_JSON_VALIDATION JSON格式不正确
ERR_INNER_ERROR 连接不上API的端口
ERR_ORDER_NOT_FOUND 无法找出该运单
ERR_WRONG_STATUS 运单物流动态不是“已办理”
ERR_NO_PACKAGE_FOUND 没找出该包裹代码相对的条码
ERR_NOT_INTEGER 重量和尺寸必须整数(不可包含“.,”符合)
EMPTY_××× 没提交×××属性