This commit is contained in:
yumoqing 2026-03-02 13:52:31 +08:00
parent e132f9dddc
commit 67fb74fa26

View File

@ -179,6 +179,10 @@ class WOAHandler:
async def handle_post(self, request: web.Request) -> web.Response: async def handle_post(self, request: web.Request) -> web.Response:
"""处理用户消息和事件""" """处理用户消息和事件"""
# 1. 验证签名 # 1. 验证签名
query = request.query
signature = query.get('signature', '')
timestamp = query.get('timestamp', '')
nonce = query.get('nonce', '')
is_valid, _ = self._verify_signature(request) is_valid, _ = self._verify_signature(request)
if not is_valid: if not is_valid:
return web.Response(text="failed", status=403) return web.Response(text="failed", status=403)
@ -189,7 +193,10 @@ class WOAHandler:
body = await request.read() body = await request.read()
# decrypt_message 会自动处理解密和 XML 解析,返回 wechatpy 的消息对象 # decrypt_message 会自动处理解密和 XML 解析,返回 wechatpy 的消息对象
# 如果未开启加密,它也会正常解析 XML # 如果未开启加密,它也会正常解析 XML
msg = self.crypto.decrypt_message(body) msg = self.crypto.decrypt_message(body,
signature=signature,
timestamp=timestamp,
nonce=nonce)
except Exception as e: except Exception as e:
error(f"消息解密或解析失败: {e}, {body=}") error(f"消息解密或解析失败: {e}, {body=}")
return web.Response(text="success") # 防止微信重试 return web.Response(text="success") # 防止微信重试