python实现查物流快递鸟接口(通用接口)
import requests
import base64
import hashlib
import json
def get_logistics_info(number, code):
def get_dataSign(req_data, appKey):
md5 = hashlib.md5()
md5.update(req_data.encode('utf-8'))
md5.update(appKey.encode('utf-8'))
return base64.b64encode(md5.hexdigest().encode('utf-8'))
api_key = '9fae1305-3f0c-4d91-8312-**********' # 需要注册完获取
user_id = 13***** # 快递鸟的用户ID需要注册完获取
order_num = number # 运单编号
ShipperCode = code # 快递公司编码,这个是圆通的
url = 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx'
order_data = {
"ShipperCode": ShipperCode,
"LogisticCode": order_num,
}
data = {
"RequestData": json.dumps(order_data).encode('utf-8'),
"EBusinessID": user_id,
"RequestType": 1002,
"DataSign": get_dataSign(json.dumps(order_data), api_key),
}
headers = {
"Content-Type": "application/x-www-form-urlencoded;charset=utf-8",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36",
}
response = requests.post(url=url, data=data, headers=headers)
return response.content.decode('utf-8')
ret = get_logistics_info('YT9776941986622','YTO')
print(ret)
#快递公司编码:
常用 顺丰速运 SF
百世快递 HTKY
中通快递 ZTO
申通快递 STO
圆通速递 YTO
韵达速递 YD
邮政快递包裹 YZPY
EMS EMS
天天快递 HHTT
京东快递 JD
优速快递 UC
德邦快递 DBL
宅急送 ZJS
本接口不完美的地方就是收费
代码解释:
快递鸟文档说明:
1请求系统级参数说明:
RequestData(必须):请求内容需进行URL(utf-8)编码。请求内容JSON格式,须和DataType一致。
解说:上面的参数大概意思是说:你要请求的内容肯定是快递单号,和快递公司,并且请求的内容必须是json格式,所以:
oerse_num = 73171960508210 ShipperCode = YTO order_data = { "ShipperCode":ShipperCode, "LogisticCode": order_num, } data = { "RequestData":json.dumps(order_data).encode('utf-8'), }
2EBusinessID(必须):商户ID
这个没啥可说的,每个账号都有一个商户ID
3RequestType(必须):请求指令类型:
本例中用的是1002:即开通账户一个月内可免费使用,一个月后关闭测试权限,快递鸟查询物流是收费的,收费的请求指令是8001或8002(此内容是在快递鸟官方对接人给的pdf文档中找到的)
4DataSign(必须):数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码,最后 进行URL(utf-8)编码
#把(请求内容(未编码)+AppKey)进行MD5加密 md5 = hsahlib.md5() md5.update(req_data.encode('utf-8')) md5.update(appKey.encode('utf-8')) 然后Base64编码 base64.b64encode(md5.hexdigest()) 最后进行utf-8编码 base64.b64encode(md5.hexdigest().encode('utf-8'))
5DataType请求返回数据类型(可选)

浙公网安备 33010602011771号