python sae 微信公众号开发

墙壁眼睛膝盖一三一四 发布于 2016/05/24 11:40
阅读 433
收藏 0

@Kevin_Yang 您好,想跟您请教个问题:我根据您的帖子自己在sae云端建了个例子:

下面代码中的红色部分加上后,微信公众号那边发消息就没回复了,显示的是该微信公众号无法提供服务,缩进什么的都对,没有语法错误,弄了好久也没找出是什么问题,那个就是根据微信的指令回复相应的消息,不知道为什么加上多条判断错了,希望您能在闲余时间给我看一下,谢谢您!

# -*- coding: utf-8 -*-
import hashlib
import web
import lxml
import time
import os
import urllib2,json
from lxml import etree


class WeixinInterface:
       
    def __init__(self):
        self.app_root = os.path.dirname(__file__)
        self.templates_root = os.path.join(self.app_root, 'templates')
        self.render = web.template.render(self.templates_root)
    
    def POST(self):        
        str_xml = web.data() #获得post来的数据
        xml = etree.fromstring(str_xml)#进行XML解析
        ##content=xml.find("Content").text#获得用户所输入的内容
        msgType=xml.find("MsgType").text
        fromUser=xml.find("FromUserName").text
        toUser=xml.find("ToUserName").text
        if msgType=='text':
  Content=xml.find('Content').text
  content=Content.encode('UTF-8')
  if content=='m':
    return self.render.reply_text(fromUser,toUser,int(time.time()), 'You Say What ?')
          # elif content=='n':
               #return self.render.reply_text(fromUser,toUser,int(time.time()), 'You')
           #elif content=='p':
             #return self.render.reply_text(fromUser,toUser,int(time.time()), '你说说')
           #elif content=='。':
           #  return self.render.reply_text(fromUser,toUser,int(time.time()), '你说啥')  
  else:
    return self.render.reply_text(fromUser, toUser, int(time.time()),'鹦鹉:' + content)
        if msgType=='event':    ##关注事件
            msgContent = xml.find('Event').text
            if msgContent == 'subscribe':
              return self.render.reply_text(fromUser, toUser, int(time.time()), '欢迎关注本公众号!')
            if msgContent=='unsubscribe':
              return self.render.reply_text(fromUser, toUser, int(time.time()), '我会想你的!')
            
       ## return self.render.reply_text(fromUser,toUser,int(time.time()),u"徐强的测试版本说的:"+content)
    
        ##return self.render.reply_text(fromUser,toUser,int(time.time()),u"消息来自:"+toUser)
    def GET(self):
        #获取输入参数
        data = web.input()
        signature=data.signature
        timestamp=data.timestamp
        nonce=data.nonce
        echostr=data.echostr
        #自己的token
        token="motiondetection" #这里改写你在微信公众平台里输入的token
        #字典序排序
        list=[token,timestamp,nonce]
        list.sort()
        sha1=hashlib.sha1()
        map(sha1.update,list)
        hashcode=sha1.hexdigest()
        #sha1加密算法        


        #如果是来自微信的请求,则回复echostr
        if hashcode == signature:
            return echostr

加载中
0
I
IronXiong
我现在也是这个问题,请问楼主解决了吗?
返回顶部
顶部