zoukankan      html  css  js  c++  java
  • python获取快递物流信息

    目的:

    通过订单号获取订单物流状态。

    实现方式:

    通过快递鸟的总api实现调用,快递鸟做了所有快递的兼容。

    快递鸟:

    http://www.kdniao.com/login

    官方文档:

    http://www.kdniao.com/v2/API/Track.aspx

    前提:

    注册账户,实名认证,拿到用户id和API key,开通业务及时查询。

    封装好的代码:

    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 = '----快递鸟的----'  # 需要注册完获取
        user_id = 快递鸟的用户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')

    // 标红部分记得重写

    调用演示:

    效果:


    注意:
    1. 快递公司编码获得,官方接口文档获取

     2. 免费版,只能对(中通、圆通、申通)查询,每天500次免费调用量

     
  • 相关阅读:
    Vue Bug
    Vue.js(一)
    Node.js简介
    对请求链接的URLEncode处理
    淘宝开放平台
    Java基础(一)
    计算机基础知识
    Unity中对象池的使用
    希尔排序算法
    插入排序算法
  • 原文地址:https://www.cnblogs.com/zezhou/p/13141680.html
Copyright © 2011-2022 走看看