微信公众号开发-遇到的坑
程序员文章站
2022-03-07 16:39:13
在配置后端服务器时,报错 "系统发生错误,请稍后重试" 情景:配置如下截图: 按照要求使用http标准80端口,但是提交就报错。在服务端抓包,根本没收到请求。那这个报错就是微信公众平台没有发送过来呀。 折腾了半个小时! 我去,发现不能在url中指定80端口,就可以成功,如下图: 这样不指定端口才正确 ......
在配置后端服务器时,报错 "系统发生错误,请稍后重试"
情景:配置如下截图:
按照要求使用http标准80端口,但是提交就报错。在服务端抓包,根本没收到请求。那这个报错就是微信公众平台没有发送过来呀。
折腾了半个小时!
我去,发现不能在url中指定80端口,就可以成功,如下图:
这样不指定端口才正确。微信说明还是不是很明确
在handle模块,实例代码是py2代码,py3中要进行编码转换
- 微信开发文档的代码,在py3中执行会一直报token验证错误。
# -*- 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) # 这里list中的字符串在py2中是符合sha1.update要求的 hashcode = sha1.hexdigest() print "handle/GET func: hashcode, signature: ", hashcode, signature if hashcode == signature: return echostr else: return "" except Exception, Argument: return Argument
- py3修改后的
""" 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 = "****" # 自己定义的tokent list = [token, timestamp, nonce] list.sort() sha1 = hashlib.sha1() sha1.update(''.join(list).encode('utf-8')) # 将py3中的字符串编码为bytes类型 hashcode = sha1.hexdigest() print("handle/GET func: hashcode, signature:", hashcode, signature) if hashcode == signature: return echostr else: return "" except Exception as e: print(e) if __name__ == '__main__': pass