Blogger Information
Blog 60
fans 0
comment 0
visits 100874
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
python全国快递查询接口和电子面单打印接口,一次接入全国快递公司
快递100API
Original
787 people have browsed it

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

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

智能判断示例代码

  1. # coding = utf-8
  2. import requests
  3. class KuaiDi100:
  4. def __init__(self):
  5. self.key = '' # TODO 客户授权key
  6. self.url = 'https://www.kuaidi100.com/autonumber/auto' # 请求地址
  7. def auto_number(self, num):
  8. """
  9. 智能单号识别
  10. :param num: 快递单号
  11. :return: requests.Response.text
  12. """
  13. req_params = {'key': self.key, 'num': num}
  14. return requests.post(self.url, req_params).text # 发送请求
  15. result = KuaiDi100().auto_number('YT9693083639795')
  16. print(result)

电子面单打印接口

  1. # coding = utf-8
  2. import hashlib
  3. import json
  4. import time
  5. import requests
  6. class KuaiDi100:
  7. def __init__(self):
  8. self.key = '' # TODO 客户授权key
  9. self.secret = '' # TODO 电子面单secret
  10. self.url = 'https://poll.kuaidi100.com/print/billparcels.do' # 请求地址
  11. def submit(self, param, settings):
  12. """
  13. 发货单打印
  14. :param param: 模板配置信息和自定义参数信息
  15. :param settings: 纸张配置信息
  16. :return: requests.Response.text
  17. """
  18. timestamp = str(time.time())
  19. md = hashlib.md5()
  20. param_str = json.dumps(param)
  21. temp_sign = param_str + timestamp + self.key + self.secret
  22. md.update(temp_sign.encode())
  23. sign = md.hexdigest().upper()
  24. req_params = {
  25. 'method': 'billparcels',
  26. 'key': self.key,
  27. 't': timestamp,
  28. 'sign': sign,
  29. 'param': param_str,
  30. 'settings': json.dumps(settings)
  31. }
  32. return requests.post(self.url, req_params).text # 发送请求
  33. param = {
  34. "tempid": "xxxx", # 模板编码,通过管理后台的打印发货单模板配置信息获取
  35. "siid": "xxxx", # 打印设备码,通过打印机输出的设备码进行获取
  36. "callBackUrl": "https://www.baidu.com/fhd/callback", # 打印状态对调地址
  37. "petName": "kd100", # 自定义参数
  38. "recName": "小百", # 自定义参数
  39. "recPhone": "10086", # 自定义参数
  40. "payTime": "2021-01-15 15:40:55", # 自定义参数
  41. "expressName": "德邦快递", # 自定义参数
  42. "printTime": "2021-01-15 15:41:30", # 自定义参数
  43. "printCount": "1", # 自定义参数
  44. "address": "广东省深圳市南山区金蝶软件园", # 自定义参数
  45. "total": "21", "remark": "购物小票作为购物凭证,请妥善保管,您有任何疑问,请咨询服务热线 123456798", # 自定义参数
  46. "img0": { # 图片参数,多图片时用img0,img1,img2等追加
  47. "type": "code_128",
  48. "content": "887921256577",
  49. "width": 350,
  50. "height": 100
  51. },
  52. "tab0": [ # 表格参数,多表格时用tab0,tab1,tab2等追加对象
  53. {
  54. "prodName": "热敏纸",
  55. "count": "5",
  56. "specs": "76*130",
  57. "unitPrice": "30",
  58. "price": "150"
  59. },
  60. {
  61. "prodName": "热敏纸",
  62. "count": "10",
  63. "specs": "100*180",
  64. "unitPrice": "50",
  65. "price": "500"
  66. },
  67. {
  68. "prodName": "续打纸",
  69. "count": "5",
  70. "specs": "",
  71. "unitPrice": "40",
  72. "price": "200"
  73. },
  74. {
  75. "prodName": "云打印机",
  76. "count": "1",
  77. "specs": "二代",
  78. "unitPrice": "499",
  79. "price": "499"
  80. }
  81. ]
  82. }
  83. settings = {
  84. "pageWidth": 100, # 纸张宽,单位mm,默认值:100
  85. "pageHeight": 180, # 纸张高,单位mm ,续打纸张时,该字段设置为null或空串
  86. "margins": { # 边距
  87. "top": 5, # 上边距,单位:mm,默认:0
  88. "bottom": 5, # 下边距,单位:mm,默认:0
  89. "left": 5, # 左边距,单位:mm,默认:0
  90. "right": 5 # 右边距,单位:mm,默认:0
  91. }
  92. }
  93. result = KuaiDi100().submit(param, settings)
  94. print(result)
  1. # coding = utf-8
  2. import hashlib
  3. import json
  4. import requests
  5. class KuaiDi100:
  6. def __init__(self):
  7. self.key = '' # TODO 客户授权key
  8. self.customer = '' # TODO 查询公司编号
  9. self.url = 'https://poll.kuaidi100.com/poll/maptrack.do' # 请求地址
  10. def map_track(self, com, num, phone, ship_from, ship_to, orderTime):
  11. """
  12. 快递查询地图轨迹
  13. :param com: 查询的快递公司的编码,一律用小写字母
  14. :param num: 查询的快递单号,单号的最大长度是32个字符
  15. :param phone: 收件人或寄件人的手机号或固话(也可以填写后四位,如果是固话,请不要上传分机号)
  16. :param ship_from: 出发地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,请尽量提供
  17. :param ship_to: 目的地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,且到达目的地后会加大监控频率,请尽量提供
  18. :param orderTime: 订单下单时间,格式为(yyyy-MM-dd HH:mm:ss)如:2020-12-16 12:59:59
  19. :return: requests.Response.text
  20. """
  21. param = {
  22. 'com': com,
  23. 'num': num,
  24. 'phone': phone,
  25. 'from': ship_from,
  26. 'to': ship_to,
  27. 'show': '0', # 返回数据格式。0:json(默认),1:xml,2:html,3:text
  28. 'order': 'desc', # 返回结果排序方式。desc:降序(默认),asc:升序
  29. 'orderTime': orderTime
  30. }
  31. param_str = json.dumps(param) # 转json字符串
  32. # 签名加密, 用于验证身份, 按param + key + customer 的顺序进行MD5加密(注意加密后字符串要转大写), 不需要“+”号
  33. temp_sign = param_str + self.key + self.customer
  34. md = hashlib.md5()
  35. md.update(temp_sign.encode())
  36. sign = md.hexdigest().upper()
  37. request_data = {'customer': self.customer, 'param': param_str, 'sign': sign}
  38. return requests.post(self.url, request_data).text # 发送请求
  39. result = KuaiDi100().map_track('yuantong', 'YT9693083639795', '', '广东省江门市', '广东省深圳市', '2021-08-01 20:04:44')
  40. print(result)

