【代码】微信订阅号开发配置

参考使用python一步一步搭建微信公众平台(一)尝试搭建微信订阅号,采用较旧的方法:

  1. 申请订阅号,添加新浪各个节点到ip白名单
  2. 新浪云sae应用,将代码git到新浪云sae应用
  3. 配置服务器发现Token验证失败。。。。。
  4. 查看sae日志中心:
  5. 1.earth.applinzi.com 211.94.195.165 0.080 0.080 [23/Nov/2018:10:06:49 +0800] earth 978 1 GET /templates/.placeholder HTTP/1.1 500 65 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" yq30
  6. 检查代码无果,但config.yaml的webpy, lxml版本都是按照旧的,可能新浪环境变了吧,或者暂时发现不了问题。。。。头大
    python微信公众号开发简单流程

2019.1.17 考虑到新浪sae比较旧了,所以就买了阿里云ECS
远程登录ssh root@ip地址,有了ip就方便多了。
将服务器入端口80打开,打开注册好的微信公共平台,在服务器配置一栏写上:服务器外网IP地址/文件所在包名,再写好秘钥,token要保持和myapp.py一致,点击启动配置,就可以了。
使用微信公众平台接口调试工具,发现要配置当前客户端到ip白名单,实际使用用户可以随意关注使用公共号。
新的服务器是空白的,ubuntu14.0.4下自带Python2.7和3.4,我们安装一些常用的tree命令等等,然后在root目录下新建test文件夹,安装pyenv,创建虚拟环境env364pyenv activate env364进入虚拟环境,注意以下操作(主要是安装,运行)都在虚拟环境中进行:
安装python3,flask,uwsgi,新建脚本
配置nginx连接uwsgi失败,目前用nohup python myapp.py运行脚本,或nohup uwsgi uwsgi_config.ini,然后关闭终端即可。

脚本同级目录下建立uwsgi_config.ini,配置如下

[uwsgi]
http = 0.0.0.0:80  # 应该需要是80端口
processes = 4
threads = 2
master = true
pythonpath = /root/test   # 包目录
wsgi-file = /root/test/myapp.py  # 应用脚本
callable = app  # 应用脚本创建的app对象"app = Flask(__name__)"
memory-report = true

# myapp.py
from flask import Flask, request
import hashlib

app = Flask(__name__)

@app.route('/test',methods=['GET','POST'])
def index():
        if request.method == 'GET':
                token = 'renjianleyuan'  # 这里填上你的token
		        data = request.args 
		        signature = data.get('signature','')
		        timestamp = data.get('timestamp','')
		        nonce = data.get('nonce','')
		        echostr = data.get('echostr','')
		        ls = [token, timestamp, nonce]
		        ls.sort()
		        s = ''.join(ls)
		        hashcode = hashlib.sha1(s.encode('utf-8')).hexdigest()
		        if hashcode == signature:
		                return echostr
		        else:
		                return ''

if __name__ == '__main__':
        app.run(host='0.0.0.0',port=80,debug=True)
                                          

加上处理POST请求,回复处理模块

# myapp.py
...
import xml.etree.ElementTree as ET
import reply
...
...
if request.method == 'POST':
                data = request.data
                # print(request.args, request.data)    # 测试
                recv = ET.fromstring(data)
                ToUserName = recv.find('ToUserName').text
                fromUser = recv.find('FromUserName').text
                MsgType = recv.find('MsgType').text
                Content = recv.find('Content').text
                MsgId = recv.find('MsgId').text

                return reply.reply_text(MsgType) % (fromUser, ToUserName, int(time()), Content)

# reply.py

text = "%s"



def reply_text(msgType):
        print(msgType)
        if msgType == 'text':
                return text

参考这里,但有一些错误,要注意下 Python3-Flask-微信公众号开发-3

你可能感兴趣的:(【代码】微信订阅号开发配置)