微信公众号搭建本地测试环境

原因:
1、由于公司的微信公众号已经在阿里云上运营,如果有任何bug不可能去停掉服务器去调试,这就需要在本地搭建测试环境了。
2、公众号开发涉及到微信的回调,所以你本地搭建的服务器需要外网能够访问,这个时候就需要把运行在内网的服务器映射到外网去给微信访问。

方法:
1、搭建内网穿透环境:
如果喜欢自己搭建的话可以多找些关于内网穿透的资料看看,我是由于时间的关系,当时就选择了一个工具来把自己的电脑穿透到外网,(主要是收费不是很贵)。
在这里可以推荐一下:natapp, https://natapp.cn/,网络感觉还不错,虽然不快,但是基本能满足我的微信开发就足够了,我使用的是付费5/月的套餐,因为这样就能固定的外网地址。

2、映射好后,要试着访问以下映射的地址,看看是否能访问到你的服务器,可以的话就说明你的映射是成功的。如图:




3、配置公众号的测试账号:
1)、进入到微信公众号首页左侧导航栏下有个开发者工具,点击进去:

2)、在右边能看到如下的测试账号,点击进入

3)、用个人微信扫一扫进去即可登录个人的测试账号,此时会有如下的东西,这个是公众号开发的时候需要用到的参数。
注:这些最好用配置文件的形式保存,方便以后修改为正式环境的参数!

4)、这个url是微信那边需要发个验证请求过来的,需要你配置一个你服务器的外网地址,即第一步我们将公众号服务器映射到外网的地址,(注意端口号哦)。token的话自己随机设置,并保存到配置文件中。


5)、当你点击提交的时候,微信会立刻试着发个请求到这个地址上去,如果请求成功的话,可以看到如下图;

url尾部的wechat,是因为我本地用了nginx路由转向,这个转向就是转到我的本地公众号服务器。(如果还没有接触nginx的话,可以先试着直接把映射的端口直接跟你公众号服务器端口设置成一样,就是如下图的本地端口。不过一般还是建议搭配nginx使用,这样就不用总是去改端口,只需要配置好你的nginx代理服务器就可以了。


6)、微信发送认证请求到你本地服务器的代码如下,这个是node的代码,这个代码只在微信认证的时候使用,平时注释掉即可:
// 微信url 验证token代码
router.get('/',function function_name(req,res) {
// body...
var state = req.query.state;
//console.log(req);
var Isign = sign.checkSignature(req.query);
console.log('sign',Isign);
if(!Isign){
//如果签名不对,结束请求并返回
res.end('signature fail');
}
if (req.method == "GET") {
//如果请求是GET,返回echostr用于通过服务器有效校验
res.end(req.query.echostr);
}
});
sign文件的检查签名
var crypto = require('crypto');
checkSignature = function (query) {
var signature = query.signature;
var timestamp = query.timestamp;
var nonce = query.nonce;

var shasum = crypto.createHash('sha1');
var arr = [configs.token, timestamp, nonce].sort();
shasum.update(arr.join(''));

return shasum.digest('hex') === signature;
};
7)、当你到这一步的时候,相信你微信扫一扫关注的测试账号就可以给你测试使用了,真机测试如下图:
### Java 微信公众号开发本地测试环境搭建 #### 1. 准备工作 为了设置Java微信公众号开发的本地测试环境,需要安装并配置一些必要的工具和服务。 - **JDK 安装** 确保已安装 JDK 并设置了 JAVA_HOME 环境变量。可以通过命令 `java -version` 来验证是否成功安装[^3]。 - **IDE 配置** 推荐使用 IntelliJ IDEA 或 Eclipse 进行项目开发。这些 IDE 提供了良好的调试支持和插件生态。 - **Maven 构建工具** 用于管理依赖项和构建项目。通过 Maven 可以轻松引入所需的库文件,如 WeChat SDK 和其他第三方包。 #### 2. 获取开发者凭证 前往微信公众平台官网注册成为开发者,并获取 AppID 和 AppSecret。这两个参数对于后续接口调用至关重要。 #### 3. 设置服务器地址 由于微信服务器无法直接访问内网 IP 地址,在本地环境中需借助 ngrok 工具来创建隧道映射外部可访问 URL 到本机服务端口上运行的应用程序实例。 下载并启动 ngrok 后执行如下命令: ```bash ./ngrok http 8080 ``` 这会生成一个公网可用链接,将其作为回调URL提交给微信后台审核备案。 #### 4. 开发框架集成 选择合适的开源框架简化开发流程,比如 Weixin-java-tools 库提供了丰富的 API 封装,能够快速实现消息处理逻辑等功能模块。 添加 Maven 依赖到 pom.xml 文件中: ```xml <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>LATEST_VERSION_HERE</version> </dependency> ``` 注意替换 LATEST_VERSION_HERE 为最新版本号。 #### 5. 编写核心业务代码 基于所选框架编写接收事件推送、发送被动回复以及主动发起请求等相关功能的具体实现方式。 例如定义控制器类监听来自微信的消息通知路径 `/wechat/callback`: ```java @RestController @RequestMapping("/wechat") public class WeChatController { private final WxMpService wxMpService; @Autowired public WeChatController(WxMpService wxMpService) { this.wxMpService = wxMpService; } @GetMapping("/callback") public String handleGet(@RequestParam(name="signature", required=false) String signature, @RequestParam(name="timestamp", required=false) String timestamp, @RequestParam(name="nonce", required=false) String nonce, @RequestParam(name="echostr", required=false) String echostr){ try{ if(wxMpService.checkSignature(timestamp, nonce, signature)){ return echostr; // 返回随机字符串完成对接验证 } }catch(Exception e){ log.error(e.getMessage(),e); } return "error"; } } ``` 以上展示了 GET 请求处理器方法用来响应首次接入时的安全校验过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值