点点寒彬 2016-01-15 05:58 采纳率: 100%
浏览 1737
已采纳

Django开发微信公众号无法回复消息

需求

用Django开发一个公众号,实现的功能是用户发一条文本消息,我直接返回回去
#代码
我的代码如下:

views.py

# 微信调用测试使用
class WeixinInterfaceView(View):
    def get(self, request):
        # 得到GET内容
        signature = request.GET.get('signature', None)
        timestamp = request.GET.get('timestamp', None)
        nonce = request.GET.get('nonce', None)
        echostr = request.GET.get('echostr', None)
        # 自己的token
        token = 'SvenWeng'  # 这里改写你在微信公众平台里输入的token
        # 字典序排序
        tmpList = [token, timestamp, nonce]
        tmpList.sort()
        tmpstr = '%s%s%s' % tuple(tmpList)
        # sha1加密算法
        tmpstr = hashlib.sha1(tmpstr).hexdigest()

        # 如果是来自微信的请求,则回复echostr
        if tmpstr == signature:
            return render(request, 'get.html', {'str': echostr},
                          content_type='text/plain')

    def post(self, request):
        # str_xml = request.body.decode('utf-8')  # use body to get raw data
        str_xml = smart_str(request.body)
        xml = etree.fromstring(str_xml)  # 进行XML解析
        toUserName = xml.find('ToUserName').text
        fromUserName = xml.find('FromUserName').text
        createTime = xml.find('CreateTime').text
        msgType = xml.find('MsgType').text
        content = xml.find('Content').text  # 获得用户所输入的内容
        msgId = xml.find('MsgId').text
        return render(request, 'reply_text.xml',
                      {'toUserName': toUserName,
                       'fromUserName': fromUserName,
                       'createTime': time.time(),
                       'msgType': msgType,
                       'content': content,
                       },
                      content_type='application/xml'
                      )
reply_text.xml

<xml>
<ToUserName><![CDATA[{{ toUserName }}]]></ToUserName>
<FromUserName><![CDATA[{{ fromUserName }}]]></FromUserName>
<CreateTime>{{ createTime }}</CreateTime>
<MsgType><![CDATA[{{ msgType }}]]></MsgType>
<Content><![CDATA[{{ content }}]]></Content>
</xml>
urls.py

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^grzx/', include('MyBlog.urls', namespace='grzx')),
    url(r'^', include('MyBlog.urls')),
    url(r'^weixin/', csrf_exempt(WeixinInterfaceView.as_view())),
]
urlpatterns += staticfiles_urlpatterns()

我使用测试工具受到返回的结果是这样的

<xml>
<ToUserName><![CDATA[diandianweizixun]]></ToUserName>
<FromUserName><![CDATA[wyb199026]]></FromUserName>
<CreateTime>1452836946.28</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[111111111]]></Content>
</xml>

我这个返回和微信的开发文档要求是一样的,为什么我在公众号上回复提示暂时无法服务?附上微信测试工具返回的结果

请求地址:http://www.ddhbblog.sinaapp.com/weixin/

Connection: keep-alive
Date: Fri, 15 Jan 2016 05:50:13 GMT
Transfer-Encoding: chunked
Set-Cookie: saeut=CkMPGlaYiJVgTmYsBOEuAg==; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/
Via: yq26.pyruntime
Server: nginx
Content-Type: application/xml
<xml>
    <ToUserName>
        <![CDATA[diandianweizixun]]>
    </ToUserName>
    <FromUserName>
        <![CDATA[wyb199026]]>
    </FromUserName>
    <CreateTime>1452837013.23</CreateTime>
    <MsgType>
        <![CDATA[text]]>
    </MsgType>
    <Content>
        <![CDATA[12312312]]>
    </Content>
</xml>

求大神指点迷津

  • 写回答

2条回答 默认 最新

  • devmiao 2016-01-18 20:27
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?