快递100python快递查问接口-一次性接入顺丰、京东、申通、圆通、韵达、中通、天天、百世、邮政、EMS等支流快递公司,只须要复制源码,并将局部参数批改为您的账户参数即可。
此python接口demo目录内容包含:快递公司物流轨迹地图接口、单号智能辨认快递公司接口、实时查问物流状态接口和订阅物流状态揭示接口、电子面单打印接口。python快递查问接口示例仅用于展现快递100物流查问接口的对接流程,其中的API密钥须要注册获取,您可点击拜访https://api.kuaidi100.com接申请收费接口,如果须要人工帮忙,能够征询快递100API技术人员,此服务不收取任何费用。
智能判断示例代码
# coding = utf-8import requestsclass KuaiDi100: def __init__(self): self.key = '' # TODO 客户受权key self.url = 'https://www.kuaidi100.com/autonumber/auto' # 申请地址 def auto_number(self, num): """ 智能单号辨认 :param num: 快递单号 :return: requests.Response.text """ req_params = {'key': self.key, 'num': num} return requests.post(self.url, req_params).text # 发送申请result = KuaiDi100().auto_number('YT9693083639795')print(result)
电子面单打印接口
# coding = utf-8import hashlibimport jsonimport timeimport requestsclass KuaiDi100: def __init__(self): self.key = '' # TODO 客户受权key self.secret = '' # TODO 电子面单secret self.url = 'https://poll.kuaidi100.com/print/billparcels.do' # 申请地址 def submit(self, param, settings): """ 发货单打印 :param param: 模板配置信息和自定义参数信息 :param settings: 纸张配置信息 :return: requests.Response.text """ timestamp = str(time.time()) md = hashlib.md5() param_str = json.dumps(param) temp_sign = param_str + timestamp + self.key + self.secret md.update(temp_sign.encode()) sign = md.hexdigest().upper() req_params = { 'method': 'billparcels', 'key': self.key, 't': timestamp, 'sign': sign, 'param': param_str, 'settings': json.dumps(settings) } return requests.post(self.url, req_params).text # 发送申请param = { "tempid": "xxxx", # 模板编码,通过治理后盾的打印发货单模板配置信息获取 "siid": "xxxx", # 打印设施码,通过打印机输入的设施码进行获取 "callBackUrl": "https://www.baidu.com/fhd/callback", # 打印状态对调地址 "petName": "kd100", # 自定义参数 "recName": "小百", # 自定义参数 "recPhone": "10086", # 自定义参数 "payTime": "2021-01-15 15:40:55", # 自定义参数 "expressName": "德邦快递", # 自定义参数 "printTime": "2021-01-15 15:41:30", # 自定义参数 "printCount": "1", # 自定义参数 "address": "广东省深圳市南山区金蝶软件园", # 自定义参数 "total": "21", "remark": "购物小票作为购物凭证,请妥善保存,您有任何疑难,请咨询服务热线 123456798", # 自定义参数 "img0": { # 图片参数,多图片时用img0,img1,img2等追加 "type": "code_128", "content": "887921256577", "width": 350, "height": 100 }, "tab0": [ # 表格参数,多表格时用tab0,tab1,tab2等追加对象 { "prodName": "热敏纸", "count": "5", "specs": "76*130", "unitPrice": "30", "price": "150" }, { "prodName": "热敏纸", "count": "10", "specs": "100*180", "unitPrice": "50", "price": "500" }, { "prodName": "续打纸", "count": "5", "specs": "", "unitPrice": "40", "price": "200" }, { "prodName": "云打印机", "count": "1", "specs": "二代", "unitPrice": "499", "price": "499" } ]}settings = { "pageWidth": 100, # 纸张宽,单位mm,默认值:100 "pageHeight": 180, # 纸张高,单位mm ,续打纸张时,该字段设置为null或空串 "margins": { # 边距 "top": 5, # 上边距,单位:mm,默认:0 "bottom": 5, # 下边距,单位:mm,默认:0 "left": 5, # 右边距,单位:mm,默认:0 "right": 5 # 左边距,单位:mm,默认:0 }}result = KuaiDi100().submit(param, settings)print(result)
# coding = utf-8import hashlibimport jsonimport requestsclass KuaiDi100: def __init__(self): self.key = '' # TODO 客户受权key self.customer = '' # TODO 查问公司编号 self.url = 'https://poll.kuaidi100.com/poll/maptrack.do' # 申请地址 def map_track(self, com, num, phone, ship_from, ship_to, orderTime): """ 快递查问地图轨迹 :param com: 查问的快递公司的编码,一律用小写字母 :param num: 查问的快递单号,单号的最大长度是32个字符 :param phone: 收件人或寄件人的手机号或固话(也能够填写后四位,如果是固话,请不要上传分机号) :param ship_from: 出发地城市,省-市-区,非必填,填了有助于晋升签收状态的判断的准确率,请尽量提供 :param ship_to: 目的地城市,省-市-区,非必填,填了有助于晋升签收状态的判断的准确率,且达到目的地后会加大监控频率,请尽量提供 :param orderTime: 订单下单工夫,格局为(yyyy-MM-dd HH:mm:ss)如:2020-12-16 12:59:59 :return: requests.Response.text """ param = { 'com': com, 'num': num, 'phone': phone, 'from': ship_from, 'to': ship_to, 'show': '0', # 返回数据格式。0:json(默认),1:xml,2:html,3:text 'order': 'desc', # 返回后果排序形式。desc:降序(默认),asc:升序 'orderTime': orderTime } param_str = json.dumps(param) # 转json字符串 # 签名加密, 用于验证身份, 按param + key + customer 的程序进行MD5加密(留神加密后字符串要转大写), 不须要“+”号 temp_sign = param_str + self.key + self.customer md = hashlib.md5() md.update(temp_sign.encode()) sign = md.hexdigest().upper() request_data = {'customer': self.customer, 'param': param_str, 'sign': sign} return requests.post(self.url, request_data).text # 发送申请result = KuaiDi100().map_track('yuantong', 'YT9693083639795', '', '广东省江门市', '广东省深圳市', '2021-08-01 20:04:44')print(result)
物流轨迹接口
# coding = utf-8import jsonimport requestsclass KuaiDi100: def __init__(self): self.key = '' # TODO 客户受权key self.url = 'https://poll.kuaidi100.com/poll' # 申请地址 def submit(self, com, num, phone, ship_from, ship_to): """ 物流轨迹订阅 :param com: 快递公司编码 :param num: 快递单号 :param phone: 收件人或寄件人的手机号或固话(也能够填写后四位,如果是固话,请不要上传分机号) :param ship_from: 出发地城市,省-市-区,非必填,填了有助于晋升签收状态的判断的准确率,请尽量提供 :param ship_to: 目的地城市,省-市-区,非必填,填了有助于晋升签收状态的判断的准确率,且达到目的地后会加大监控频率,请尽量提供 :return: requests.Response.text """ param = { 'company': com, 'number': num, 'from': ship_from, 'to': ship_to, 'key': self.key, 'parameters': { 'callbackurl': 'https://www.baidu.com/kd100/callback', # 回调接口的地址。如果须要在推送信息回传本人业务参数,能够在回调地址URL前面拼接下来,例如:https://www.baidu.com/kd100/callback?orderId=123 'salt': None, # 签名用随机字符串。32位自定义字符串。增加该参数,则推送的时候会减少sign给贵司校验音讯的可靠性 'resultv2': '1', # 增加此字段示意开明行政区域解析性能。0:敞开(默认),1:开明行政区域解析性能 'autoCom': '0', # 增加此字段且将此值设为1,则示意开始智能判断单号所属公司的性能,开启后,company字段可为空,即只传运单号(number字段),我方收到后会依据单号判断出其所属的快递公司(即company字段)。倡议只有在无奈晓得单号对应的快递公司(即company的值)的状况下才开启此性能 'interCom': '0', # 增加此字段且将此值设为1,则示意开启国际版,开启后,若订阅的单号(即number字段)属于国内单号,会返回登程国与目标国两个国家的跟踪信息,本性能临时只反对邮政体系(国内类的邮政小包、EMS)内的快递公司,若单号我方辨认为非国内单,即便增加本字段,也不会返回destResult元素组 'departureCountry': '', # 登程国家编码,interCom=1的国内单号最好提供该值 'departureCom': '', # 登程国家快递公司的编码,interCom=1的国内单号最好提供该值 'destinationCountry': '', # 目标国家编码,interCom=1的国内单号最好提供该值 'destinationCom': '', # 目标国家快递公司的编码,interCom=1的国内单号最好提供该值 'phone': phone } } req_params = { 'schema': 'json', # 查问公司编号 'param': json.dumps(param) # 参数数据 } return requests.post(self.url, req_params).text # 发送申请result = KuaiDi100().submit('yuantong', 'YT9693083639795', '', '江门市', '深圳市')print(result)
物流轨迹实时查问接口
# coding = utf-8import hashlibimport jsonimport requestsclass KuaiDi100: def __init__(self): self.key = '' # TODO 客户受权key self.customer = '' # TODO 查问公司编号 self.url = 'https://poll.kuaidi100.com/poll/query.do' # 申请地址 def track(self, com, num, phone, ship_from, ship_to): """ 物流轨迹实时查问 :param com: 查问的快递公司的编码,一律用小写字母 :param num: 查问的快递单号,单号的最大长度是32个字符 :param phone: 收件人或寄件人的手机号或固话(也能够填写后四位,如果是固话,请不要上传分机号) :param ship_from: 出发地城市,省-市-区,非必填,填了有助于晋升签收状态的判断的准确率,请尽量提供 :param ship_to: 目的地城市,省-市-区,非必填,填了有助于晋升签收状态的判断的准确率,且达到目的地后会加大监控频率,请尽量提供 :return: requests.Response.text """ param = { 'com': com, 'num': num, 'phone': phone, 'from': ship_from, 'to': ship_to, 'resultv2': '1', # 增加此字段示意开明行政区域解析性能。0:敞开(默认),1:开明行政区域解析性能,2:开明行政解析性能并且返回登程、目标及以后城市信息 'show': '0', # 返回数据格式。0:json(默认),1:xml,2:html,3:text 'order': 'desc' # 返回后果排序形式。desc:降序(默认),asc:升序 } param_str = json.dumps(param) # 转json字符串 # 签名加密, 用于验证身份, 按param + key + customer 的程序进行MD5加密(留神加密后字符串要转大写), 不须要“+”号 temp_sign = param_str + self.key + self.customer md = hashlib.md5() md.update(temp_sign.encode()) sign = md.hexdigest().upper() request_data = {'customer': self.customer, 'param': param_str, 'sign': sign} return requests.post(self.url, request_data).text # 发送申请result = KuaiDi100().track('yuantong', 'YT9693083639795', '', '广东省江门市', '广东省深圳市')print(result)