首页 > 编程语言 >Python接入微信公众号Token验证

Python接入微信公众号Token验证

时间:2022-10-30 17:44:54浏览次数:78  
标签:sha1 return Python 微信 list hashcode Token echostr signature

注意点

  1. 官方示例是Pthon2 版本的,如果是Python3 版本需要有改动
  2. 验证成功返回 echostr 要是 数字格式的

公众号侧配置 (公众号后台 - 基本配置)

1667122669175

服务器侧配置

  1. 代码部分

官方示例(python2)

# -*- coding: utf-8 -*-
# filename: handle.py

import hashlib
import web

class Handle(object):
    def GET(self):
        try:
            data = web.input()
            if len(data) == 0:
                return "hello, this is handle view"
            signature = data.signature
            timestamp = data.timestamp
            nonce = data.nonce
            echostr = data.echostr
            token = "xxxx" #请按照公众平台官网\基本配置中信息填写

            list = [token, timestamp, nonce]
            list.sort()
            sha1 = hashlib.sha1()
            map(sha1.update, list)
            hashcode = sha1.hexdigest()
            print "handle/GET func: hashcode, signature: ", hashcode, signature
            if hashcode == signature:
                return echostr
            else:
                return ""
        except Exception, Argument:
            return Argument

python3 版本 (Django)

class WeChatTokenViewSet(viewsets.ViewSet):
    def list(self, request):
        try:
            token = 'pTpKJrLR1qwaNat6mzUWXvVblHB1uZS3'
            timestamp = request.query_params.get('timestamp')
            nonce = request.query_params.get('nonce')
            echostr = request.query_params.get('echostr')
            signature = request.query_params.get('signature')
            list = [token, timestamp, nonce]
            list.sort()
            temp = ''.join(list)
            sha1 = hashlib.sha1(temp.encode('utf-8'))
            hashcode = sha1.hexdigest()
            print("handle/GET func: hashcode, signature: ", hashcode, signature)
            if hashcode == signature:
                return Response(int(echostr), status=status.HTTP_200_OK)
            else:
                print('微信Token校验失败')
                return Response('', status=status.HTTP_200_OK)
        except Exception as e:
            print('微信Token解析失败', e)
            return Response('', status=status.HTTP_200_OK)

完成Token 校验后

1667122669175
需要增加 IP 白名单 将服务器 IP 加入白名单
1667122669175

本文由一文多发运营工具平台 EaseWriting 发布

标签:sha1,return,Python,微信,list,hashcode,Token,echostr,signature
From: https://www.cnblogs.com/wangshaojiea/p/16841778.html

相关文章

  • SoringCloud(四) - 微信获取用户信息
    1、项目介绍2、微信公众平台和微信开放文档2.1微信公众平台2.1.1网址链接https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index......
  • python周结
    本周内容总结1.正则表达式1.1正则表达式之字符组'''字符组默认匹配方式是挨个挨个匹配'''[0123456789] 匹配0到9任意一个数(全写)[0-9] 匹配0到9任意一个数(......
  • 手记系列之一 ----- 关于微信公众号和小程序的开发流程
    前言本篇文章主要介绍的调用微信公众号和小程序之后的开发流程,主要以实现步骤为主。前提准备已经申请了微信公众号和小程序(由于官方文档写的很详细,这里就不在进行说明......
  • python虚拟环境
    python虚拟环境python-mvenvvenvdemocdvenvdemodircdLibactivatepython显示环境变量echo%PATH%importsysfrompprintimportpprintpprint(sys.path)......
  • Python学习日报
    2022.10.30重新学习Python的第一天1.Python中使用缩进来表示代码块,统一代码块中应使用相同数量的空格2.Python中使用#对文中代码进行注释,或者使用""""""来表示多行......
  • Python程序员常犯的编码错误(三)
    1.引言本文是Python程序员常犯的编码错误的第三篇,在前两篇中我们重点介绍了常见的几种错误,本文继续介绍该话题,希望大家在日常生活中多多关注。闲话少说,我们直接开始吧!2.使......
  • [python]小白尝试播放某云vip歌曲
    尝试一下能不能将某云上的vip歌曲下载到本地并且能够正常播放首先附上代码:importrequestsurl="https://music.163.com/weapi/cloudsearch/get/web?csrf_token="dat......
  • python 笔记
    虚拟环境创建虚拟环境python-mvenvenv_name激活虚拟环境进入虚拟环境路径下的script目录,执行activatecdE:\env\test_env\scripts./activate 按requiremen......
  • Python3.11正式版,它来了!
    转载请注明出处❤️作者:测试蔡坨坨原文链接:caituotuo.top/b055fbf2.html你好,我是测试蔡坨坨。就在前几天,2022年10月24日,Python3.11正式版发布了!Python官方在2020年1月......
  • Python基础核心概念(1)
    1变量和简单数据类型变量命名格式:变量名=“赋值”1.1变量使用规范使用变量时,需要遵守一些规则。违反这些规则将引发错误。~变量名只能包含数字、字母、下划线。变量名不......