一、微信公众平台接入
在将快递分拣程序放到微信上之前,我们需要先在微信公众平台接入自己的应用。接入流程可以参考微信公众平台开发者文档。
#引入需要使用的库
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 = "\
\
\
" + str(int(time.time())) + "\
\
\
"
return response_msg
四、总结
通过小程序与微信公众平台的对接,我们可以使用Python编写一个简单的快递分拣程序并将其放到微信上。当用户发送快递单号时,程序可以自动识别快递单号并将快递件分拣到对应的格子中。这个过程中,我们熟悉了微信公众平台的接入和Flask的使用,同时也应用了OCR文字识别和快递查询的API。
原创文章,作者:ZNXIO,如若转载,请注明出处:https://www.506064.com/n/373532.html
微信扫一扫
支付宝扫一扫