自己的服务器通过微信公众号Token验证测试的代码(Python版)

我在阿里云租了一个云服务器,然后想把这个作为我的微信公众号的后台,启用微信公众号开发者需要正确的响应微信服务器的Token验证,为此把这个验证的Python代码贴出来,只要在服务器上运行这段代码,注意把Token的值改成你自己的值,然后在微信后台填对你的服务器的公网IP,提交就可以通过验证了

#coding=utf-8

html = ‘‘‘True
‘‘‘

import socket
import signal
import errno
import re
import os
import hashlib
from time import sleep 

wxtoken = ‘weixin‘  

def checksignature(pams):
    global wxtoken
    signature = pams[‘signature‘]
    timestamp = pams[‘timestamp‘]
    nonce = pams["nonce"];
    tmparr = [wxtoken, timestamp, nonce]
    tmparr.sort()
    tmpstr = ‘‘.join(tmparr)
    tmpstr = hashlib.sha1(tmpstr).hexdigest()
    return tmpstr == signature  

def checksignatureresponse(pams):
    if checksignature(pams):
        return pams[‘echostr‘]
    else:
        return ‘‘  

def app(data):
    s = data
    pams = dict(re.findall(‘([^=, ^&, ^?]*)=([^=, ^&]*)‘, s))
    return checksignatureresponse(pams)

def get_str(data):
    pattern = re.compile(‘&echostr=[\d]*&times‘)
    res = pattern.findall(data)
    return res[0]

def HttpResponse(header,data):
    context = ‘‘.join(app(data))
    response = "%s %d\n\n%s\n\n" % (header,len(context),context)
    return response

def sigIntHander(signo,frame):
    print ‘get signo# ‘,signo
    global runflag
    runflag = False
    global lisfd
    lisfd.shutdown(socket.SHUT_RD)

strHost = "114.215.82.170"
HOST = strHost #socket.inet_pton(socket.AF_INET,strHost)
PORT = 80

httpheader = ‘‘‘HTTP/1.1 200 OK
Context-Type: text/html
Server: Python-slp version 1.0
Context-Length: ‘‘‘

lisfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
lisfd.bind((HOST, PORT))
lisfd.listen(2)

signal.signal(signal.SIGINT,sigIntHander)

runflag = True
while runflag:
    try:
        confd,addr = lisfd.accept()
    except socket.error as e:
        if e.errno == errno.EINTR:
            print ‘get a except EINTR‘
        else:
            raise
        continue

    if runflag == False:
        break;

    print "connect by ",addr
    data = confd.recv(1024)
    if not data:
        break
    print data
    confd.send(HttpResponse(httpheader, data))
    confd.close()
else:
    print ‘runflag#‘,runflag

print ‘Done‘

时间: 2024-08-06 11:51:34

自己的服务器通过微信公众号Token验证测试的代码(Python版)的相关文章

Thinkphp5 微信公众号token验证不成功的原因

最近要启动微信项目,上个月就开始了解微信的开发,这个月要启动项目,配置微信公众号信息一直失败.为此,我甚至手工写了微信提交过来的记录,如: &timestamp=1510210523&nonce=2414550015&signature=30b9eeb6b1134d0a53623375c48ca734c41facb5&echostr=6863786913073725439 我眼睛看着验证信息没错,输出的echostr跟get提交来的一模一样,但是还是会出错.忍无可忍,一直无

asp.net mvc 微信公众号token验证

本人的公众号要申请成为开发者,必须经过token认证.微信公众号的官方代码只列出了PHP代码的实例,明显是歧视.net用户.我用的asp.net mvc中的web api,结果调了好久都没有成功,最后发现只要下面几句即可: public void Get() { string temp = HttpContext.Current.Request.QueryString["echostr"]; HttpContext.Current.Response.Write(temp); HttpC

php:微信公众号token验证失败原因、验证码显示不出来的问题

ob_clean(); 问题描述: 用微信官方提供的demo验证token是成功的,但是放到自己网站的框架上进行token验证老是提示"token验证失败",经过检查(用生成日志的方式一步步检查的),地址,token信息,微信....等待账号信息是没有任何问题的. 解决方案: 最终在echo $_GET['echostr'];前添加了一句代码ob_clean();把问题搞定. 问题分析: 因为用的是框架,在echo $_GET['echostr'];之前可能有一些你不知道的输出到&qu

微信公众号token 验证

1. 首先给出测试项目的整体目录: 2. CoreServlet类: 当get请求的时候会执行get方法,post请求的时候会执行post方法,分别来处理不同的请求 package com.zjn.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import j

微信公众平台企业号验证接口、回调 PHP版

微信公众平台企业号验证接口.回调 PHP版,本人为了解决这个企业号的验证和发送消息的问题,整整研究了几天时间,因为微信企业号刚推出来,网上资料太少了!后来在一些朋友的帮助下和本人反复调试完善下,终于整理得到了比较理想的文档,经亲测,实验成功. include_once "WXBizMsgCrypt.php"; // 第三方发送消息给公众平台 $encodingAesKey = "rpJmhCphnndiCLIcNKcUmhTn2GQBNjISPU9GfsfOlxx"

微信公众平台——token验证php版

这几天开始接触微信公众号的开发,注册这些就不说了,我是先弄了个测试号用着.进入正题 所谓token验证,其实就是微信服务器向自己要用到的服务器url发送一段数据,其中有一个参数$_GET['echhostr'],这个参数在经过一系列逻辑判断后再原封不动返回给微信也就是 echo $_GET['echhostr']; 碰到的一些小问题解决方法如下: 1.微信开发后台上的token要与php代码中定义的一致: 2.加header('content-type:text'); 3.还不行就加 ob_cl

微信公众号开发-----个人测试装备

在微信公众号上申请个测试号. 自己找一个域名映射工具------个人推荐(花生壳外网域名访问)大约花6元开通一下就好了,系统会送域名. 查看相关微信公众号开发文档,微信支付等等... 语言个人推荐,PHP,C#,JAVA. c#把发布的网站配在IIS上用花生壳绑定IP+接口号就OK了,JAVA一样(tomcat). 原文地址:http://blog.51cto.com/13336347/2084981

django搭建微信公众号后台——验证(7.19)

php研究了好几个框架,感觉还是django强大,用起来也顺手,虽然django在微信后台这方面用得没有那么普及,但还是打算试一试,拿我自己的公众号试手. 今天主要是创建项目然后验证通过,代码还是放在pythonanywhere上. 具体怎么创建就不写了,之前有过一篇文章,这里开发用了星星的wechat-python-sdk. 在微信后台填了网址之后,在urls.py设置路由 url(r'^$', index, name='index'), 在views.py里进行验证: #-*- coding

微信公众号接入服务器验证(Go实现)

1 基本流程 将token.timestamp.nonce三个参数进行字典序排序 将三个参数字符串拼接成一个字符串进行sha1加密 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 2 请求参数 参数 描述 signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数.nonce参数. timestamp 时间戳 nonce 随机数 echostr 随机字符串 3 注册页面填写 URL填写:http://IP地址:监