物流轨迹接口

  1. # coding = utf-8
  2. import json
  3. import requests
  4. class KuaiDi100:
  5. def __init__(self):
  6. self.key = '' # TODO 客户授权key
  7. self.url = 'https://poll.kuaidi100.com/poll' # 请求地址
  8. def submit(self, com, num, phone, ship_from, ship_to):
  9. """
  10. 物流轨迹订阅
  11. :param com: 快递公司编码
  12. :param num: 快递单号
  13. :param phone: 收件人或寄件人的手机号或固话(也可以填写后四位,如果是固话,请不要上传分机号)
  14. :param ship_from: 出发地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,请尽量提供
  15. :param ship_to: 目的地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,且到达目的地后会加大监控频率,请尽量提供
  16. :return: requests.Response.text
  17. """
  18. param = {
  19. 'company': com,
  20. 'number': num,
  21. 'from': ship_from,
  22. 'to': ship_to,
  23. 'key': self.key,
  24. 'parameters': {
  25. 'callbackurl': 'https://www.baidu.com/kd100/callback', # 回调接口的地址。如果需要在推送信息回传自己业务参数,可以在回调地址URL后面拼接上去,例如:https://www.baidu.com/kd100/callback?orderId=123
  26. 'salt': None, # 签名用随机字符串。32位自定义字符串。添加该参数,则推送的时候会增加sign给贵司校验消息的可靠性
  27. 'resultv2': '1', # 添加此字段表示开通行政区域解析功能。0:关闭(默认),1:开通行政区域解析功能
  28. 'autoCom': '0', # 添加此字段且将此值设为1,则表示开始智能判断单号所属公司的功能,开启后,company字段可为空,即只传运单号(number字段),我方收到后会根据单号判断出其所属的快递公司(即company字段)。建议只有在无法知道单号对应的快递公司(即company的值)的情况下才开启此功能
  29. 'interCom': '0', # 添加此字段且将此值设为1,则表示开启国际版,开启后,若订阅的单号(即number字段)属于国际单号,会返回出发国与目的国两个国家的跟踪信息,本功能暂时只支持邮政体系(国际类的邮政小包、EMS)内的快递公司,若单号我方识别为非国际单,即使添加本字段,也不会返回destResult元素组
  30. 'departureCountry': '', # 出发国家编码,interCom=1的国际单号最好提供该值
  31. 'departureCom': '', # 出发国家快递公司的编码,interCom=1的国际单号最好提供该值
  32. 'destinationCountry': '', # 目的国家编码,interCom=1的国际单号最好提供该值
  33. 'destinationCom': '', # 目的国家快递公司的编码,interCom=1的国际单号最好提供该值
  34. 'phone': phone
  35. }
  36. }
  37. req_params = {
  38. 'schema': 'json', # 查询公司编号
  39. 'param': json.dumps(param) # 参数数据
  40. }
  41. return requests.post(self.url, req_params).text # 发送请求
  42. result = KuaiDi100().submit('yuantong', 'YT9693083639795', '', '江门市', '深圳市')
  43. print(result)

