一、微信公眾平台接入
在將快遞分揀程序放到微信上之前,我們需要先在微信公眾平台接入自己的應用。接入流程可以參考微信公眾平台開發者文檔。
#引入需要使用的庫
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/zh-hant/n/373532.html
微信掃一掃
支付寶掃一掃