本篇主要介绍如何把自己的服务器接入到微信公共平台,服务器端使用python+flask开发,并部署到sinaapp服务器上。
上篇中提到过在接入配置中主要有三个内容需要填写,URL/Token/域名。URL就是要接入的服务器微信消息处理地址,Token可以是自己定义的一个字符串,用于校验。接下来我们主要实现用于接入校验用的接口。
首先需要实现flask app
from flask import Flask, request, render_template app = Flask(__name__) app.debug = True app.secret_key = APP_SECRET_KEY #公众号消息服务器网址接入验证 #需要在公众帐号管理台手动提交, 验证后方可接收微信服务器的消息推送 @app.route('/weixin', methods=['GET']) def weixin_access_verify(): pass
在微信测试帐号的配置页面中,当我们填写URL时,微信服务器会通过GET方式发起一次校验请求,我们就在weixin_access_verify函数中处理微信的校验请求,并返回请求中的echostr,如果微信服务器能正确的收到echostr为内容的响应,则认为该配置成功。
接下来我们实现请求校验函数
TOKEN = 'douban_book' #注意要与微信公众帐号平台上填写一致 #接入和消息推送都需要做校验 def verification(request): signature = request.args.get('signature') timestamp = request.args.get('timestamp') nonce = request.args.get('nonce') tmplist = [TOKEN, timestamp, nonce] tmplist.sort() tmpstr = ''.join(tmplist) hashstr = hashlib.sha1(tmpstr).hexdigest() if hashstr == signature: return True return False上面代码中的TOKEN一定要和微信测试帐号配置页面中的Token字段一致,否则会提示配置失败。该函数主要就是针对请求中的timestamp/nonce和TOKEN字段进行特定算法的计算,然后和请求中的signature字段进行校验,只有两者一致才说明校验成功。具体算法可以查看http://mp.weixin.qq.com/wiki/0/61c3a8b9d50ac74f18bdf2e54ddfc4e0.html#.E4.BD.BF.E7.94.A8.E6.96.B9.E6.B3.95
接下来我们可以实现weixin_access_verify函数,该函数首先对请求进行校验,如果校验成功则把echostr返回,否则返回“access verification fail“
#公众号消息服务器网址接入验证 #需要在公众帐号管理台手动提交, 验证后方可接收微信服务器的消息推送 @app.route('/weixin', methods=['GET']) def weixin_access_verify(): echostr = request.args.get('echostr') if verification(request) and echostr is not None: return echostr return 'access verification fail'至此,服务端相关的代码已经完成,接下来就到测试帐号的配置页面进行配置,最终配置如下图所示
至此,配置工作已经完成,下篇我们就要完成书籍信息查询功能。