配置环境:腾讯主机 Ubuntu Server 16.04.1 LTS 64位

需要用到的软件或者包:nginx,tornado框架 xshell6(非必需)

微信公众号测试平台:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

如果使用虚拟环境的还需要配置virtualenv和virtualenvwrapper,请看我的这篇教程python安装virtualenv和virtualenvwrapper

昨晚折腾了好久,还是卡在接口配置信息那里,对接不成功,微信公众号没有响应,查了好多教程,也没有仔细说到我遇到的问题,终于今天找到了问题的根本了,是nginx配置的问题,其实我也对nginx和端口的问题不是很清楚的,这个还是需要深入研究的,毕竟我也是小白,一切都是刚刚开始,但是把必须的参数配置一下,居然成功了,也总结了一下自己的粗心。

1.nginx配置

先说一下这个配置文件的路径问题,源码安装和pip安装的配置文件的路径是不一样的,名字也不一样,我是使用命令安装的,所以配置文件路径为:/etc/nginx/sites-available/default

源码安装的网上的教程说是在nginx里面的nginx.conf

腾讯默认的nginx配置文件内容为(为了省长度我把注释删除了,源文件可以自行安装查看)

server {

listen 80 default_server;

listen [::]:80 default_server;

root /var/www/html;

index index.html index.htm index.nginx-debian.html;

server_name _;

location / {

try_files $uri $uri/ =404;

}

要在server里面增加一个location 路由配置

location /wechat8000{

proxy_pass_header Server;

proxy_set_header Host $http_host;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Scheme $scheme;

proxy_pass http://127.0.0.1:8000;

}

先说一下主要的,/wechat8000这个是路由配置,你想写啥写啥,这个要和微信公众号接口配置信息的url对应

http://主机ip/wechat8000

2.tornado框架+python代码

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数

参数对照.png

开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

校验流程:

将token、timestamp、nonce三个参数进行字典序排序

将三个参数字符串拼接成一个字符串进行sha1加密

开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

详细资料请看微信官方文档

验证服务器地址的有效性测试代码01_wechat.py

# coding:utf8

import tornado.web

import tornado.ioloop

import tornado.httpserver

import hashlib

from tornado.options import options, define

from tornado.web import RequestHandler

WECHAT_TOKEN = "amtest" # 这个是接口配置信息的token,随便写

define('port', default=8000, type=int, help="")

class WechatHandler(RequestHandler):

def get(self):

signature = self.get_argument("signature")

timestamp = self.get_argument("timestamp")

nonce = self.get_argument("nonce")

echostr = self.get_argument("echostr")

tmp = [WECHAT_TOKEN, timestamp, nonce]

tmp.sort()

tmp = "".join(tmp)

# 需要转码的情加上.encode('utf8')

real_signature = hashlib.sha1(tmp.encode('utf8')).hexdigest()

if signature == real_signature:

self.write(echostr)

else:

self.send_error("error")

def main():

tornado.options.parse_command_line()

app = tornado.web.Application(

[

(r"/wechat8000", WechatHandler),

], debug=True,

)

http_server = tornado.httpserver.HTTPServer(app)

http_server.listen(options.port)

tornado.ioloop.IOLoop.current().start()

if __name__ == "__main__":

main()

写完把代码拷贝到你购买的主机上,然后运行,命令如下(这里我是使用scp和xshell6搭配)

scp 本地文件 用户名@主机ip:远程主机存放文件路径

workon tornado01 # 此处是我的虚拟环境,可以忽略

python 01_wechat.py

运行后进行 微信公众号 接口配置信息

3.微信接口信息配置

这里的url要和tornado代码的路由、nginx location里面的配置想对应,配置完点击提交,成功后会出现配置成功的提示

配置成功

此时到xshell6看看终端后台会看到对接成功微信返回来的echostr

echostr.png

恭喜你,对接验证完成,可以进行微信的其他开发了

nginx tornado php,tornado+nginx+python 微信公众号接入配置相关推荐

  1. python 微信公众号开发[1] 后台服务器端配置与公众号开发配置

    更新时间:2020年3月7日 微信公众号开发的硬件必备条件:(1)申请一个公众号 (2)有公网ip的服务器(最好是阿里云,腾讯云等的云服务器)(3)解析到(2)中服务器地址的域名(阿里云,腾讯云购买即 ...

  2. Python微信公众号开发平台

    上大学的时候,对微信公众号开发浅尝辄止的玩了一下,感觉还是挺有意思的. //www.jb51.net/article/133677.htm后来服务器到期了,也就搁置了.由于发布web程序,使用PHP很 ...

  3. python微信公众号文章转pdf

    python微信公众号文章转pdf 从doxc中提取链接,转换pdf https://www.bbsmax.com/A/Ae5RRb7m5Q/ import os import zipfileimpo ...

  4. Python微信公众号教程基础篇——收发文本消息

    1. 概述: 在本篇教程中,你将学会使用华为云弹性云服务器(以下简称 ECS)搭建微信公众号处理后台,使用Python语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果 ...

  5. python 微信公众号,微信小程序wechatpy的使用

    第一章 Python 微信公众号,小程序入门之wechatpy的使用 文章目录 第一章 Python 微信公众号,小程序入门之wechatpy的使用 前言 一.wechatpy是什么? 二.微信公众号 ...

  6. Python微信公众号后台开发003:自定义菜单

    有同学问道微信公众号后台开发的自定义菜单怎么实现? 这个问题本来想放到后面的,因为的确对公众号的影响挺明显的, 因为开启后台服务,公众号的自定义菜单就不见了,很影响使用, 也有同学问这个问题,就提前了 ...

  7. Python 微信公众号的文章爬取

    Python 微信公众号文章爬取 一.思路 二.接口分析 三.实现 第一步: 第二步: 1.请求获取对应公众号接口,取到我们需要的fakeid 2.请求获取微信公众号文章接口,取到我们需要的文章数据 ...

  8. python微信爬取教程_[python]微信公众号文章爬取

    [python]微信公众号文章爬取 需求 爬取一些微信公众号的文章 数据来源 1.搜狗微信搜索,可以搜索微信公众号文章,但只能显示该公众号最近十篇的文章 2.通过个人微信公众号中的素材管理,查看其他微 ...

  9. python微信公众号开发教程_python微信公众号开发简单流程实现

    本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样.真的无语了.只好自己总 ...

最新文章

  1. 快准牌电脑发软件_这些软件,电脑安装了,办公清理都比别人快几倍~~
  2. 当容器应用越发广泛,我们又该如何监测容器?
  3. C# 弹出确定、取消窗口
  4. 【Python基础避坑】函数内存底层分析,全局变量/局部变量,参数传递,浅拷贝/深拷贝
  5. C# SFTP上传文件
  6. cpu只能单通道是什么表现_【小白入门】为什么要组内存双通道?
  7. 手机html滚动原理,手机滚动-如何实现惯性滚动
  8. WordPress删除重复文章插件
  9. 抖音公布“美好音符年”活动数据:这个省的用户最好运
  10. Android NDK开发之 arm_neon.h文件ABI说明
  11. Qt: 非阻塞时间延迟;
  12. Apache下的FileUtils.listFiles方法简单使用技巧
  13. Java加密算法库BouncyCastle
  14. PID控制算法的C语言实现十 模糊算法简介
  15. 物联网通信技术课程安排
  16. 一种简单的电荷泵驱动NMOS管电路
  17. Qt 5.12--color
  18. Http 常见的 Headers
  19. C语言-1-初识C语言(二)
  20. 第15节 域之集中管理、统一管理

热门文章

  1. 回归网易 9 个月来的测试团队转型之路
  2. python基础学习-字符串
  3. Tomcat配置阿里云免费的SLL证书
  4. java注解接收上传文件_SpringMVC 处理 multipart/data 请求实现文件上传
  5. Windows下Python的pd.read_excel()报错
  6. html中怎么给url格式化,如何将文本中的url提取出来格式化,然后将其它的html escape?...
  7. FPGA--------随笔总结(持续更新)
  8. 可口可乐造型设计_可口可乐推出黑科技音响,还能当冰箱用?
  9. pytorch 入门学习使用逻辑斯蒂做二分类-6
  10. JavaScript 实现:输出斐波那契数列