调用快递鸟API查询物流

8 篇文章 0 订阅
4 篇文章 0 订阅

首先在快递鸟申请一个账号:http://www.kdniao.com/

快递鸟的账号是申请了就能用,每天免费查询3000次

然后在我的会员中心查看自己的用户IDAPI key

然后在及时查询中可以找到对接文档和一些实例,我下面写的python对接的实例

 

import json
import urllib
import urllib.request
import hashlib
import base64
import urllib.parse

# 此处为快递鸟官网申请的帐号和密码
APP_id = "1342342"            #更换成自己的id
APP_key = "3edf3-a6sd16-43sdf5c-bsd817-6a85af8e64b5"        #更换成自己的key


def encrypt(logistic_code, app_key):
    """数据内容签名:把(请求内容(未编码)+AppKey)进行MD5加密,然后Base64编码"""
    m = hashlib.md5()
    m.update((logistic_code+app_key).encode("utf8"))
    encode_sign = m.hexdigest()
    data_sign = base64.b64encode(encode_sign.encode(encoding='utf-8'))
    return data_sign
def send_post(url, data):
    """发送post请求"""
    post_data = urllib.parse.urlencode(data).encode('utf-8')
    # 设置请求头
    header = {
        "Accept": "application/x-www-form-urlencoded;charset=utf-8",
        "Accept-Encoding": "utf-8"
    }
    req = urllib.request.Request(url, post_data, header)
    get_data = (urllib.request.urlopen(req).read().decode('utf-8'))
    return get_data


def get_company(logistic_code, app_id, app_key, url):
    """获取对应快递单号的快递公司代码和名称"""
    data1 = {'LogisticCode': logistic_code}
    d1 = json.dumps(data1, sort_keys=True)
    data_sign = encrypt(d1, app_key)

    post_data = {
        'RequestData': d1,
        'EBusinessID': app_id,
        'RequestType': '2002',          # 单号识别接口编码
        'DataType': '2',
        'DataSign': data_sign.decode()
    }

    json_data = send_post(url, post_data)
    sort_data = json.loads(json_data)
    return sort_data


def get_traces(logistic_code, shipper_code, app_id, app_key, url):
    """查询接口支持按照运单号查询(单个查询)"""
    data1 = {'LogisticCode': logistic_code, 'ShipperCode': shipper_code}
    d1 = json.dumps(data1, sort_keys=True)
    data_sign = encrypt(d1, app_key)

    post_data = {
        'RequestData': d1,
        'EBusinessID': app_id,
        'RequestType': '1002',          # 即时查询接口编码
        'DataType': '2',
        'DataSign': data_sign.decode()
    }
    json_data = send_post(url, post_data)
    sort_data = json.loads(json_data)
    return sort_data


def recognise(express_code):
    """输出数据"""
    url = 'http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx'
    data = get_company(express_code, APP_id, APP_key, url)
    print(data)
    if not data['Shippers']:
        print("未查到该快递信息,请检查快递单号是否有误!")
    else:
        trace_data = get_traces(express_code, data['Shippers'][0]['ShipperCode'], APP_id, APP_key, url)
        print(trace_data)
        if trace_data['Success'] == "false" or not trace_data['Traces']:
            print("未查询到该快递物流轨迹!")
        else:
            str_state = "无轨迹"
            if trace_data['State'] == '1':
                str_state = '已揽收'
            if trace_data['State'] == '2':
                str_state = "在途中"
            if trace_data['State'] == '3':
                str_state = "已签收"
            print("目前状态: "+str_state)
            trace_data = trace_data['Traces']

            for item in trace_data:
                print(str(trace_data.index(item))+":", item['AcceptTime'], item['AcceptStation'])

            print("\n")
    return


code = 701934534553453            #快递单号
if __name__ == '__main__':

    recognise(code)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于Django工单系统的开发,以下是一些基本的步骤和指导: 1. 创建Django项目:使用Django的命令行工具创建一个新的Django项目。运行以下命令: ``` django-admin startproject project_name ``` 2. 创建Django应用:在项目中创建一个新的Django应用,用于管理工单系统的功能。运行以下命令: ``` python manage.py startapp tickets ``` 3. 定义数据模型:在`models.py`文件中定义工单的数据模型。例如,您可以创建一个`Ticket`模型,其中包含工单的各个字段和关联关系。 4. 编写视图和模板:在`views.py`文件中编写处理工单请求的视图函数,并在`templates`目录中创建HTML模板来渲染工单页面。 5. 设置URL路由:在项目的`urls.py`文件中设置URL路由,将请求路由到对应的视图函数。 6. 编写表单和处理表单数据:创建一个表单类来收集工单的相关信息,并在视图函数中处理表单数据。 7. 添加用户认证:如果需要对工单系统进行用户身份验证,可以使用Django内置的用户认证系统或第三方库(如django-allauth)来实现用户注册、登录和权限控制。 8. 实现工单列表和详情页面:编写视图函数和模板以显示工单的列表和详细信息。可以使用Django的查询API来获取和过滤工单数据。 9. 添加工单状态和工作流:如果工单系统需要具有不同的状态和状态转换,可以使用Django状态机或其他工作流库来管理工单状态。 10. 实现工单的CRUD操作:编写视图函数和模板来处理创建、读取、更新和删除工单的操作。 11. 集成邮件通知:如果需要通过电子邮件通知用户有关工单的更新或状态更改,可以使用Django内置的邮件发送功能或第三方库(如django-anymail)来实现。 12. 运行测试并部署:编写测试用例来测试工单系统的各个功能,并使用适当的部署方法将工单系统部署到生产环境中。 以上是一个大致的概述,当然在实际开发中还可能涉及到更多的细节和定制需求。希望对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值