其实大部分还是依赖开发包,然后这个流程一直没怎么搞清楚所以略坑。
- 接入验证的时候用的GET方法带参数,接收参数然后验证并返回echostr。
- 用户向服务器发送消息时,如果是明文传送就直接request.body获取xml包然后处理就好了,和GET的无关,如果是密文传输需要再解密一下,这个开发包里面没有,所以就没有用。
刚刚测试简单的发送文字自动回复成功
消息数据还是直接发到服务器网址,所以依然是在index函数里面处理。
token = 'whufree'
@csrf_exempt
def index(request):
wechat = WechatBasic(token=token)
if request.method=='POST':
body_text=request.body
wechat.parse_data(body_text)
message = wechat.get_message()
response = None
if message.type == 'text':
if message.content == 'hi':
response = wechat.response_text(u'^_^')
else:
response = wechat.response_text(u'文字')
elif message.type == 'image':
response = wechat.response_text(u'图片')
else:
response = wechat.response_text(u'未知')
return HttpResponse(response, content_type="application/xml")
else:
signature = request.GET.get('signature') # Request 中 GET 参数 signature
timestamp = request.GET.get('timestamp') # Request 中 GET 参数 timestamp
nonce =request.GET.get('nonce')
if wechat.check_signature(signature=signature, timestamp=timestamp, nonce=nonce):
return HttpResponse(request.GET.get('echostr'))
pythonanywhere最蛋疼的是每次改了views还要reload一下、、、
注意函数前面的@csrf_exempt装饰器,没有这个post不成功会403