暂无描述

django_we_callback_settings.py 5.3KB

    # -*- coding: utf-8 -*- import logging from django.conf import settings logger = logging.getLogger('logit') def DJANGO_WE_CFG_FUNC(request, state=None): """ WeChat CFG Callback Func """ def DJANGO_WE_QUOTE_STATE_FUNC(request, state): """ WeChat Quote Callback Func """ from utils.redis.connect import r return r.quote(state, short_uuid=True) def DJANGO_WE_UNQUOTE_STATE_FUNC(request, state): """ WeChat UnQuote Callback Func """ from utils.redis.connect import r # If Not Buf, When Wechat Multi Request, Unquote Will Get None # Then Once Should ReOAuth, Will Raise Error return r.unquote(state, buf=True) or state def DJANGO_WE_BASE_FUNC(code, state, access_info=None): """ WeChat Base Redirect Callback Func """ def DJANGO_WE_BASE_COOKIE_FUNC(code, state, access_info=None): """ WeChat Base Set Cookie Redirect Callback Func """ def DJANGO_WE_USERINFO_FUNC(code, state, access_info=None, userinfo=None): """ WeChat Userinfo Redirect Callback Func """ from django.conf import settings from utils.redis.connect import r from utils.user.userinfo_save import userinfo_save # Save profile or something else user = userinfo_save(userinfo) token_check_key = getattr(user, settings.TOKEN_CHECK_KEY) return { settings.TOKEN_CHECK_KEY: token_check_key, 'vtoken': r.token(token_check_key, ex=True, time=r.REDIS_EXPIRED_ONE_DAY, buf=False, short_uuid=True), } def DJANGO_WE_USERINFO_COOKIE_FUNC(code, state, access_info=None, userinfo=None): """ WeChat Userinfo Set Cookie Redirect Callback Func """ from django.conf import settings from utils.user.userinfo_save import userinfo_save # Save profile or something else user = userinfo_save(userinfo) token_check_key = getattr(user, settings.TOKEN_CHECK_KEY) return {}, settings.TOKEN_CHECK_KEY, token_check_key def DJANGO_WE_SHARE_FUNC(request, state=None): """ WeChat Share Callback Func """ # from django.conf import settings # return settings.WECHAT_OAUTH2_REDIRECT_URL def DJANGO_WE_MESSAGE_CALLBACK_FUNC(request, xmldict, decrypted): """ WeChat Message Callback Func """ from django_we.models import SubscribeUserInfo from pywe_custom_message import send_custom_card_message from pywe_event_message import parse_eventkey from pywe_storage import RedisStorage from pywe_user import get_user_info from utils.redis.connect import r # 带参二维码关注 # OrderedDict([(u'ToUserName', u'gh_c87efc299ce5'), (u'FromUserName', u'oK7eEjjqhoE6bTLX3k5Xa2reWzuI'), (u'CreateTime', u'1598825495'), (u'MsgType', u'event'), (u'Event', u'subscribe'), (u'EventKey', u'qrscene_book'), (u'Ticket', u'gQGc8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyZFdDRHcwSFRhNGUxMDAwMGcwNzQAAgRSHkxfAwQAAAAA')]) logger.info(xmldict) logger.info(decrypted) event = decrypted.get('Event', '') eventkey = decrypted.get('EventKey', '') openid = decrypted.get('FromUserName', '') if event == 'subscribe' or event == 'unsubscribe': JSAPI = settings.WECHAT.get('JSAPI', {}) appid = JSAPI.get('appID', '') appsecret = JSAPI.get('appsecret', '') # 获取用户信息 userinfo = get_user_info(openid, appid=appid, secret=appsecret, storage=RedisStorage(r)) subscribe, unionid, openid = userinfo.get('subscribe', ''), userinfo.get('unionid', ''), userinfo.get('openid', '') # 更新关注信息 if subscribe: SubscribeUserInfo.objects.update_or_create(openid=openid, defaults={ 'unionid': unionid, 'nickname': userinfo.get('nickname', ''), 'sex': userinfo.get('sex', ''), 'headimgurl': userinfo.get('headimgurl', ''), 'country': userinfo.get('country', ''), 'province': userinfo.get('province', ''), 'city': userinfo.get('city', ''), 'subscribe': userinfo.get('subscribe', ''), 'subscribe_time': userinfo.get('subscribe_time', ''), 'subscribe_scene': userinfo.get('subscribe_scene', ''), 'groupid': userinfo.get('groupid', ''), 'tagid_list': userinfo.get('tagid_list', ''), 'qr_scene': userinfo.get('qr_scene', ''), 'qr_scene_str': userinfo.get('qr_scene_str', ''), 'language': userinfo.get('language', ''), 'remark': userinfo.get('remark', ''), }) else: SubscribeUserInfo.objects.filter(openid=openid).update(subscribe=subscribe) # 根据场景值判断是否发会员卡 if eventkey: scene = parse_eventkey(eventkey, event='subscribe') if scene: send_custom_card_message( openid=openid, card_id=settings.DJANGO_WE_MEMBER_CARD_ID, appid=appid, secret=appsecret, storage=RedisStorage(r) ) def DJANGO_WE_COMPONENT_AUTH_FUNC(request, xmldict, decrypted): """ WeChat COMPONENT Auth Func """ def DJANGO_WE_COMPONENT_CALLBACK_FUNC(request, appid, xmldict, decrypted): """ WeChat COMPONENT Callback Func """ def DJANGO_WE_REDIS_OBJ_FUNC(request): """ WeChat Redis Object Callback Func """ from utils.redis.connect import r return r