python3实现微信公众号确认己方服务器

3 篇文章 0 订阅
1 篇文章 0 订阅
def wechat_auth_required(log_base='[wechat_api]'):

    def decorator(view_func):
        @wraps(view_func)
        def wrapper(instance, request, *args, **kwargs):
            signature = request.GET.get('signature', None)
            echostr = request.GET.get('echostr', None)
            nonce = request.GET.get('nonce', None)
            timestamp = request.GET.get('timestamp', None)
            valid_flag = False
            if signature \
                    and nonce \
                    and timestamp:
                _list = sorted((
                    timestamp,
                    nonce,
                    'qeoi2mri13kr5jn42oorw'  #自己随便编一个,和微信公众号后台配置一致即可
                ))
                sha1 = hashlib.sha1()
                for item in _list:
                    sha1.update(item.encode('utf8'))
                hashcode = sha1.hexdigest()
                if hashcode == signature:
                    valid_flag = True
            if not valid_flag:
                logger.error(
                    '%s invalid param: [signature: %s] '
                    '[echostr: %s] [nonce: %s] [timestamp: %s]',
                    log_base, signature, echostr,
                    nonce, timestamp
                )
                return JsonResponse({'status': 1})
            else:
                return view_func(instance, request, *args, **kwargs)

        return wrapper

    return decorator


class WxCallbackView(View):

    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)

    @wechat_auth_required('[WXRobot] [GET]')
    def get(self, request):
        echostr = request.GET.get('echostr')
        return HttpResponse(echostr)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值