- 报错信息:由于在开发者中心开启了回调URL和Token,当前自动回复设置已失效。你可以前往开发者中心进行停用。
- 报错截图.png
# -*- coding: utf-8 -*-
import hashlib
import web
import xml.etree.ElementTree as ET
import time
import json
class Handle(object):
def GET(self):
try:
data = web.input()
if len(data) == 0:
return "hello, this is handle view"
signature = data.signature
timestamp = data.timestamp
nonce = data.nonce
echostr = data.echostr
token = "xxx12345678"
list1 = [token, timestamp, nonce]
list1.sort()
list2 = [x.encode('utf-8') for x in list1]
sha1 = hashlib.sha1()
[sha1.update(x) for x in list2]
hashcode = sha1.hexdigest()
print("handle/GET func: hashcode, signature: ", hashcode, signature)
if hashcode == signature:
return echostr
else:
return ""
except Exception as Argument:
return Argument
def POST(self):
try:
webdata = web.data()
xml_data = ET.fromstring(webdata)
msg_type = xml_data.find('MsgType').text
from_user = xml_data.find('FromUserName').text
to_user = xml_data.find('ToUserName').text
if msg_type == 'event':
event = xml_data.find('Event').text
if event == 'subscribe':
# 用户关注时的欢迎消息
content = "感谢关注!\n我是您的智能助手,让我们开始愉快的对话吧!"
reply_msg = {
'ToUserName': from_user,
'FromUserName': to_user,
'CreateTime': int(time.time()),
'MsgType': 'text',
'Content': content
}
return self.dict_to_xml(reply_msg)
return 'success'
except Exception as e:
return e
def dict_to_xml(self, dict_data):
xml_template = """
<xml>
<ToUserName><![CDATA[{ToUserName}]]></ToUserName>
<FromUserName><![CDATA[{FromUserName}]]></FromUserName>
<CreateTime>{CreateTime}</CreateTime>
<MsgType><![CDATA[{MsgType}]]></MsgType>
<Content><![CDATA[{Content}]]></Content>
</xml>
"""
return xml_template.format(**dict_data)
这个代码是需要配置的服务器上的回调方法调用的
image.png
开发者微信号:
image.png
参考文献:
微信公众平台接口调试工具 (qq.com)