關於Django開發微信
使用第三方包WeChat-python-sdk
# from wechat_sdk import WechatBasic # from wechat_sdk.exceptions import ParseError # from wechat_sdk.messages import EventMessage # from wechat_sdk.context.framework.django import DatabaseContextStore wechat_instance = WechatBasic( token='spreadassistant.chltec.com', appid='wxacbc8e8621b5140e', appsecret='11d1e1723475771e958d1252f6ad045a' ) @csrf_exempt def portal(request): if request.method == 'GET': # 檢驗合法性 # 從 request 中提取基本信息 (signature, timestamp, nonce, xml) signature = request.GET.get('signature') timestamp = request.GET.get('timestamp') nonce = request.GET.get('nonce') if not wechat_instance.check_signature(signature=signature, timestamp=timestamp, nonce=nonce): return HttpResponseBadRequest('Verify Failed') return HttpResponse( request.GET.get('echostr', ''), content_type="text/plain") # POST # 解析本次請求的 XML 數據 try: wechat_instance.parse_data(data=request.body) except ParseError: return HttpResponseBadRequest('Invalid XML Data') # 獲取解析好的微信請求信息 message = wechat_instance.get_message() if isinstance(message, TextMessage): print '收到 文本消息' elif isinstance(message, VoiceMessage): print '收到 語音消息' elif isinstance(message, ImageMessage): print '收到 圖片消息' elif isinstance(message, VideoMessage): print '收到 視頻消息' elif isinstance(message, LinkMessage): print '收到 鏈接消息' elif isinstance(message, LocationMessage): print '收到 地理位置消息' elif isinstance(message, EventMessage): print '收到 事件消息' #關注事件(包括普通關注事件和掃描二維碼造成的關注事件) #如果 key 和 ticket 均不為空,則是掃描二維碼造成的關注事件 if message.type == 'subscribe': print '這是 關注事件' elif message.type == 'unsubscribe': print '這是 取消關注事件' elif message.type == 'scan': print '這是 已關注用戶掃描二維碼!' elif message.type == 'location': print '這是 上報地理位置' elif message.type == 'click': print '這是 自定義菜單點擊' elif message.type == 'view': print '這是 自定義菜單跳轉鏈接' elif message.type == 'templatesendjobfinish': print '這是 模板消息' reply_text = '已經響應了' response = wechat_instance.response_text(content=reply_text) return HttpResponse(response, content_type="application/xml")
以上代碼思路比較清晰所以做個記錄吧,但是看到https://github.com/doraemonext/wechat-python-sdk表示該項目已經停止開發,推薦使用 https://github.com/jxtech/wechatpy/ 作為替代品。