博客列表 >python全国快递查询接口和电子面单打印接口,一次接入全国快递公司

python全国快递查询接口和电子面单打印接口,一次接入全国快递公司

快递100API
快递100API原创
2021年08月12日 16:27:08782浏览

快递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)
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议