本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下
网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样。真的无语了。只好自己总结一下开发的一些简单流程。
一、注册个微信公众号,这个就不详细说了。
二、登录后台,进入开发中的基本配置,配置下服务器
填写url和token,url是服务器的地址,token是自己定义的
三、登录服务器开发
网上很多教程用的什么新浪sae啊,webpy都是很久之前的。现在很多东西都变了,所以我没有用,我用的阿里的服务器以及flask做后端。
代码如下
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# coding:utf-8
from hashlib import sha1
from flask import Flask, request
token = 'xxxxxx'
app = Flask(__name__)
def get_update(token, timestamp, nonce):
arguments = ''
for k in sorted ([token, timestamp, nonce]):
arguments = arguments + str (k)
m = sha1()
m.update(arguments.encode( 'utf8' ))
return m.hexdigest()
def check_signature():
signature = request.args.get( 'signature' , '')
timestamp = request.args.get( 'timestamp' , '')
nonce = request.args.get( 'nonce' , '')
check = get_update(token, timestamp, nonce)
return True if check = = signature else False
def parse_xml(data):
try :
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
root = ET.fromstring(data)
datas = '<xml>'
for child in root:
if child.tag = = 'ToUserName' :
toUser = child.text
datas + = '<FromUserName>%s</FromUserName>' % toUser
elif child.tag = = 'FromUserName' :
fromUser = child.text
datas + = '<ToUserName>%s</ToUserName>' % fromUser
else :
datas + = '<' + child.tag + '>'
datas + = child.text
datas + = '</' + child.tag + '>'
datas + = '</xml>'
return datas
@app .route( '/weixin' , methods = [ 'GET' , 'POST' ])
def weixinInterface():
if check_signature:
if request.method = = 'GET' :
echostr = request.args.get( 'echostr' , '')
return echostr
elif request.method = = 'POST' :
data = request.data
msg = parse_xml(data)
return msg
else :
return 'signature error'
if __name__ = = '__main__' :
app.run(host = '0.0.0.0' )
|
一开始的话微信会让你验证填写的url,验证方式是通过传入时间戳timestamp,随机数nonce,token事先约定好的,echostr随机字符串,以及签名signature,需要根据时间戳,随机数,token的值进行字典序排序,然后用sha1加密得到签名,检验签名是否一致,是的话返回随机字符串echostr。如果校验成功,就可以提交了,提交之后就可以启用服务器配置。
上面的代码还包括了如果用户发送信息给公众号,返回该信息,当然只是很简单的解析xml以及构造xml。其他更复杂的功能需要查询微信的文档。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/lgh344902118/p/8243495.html