123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- """
- web.wechat3rd.views
- ~~~~~~~~~
- """
- import logging
- from django.http import HttpResponse
- from django.views.decorators.http import require_POST
- from typing import TYPE_CHECKING
- from apps.web.core.bridge.wechat import MyWeChatComponent, MyWeChatComponentClient
- from library.wechatpy.messages import ComponentVerifyTicketMessage, ComponentUnauthorizedMessage, \
- ComponentAuthorizedMessage, ComponentUpdateAuthorizedMessage, ComponentUnknownMessage, TextMessage
- from library.wechatpy.messages import BaseMessage
- if TYPE_CHECKING:
- from django.core.handlers.wsgi import WSGIRequest
- logger = logging.getLogger(__name__)
- @require_POST
- def componentEvents(request):
- # type: (WSGIRequest)->HttpResponse
- try:
- component = MyWeChatComponent.instance() # type: MyWeChatComponent
- if not component:
- logger.error('not find correct component.')
- else:
- msgSignature = request.GET.get("msg_signature")
- timeStamp = request.GET.get("timestamp")
- nonce = request.GET.get("nonce")
- decrypt_msg = component.parse_message(request.body, msgSignature, timeStamp, nonce)
- if isinstance(decrypt_msg, ComponentVerifyTicketMessage):
- pass
- elif isinstance(decrypt_msg, ComponentUnauthorizedMessage):
- pass
- elif isinstance(decrypt_msg, ComponentAuthorizedMessage):
- pass
- elif isinstance(decrypt_msg, ComponentUpdateAuthorizedMessage):
- pass
- elif isinstance(decrypt_msg, ComponentUnknownMessage):
- pass
- except Exception as e:
- logger.exception(e)
- return HttpResponse('success')
- def authNotify(request):
- # type: (WSGIRequest)->HttpResponse
- try:
- component = MyWeChatComponent.instance() # type: MyWeChatComponent
- if not component:
- logger.error('not find correct component.')
- else:
- auth_code = request.GET.get('auth_code')
- component.do_auth(auth_code)
- except Exception as e:
- logger.exception(e)
- finally:
- return HttpResponse('success')
- def authorizerEvents(request, authorizer_appid):
- try:
- component = MyWeChatComponent.instance() # type: MyWeChatComponent
- if not component:
- logger.error('not find correct component.')
- else:
- msgSignature = request.GET.get("msg_signature")
- timeStamp = request.GET.get("timestamp")
- nonce = request.GET.get("nonce")
- message = component.parse_authorizer_message(request.body, msgSignature, timeStamp,
- nonce) # type: BaseMessage
- if isinstance(message, TextMessage):
- logger.debug('text message is: {}.'.format(str(message)))
- if message.content == 'TESTCOMPONENT_MSG_TYPE_TEXT':
- MyWeChatComponentClient(authorizer_appid, component).message.send_text(
- message.source, 'TESTCOMPONENT_MSG_TYPE_TEXT_callback')
- elif message.content == 'TEST':
- MyWeChatComponentClient(authorizer_appid, component).message.send_text(
- message.source, 'ECHO TEST')
- elif 'QUERY_AUTH_CODE' in message.content:
- auth_code = message.content.split(':')[1]
- component.do_auth(auth_code)
- MyWeChatComponentClient(authorizer_appid, component).message.send_text(
- message.source, '{}_from_api'.format(auth_code))
- except Exception as e:
- logger.exception(e)
- return HttpResponse('')
|