解决因配置开启服务器配置导致关注微信服务号自动回复

  • 报错信息:由于在开发者中心开启了回调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)

基础消息能力 / 接收事件推送 (qq.com)

微信开放社区 (qq.com)
微信公众号开发系列-获取微信OpenID_怎么找到自己的openid-CSDN博客

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容