做墙报的网站,淘宝销售书网站建设方案,手机端竞价恶意点击,企业网站的缺点上一篇做了服务器校验#xff0c;但没有处理用户发来的消息#xff0c;为了完成自动回复的功能#xff0c;需要增加一些功能#xff1a;
1、调整服务器校验函数#xff1a; def verify_wechat(request):tokentokendatarequest.argssignaturedata.get(signature)timestamp…上一篇做了服务器校验但没有处理用户发来的消息为了完成自动回复的功能需要增加一些功能
1、调整服务器校验函数 def verify_wechat(request):tokentokendatarequest.argssignaturedata.get(signature)timestampdata.get(timestamp)noncedata.get(nonce)echostrdata.get(echostr)temp[timestamp,nonce,token]temp.sort()temp.join(temp)if (hashlib.sha1(temp.encode(utf8)).hexdigest()signature):return echostrelse:return error,403
2、解析用户发来的信息
微信公众号中用户发给公众号的消息是以xml形式发给服务器的所以要先对xml进行解析
def getUserMessageContentFromXML(xml_content):rootET.fromstring(xml_content)contentroot.find(Content).textfrom_user_nameroot.find(FromUserName).textto_user_nameroot.find(ToUserName).textreturn content,from_user_name,to_user_name
这个函数获取了用户和公众号的id名称
3、回复信息“你好”
回复信息和收到信息一样都是xml形式所以要先把回复的信息调整成xml形式 def generate_response_xml(from_user_name,to_user_name,output_content):output_xml xmlToUserName![CDATA[%s]]/ToUserNameFromUserName![CDATA[%s]]/FromUserNameCreateTime%s/CreateTimeMsgType![CDATA[text]]/MsgTypeContent![CDATA[%s]]/Content/xmlresponse make_response(output_xml % (from_user_name, to_user_name, str(int(time.time())), str(output_content)))response.content_type application/xmlreturn response
然后调整服务器函数 app.route(/wechatai, methods[GET, POST])
def wechatai():if request.method GET:return verify_wechat(request)else:print(user request data: ,request.data)user_message_content,from_user_name,to_user_namegetUserMessageContentFromXML(request.data)print(from_user_name)print(to_user_name)return generate_response_xml(from_user_name, to_user_name, 你好)最终效果为了避免一直你好通过if条件判断只设置了自己的信息才会回复“你好”