最近在搞微信公众平台开发,挺有意思的,也很简单。今天在这里和大家分享一下接入,这是进行微信平台开发的基本要素。
其实在微信公众平台开发者文档中对接入是有详细说明的,我们主要是改用django来处理微信服务器发来的请求。
消息接口申请与验证:
登录微信开发平台,在“开发模式”页面里进行服务器配置:
URL是开发者用来接收微信服务器数据的接口URL,Token则是用于签名,可以任意填写。
接下来就是验证,这里我们必须有线上环境来响应微信服务器的请求。
在Django工程中编写如下View:
class Weixin(View): token = 'your_token' def validate(self, request): signature = request.REQUEST.get('signature', '') timestamp = request.REQUEST.get('timestamp', '') nonce = request.REQUEST.get('nonce', '') tmp_str = hashlib.sha1(''.join(sorted([self.token, timestamp, nonce]))).hexdigest() if tmp_str == signature: return True return False def get(self, request): if self.validate(request): return HttpResponse(request.REQUEST.get('echostr', '')) raise PermissionDenied
get方法接收微信服务器的请求,并且请求的URL中会包含四个参数,可以利用它们对请求进行验证:
signature:微信加密签名;
timestamp:时间戳;
nonce:随机数;
echostr:随机字符串,用于返回。
validate方法就是处理验证,我们将token、timestamp、nonce进行加密,并与signature进行比较,如果相同则校验成功,反之失败。其中加密流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序;
2. 将三个参数字符串拼接成一个字符串进行sha1加密。
如果校验成功,则表明请求确实来自于微信服务器。现在原样返回echostr参数的内容,则接入生效。接下来就可以正式开发了!
mark,感谢博主分享,正在学