微信公众号开发-遇到的坑

博文图片挂了临时解决办法
o_%E6%9F%A5%E7%9C%8B%E6%8C%82%E5%9B%BE%E4%B8%B4%E6%97%B6%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.png

在配置后端服务器时,报错 "系统发生错误,请稍后重试"

情景:配置如下截图:
1342974-20180516104020766-1507513918.png

按照要求使用http标准80端口,但是提交就报错。在服务端抓包,根本没收到请求。那这个报错就是微信公众平台没有发送过来呀。
折腾了半个小时!
我去,发现不能在url中指定80端口,就可以成功,如下图:
1342974-20180516125501863-1108963497.png
这样不指定端口才正确。微信说明还是不是很明确

在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

转载于:https://www.cnblogs.com/ZJiQi/p/9045413.html

### 微信公众号开发配置本地服务器(localhost) #### 使用Nginx配置虚拟主机 为了使微信服务器能够识别并访问本地服务器,需将`localhost`映射为外部可访问的URL。这可以通过配置Nginx作为反向代理来实现,在Nginx配置文件中添加如下内容: ```nginx server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:yourport; # 将求转发给本地服务 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 此操作使得任何发送至`yourdomain.com`的HTTP求都会被重定向到运行于本机上的应用[^1]。 #### 利用微信开发者工具进行调试 对于某些特定功能如网页授权或JS SDK接口调用,这些仅能在微信内置浏览器环境下正常运作。此时可通过安装官方提供的[微信Web开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html),它允许开发者模拟真实环境下的行为模式来进行有效的代码编写与问题排查[^2]。 #### 实现内网穿透以便公网访问 由于微信公众平台无法直接连接位于私有网络内部的服务实例,因此需要借助第三方服务完成内外网之间的通信桥接。推荐使用[NATAPP](http://natapp.org/)或其他类似解决方案创建一条安全隧道,从而让外界能顺利抵达指定的目标机器及其开放端口。一旦建立好这样的通道之后,记得更新公众账号后台的相关设置项指向新生成的有效网址[^3]。 #### 测试验证 最后一步是要确保一切设定无误——启动应用程序监听相应端口号;确认Nginx已正确加载最新修改过的站点定义;检查Ngrok/NATAPP状态显示在线且没有任何错误提示;打开微信客户端扫描二维码进入测试页面观察预期效果是否达成。如果遇到困难,则可以考虑采用[Fiddler](https://www.telerik.com/fiddler)这类抓包软件辅助定位潜在的问题所在[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值