物流轨迹实时查询接口

  1. # coding = utf-8
  2. import hashlib
  3. import json
  4. import requests
  5. class KuaiDi100:
  6. def __init__(self):
  7. self.key = '' # TODO 客户授权key
  8. self.customer = '' # TODO 查询公司编号
  9. self.url = 'https://poll.kuaidi100.com/poll/query.do' # 请求地址
  10. def track(self, com, num, phone, ship_from, ship_to):
  11. """
  12. 物流轨迹实时查询
  13. :param com: 查询的快递公司的编码,一律用小写字母
  14. :param num: 查询的快递单号,单号的最大长度是32个字符
  15. :param phone: 收件人或寄件人的手机号或固话(也可以填写后四位,如果是固话,请不要上传分机号)
  16. :param ship_from: 出发地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,请尽量提供
  17. :param ship_to: 目的地城市,省-市-区,非必填,填了有助于提升签收状态的判断的准确率,且到达目的地后会加大监控频率,请尽量提供
  18. :return: requests.Response.text
  19. """
  20. param = {
  21. 'com': com,
  22. 'num': num,
  23. 'phone': phone,
  24. 'from': ship_from,
  25. 'to': ship_to,
  26. 'resultv2': '1', # 添加此字段表示开通行政区域解析功能。0:关闭(默认),1:开通行政区域解析功能,2:开通行政解析功能并且返回出发、目的及当前城市信息
  27. 'show': '0', # 返回数据格式。0:json(默认),1:xml,2:html,3:text
  28. 'order': 'desc' # 返回结果排序方式。desc:降序(默认),asc:升序
  29. }
  30. param_str = json.dumps(param) # 转json字符串
  31. # 签名加密, 用于验证身份, 按param + key + customer 的顺序进行MD5加密(注意加密后字符串要转大写), 不需要“+”号
  32. temp_sign = param_str + self.key + self.customer
  33. md = hashlib.md5()
  34. md.update(temp_sign.encode())
  35. sign = md.hexdigest().upper()
  36. request_data = {'customer': self.customer, 'param': param_str, 'sign': sign}
  37. return requests.post(self.url, request_data).text # 发送请求
  38. result = KuaiDi100().track('yuantong', 'YT9693083639795', '', '广东省江门市', '广东省深圳市')
  39. print(result)
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post