Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

微信公众号Pyhton

2019/09/15 环境部署 Web
Word count: 524 | Reading time: 3min

微信公众号Pyhton开发

编写上传代码到SAE

1.申请SAE(sina application enginer),创建应用,SAE使用文档

2.编写上传代码

weixin.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#-*-coding:utf-8-*-
import web
import os
import hashlib
import time

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 GET(self):
data=web.input()
signature=data.signature
timestamp=data.timestamp
nonce=data.nonce
echostr=data.echostr
token="wxpython"

l=[token,timestamp,nonce]
l.sort()
sha1=hashlib.sha1()
map(sha1.update,l)
hashcode=sha1.hexdigest()

if hashcode == signature:
return echostr

index.wsgi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*-coding:utf-8-*-

import os
import sae
import web
from weixin import WeixinInterface


urls=(
'/weixin','WeixinInterface'
)

app_root=os.path.dirname(__file__)
templates_root=os.path.join(app_root,'templates')
render=web.template.render(templates_root)


app=web.application(urls,globals()).wsgifunc()
application=sae.create_wsgi_app(app)

config.yaml

1
2
3
4
5
6
7
8
9
10
11
12
name: wxpytest 
version: 1

libraries:
- name: webpy
version: "0.36"

- name: lxml
version: "2.3.4"


...

3.微信公众号修改服务器配置

weixin

Token与代码中编写的保持一致,URL也要与指定的一致(即...\weixin)。

注意直接访问<http://vxquan.applinzi.com/weixin>是会报错的,但是可以通过微信公众平台的认证(因为直接访问是没有参数的,data=web.input没有异常处理)

处理普通文本信息

1
2
3
4
5
6
7
8
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>

▲.注意这边的OpenID不是真正的用户ID,不同公众号对相同用户获得的OpenID是不同的,换言之,这个只是该公众号能获得该用户的一个ID。

1
2
3
4
5
6
7
8
9
10
def POST(self): 
str_xml=web. data()
xml=etree.fromstring(str_xml)
msgType=xml.find("MsgType").text
fromuser=xml.find("FromUserName").text
touser=xml.find("ToUserName").text
if msgType=="text":
content=xml. find("Content").text
return self.render.reply_text(fromuser,touser,int(time.time()),content)
# 注意这边To和from的改变,服务器(发送)-->wx后台-->用户(接收)

记遇到的坑:

  • 1.POST好像必须要有处理,返回信息
    1. python2.7下字符串加u

Author: Mrli

Link: https://nymrli.top/2019/05/27/微信公众号Pyhton/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
Windows下命令行神器cmder
NextPost >
DigitalOcean VPS注册
CATALOG
  1. 1. 微信公众号Pyhton开发
    1. 1.1. 编写上传代码到SAE
    2. 1.2. 处理普通文本信息