用Python编写快递分拣小程序并与微信对接
用Python编写快递分拣小程序并与微信对接
一、微信公众平台接入
在将快递分拣程序放到微信上之前,我们需要先在微信公众平台接入自己的应用。接入流程可以参考微信公众平台开发者文档。
#引入需要使用的库 import hashlib from flask import Flask, request app = Flask(__name__)#创建一个flask实例 @app.route('/', methods=['GET', 'POST']) def wechat_auth(): if request.method == 'GET': token = 'your_token' # 填写你在微信公众平台上设置的令牌 data = request.args signature = data.get('signature', '') timestamp = data.get('timestamp', '') nonce = data.get('nonce', '') echostr = data.get('echostr', '') s = [timestamp, nonce, token] s.sort() s = ''.join(s) sha1 = hashlib.sha1() sha1.update(s.encode()) hashcode = sha1.hexdigest() if hashcode == signature: return echostr else: return "" else: return "Hello, this is your app."
二、快递分拣程序设计
我们可以使用Python编写一个简单的快递分拣程序,它包含以下几个模块:
- 快递单号识别:使用OCR将快递单号识别并提取出来。
- 快递单号查询:调用快递查询API查询快递单号对应的快递公司。
- 快递分拣:根据快递公司将快递件分拣到对应的格子中。
#引入需要使用的库 import requests import base64 import json import cv2 #OCR文字识别 def ocr_image(image_file): url = "https://api.openai.com/v1/images/recognize_text" img_b64 = base64.b64encode(image_file) payload = { "image": img_b64.decode('utf-8') } headers = { 'Content-Type': 'application/json' } response = requests.post(url, headers=headers, data=json.dumps(payload)) if response.ok: res_json = response.json()['data'][0]['text'] return res_json else: return "" #查询快递公司 def query_company_name(express_no): url = "http://www.kuaidi100.com/autonumber/auto?num=" + str(express_no) response = requests.get(url) if response.ok: res_json = response.json() company_name = res_json[0]['comCode'] return company_name else: return "" #快递分拣 def sort_express(company_name): if company_name == 'shunfeng': #顺丰快递分拣代码 pass elif company_name == 'yuantong': #圆通快递分拣代码 pass elif company_name == 'yunda': #韵达快递分拣代码 pass
三、将程序与微信对接
我们可以使用Flask搭建一个简单的Web服务器,将程序与微信公众平台进行对接。
#引入需要使用的库 import hashlib from flask import Flask, request app = Flask(__name__)#创建一个flask实例 @app.route('/', methods=['GET', 'POST']) def wechat_auth(): if request.method == 'GET': token = 'your_token' # 填写你在微信公众平台上设置的令牌 data = request.args signature = data.get('signature', '') timestamp = data.get('timestamp', '') nonce = data.get('nonce', '') echostr = data.get('echostr', '') s = [timestamp, nonce, token] s.sort() s = ''.join(s) sha1 = hashlib.sha1() sha1.update(s.encode()) hashcode = sha1.hexdigest() if hashcode == signature: return echostr else: return "" else: data = request.data xml = ET.fromstring(data) content = xml.find('Content').text.strip() from_user_name = xml.find('FromUserName').text to_user_name = xml.find('ToUserName').text response_msg = create_response_msg(from_user_name, to_user_name, content) return response_msg #创建回复消息 def create_response_msg(from_user_name, to_user_name, content): #快递单号识别和查询 if len(content) == 12: express_no = content company_name = query_company_name(express_no) response_content = "您的快递公司是:" + company_name else: response_content = "请发送正确的快递单号" #根据微信官方文档,创建返回给用户的消息格式 response_msg = "\ " return response_msg\ \ " + str(int(time.time())) + " \\ \
四、总结
通过小程序与微信公众平台的对接,我们可以使用Python编写一个简单的快递分拣程序并将其放到微信上。当用户发送快递单号时,程序可以自动识别快递单号并将快递件分拣到对应的格子中。这个过程中,我们熟悉了微信公众平台的接入和Flask的使用,同时也应用了OCR文字识别和快递查询的API。
评论关闭