接入
提前准备
- 一个有公网IP的服务器。
- 一个部署好的Django应用。
- Pycurl(如何安装Pycurl?)
接入
官方接入文档在这里,但是检验signature的代码,官方只有php的,在Django中的python代码应该这么写:
import hashlib
from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse
@csrf_exempt
def wechat(request):
signature = request.GET.get('signature')
timestamp = request.GET.get('timestamp')
nonce = request.GET.get('nonce')
echostr = request.GET.get('echostr', '')
token = 'mytoken'
l = [token,timestamp,nonce]
l.sort()
sha1 = hashlib.sha1()
map(sha1.update, l)
hashcode = sha1.hexdigest()
result = ''
if hashcode == signature:
#验证通过
result = echostr
return HttpResponse(result)
引入csrf_exempt修饰器的原因是,默认django框架是不允许站外post数据的,而接下来,我们要接收来自微信服务器的数据。