書接上文良风,自己寫微信接口是很蠢的一種行為(指昨天的自己)闷供。我們隆重介紹微信官方API——wechatpy。它可以用來(lái)專門對(duì)接自己的服務(wù)器和微信公眾號(hào)歪脏。
直接介紹干貨吧:
驗(yàn)證
之前我們需要自己進(jìn)行加密然后再做操作疑俭,這里就不需要了:
from wechatpy.crypto import WeChatCrypto
from wechatpy import parse_message, create_reply, replies
from wechatpy.utils import check_signature
from wechatpy.exceptions import InvalidSignatureException
from wechatpy.exceptions import InvalidAppIdException
WECHAT_TOKEN = WECHAT_TOKEN
ENCODING_AESKEY = ENCODING_AESKEY
APPID = APPID
app = Flask(__name__)
@app.route('/wechat', methods=["GET", "POST"])
def wechat():
"""對(duì)接微信公眾號(hào)服務(wù)器"""
signature = request.args.get("signature")
timestamp = request.args.get("timestamp")
nonce = request.args.get("nonce")
echo_str = request.args.get("echostr")
msg_signature = request.args.get("msg_signature")
# get和post都需要驗(yàn)證身份
try:
check_signature(WECHAT_TOKEN, signature, timestamp, nonce)
except InvalidSignatureException:
abort(403)
if request.method == "GET":
return echo_str
是不是很簡(jiǎn)單?
發(fā)送接收加密消息
crypto = WeChatCrypto(WECHAT_TOKEN, ENCODING_AESKEY, APPID)
# 解密
try:
msg = crypto.decrypt_message(request.data, msg_signature, timestamp, nonce)
msg = parse_message(msg)
except (InvalidSignatureException, InvalidAppIdException): # 解密錯(cuò)誤
abort(403)
# msg已經(jīng)為解構(gòu)的消息
if msg.type == "text":
reply = create_reply("回復(fù)消息", msg)
else:
reply = create_reply('非法信息', msg)
return crypto.encrypt_message(reply.render(), nonce, timestamp)
是不是很簡(jiǎn)單婿失?钞艇?
甚至沒(méi)什么好講的。