关于python:python接入全国1200家快递查询和地图轨迹接口支持顺丰京东申通圆通韵达中通天天百世邮政EMS

56次阅读

共计 6471 个字符,预计需要花费 17 分钟才能阅读完成。

快递 100python 快递查问接口 - 一次性接入顺丰、京东、申通、圆通、韵达、中通、天天、百世、邮政、EMS 等支流快递公司,只须要复制源码,并将局部参数批改为您的账户参数即可。

此 python 接口 demo 目录内容包含:快递公司物流轨迹地图接口、单号智能辨认快递公司接口、实时查问物流状态接口和订阅物流状态揭示接口、电子面单打印接口。python 快递查问接口示例仅用于展现快递 100 物流查问接口的对接流程,其中的 API 密钥须要注册获取,您可点击拜访 https://api.kuaidi100.com 接申请收费接口,如果须要人工帮忙,能够征询快递 100API 技术人员,此服务不收取任何费用。

智能判断示例代码

# coding = utf-8

import requests


class 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-8
import hashlib
import json
import time

import requests


class 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-8
import hashlib
import json

import requests


class 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-8
import json

import requests


class 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-8
import hashlib
import json

import requests


class 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)

正文完
 0