导读
小伙伴们,在前面的博客中.我们做了微信公众号开发的准备工作.今天我们来搭架微信公众号项目,并且将本地项目通过穿透工具和微信服务器调通.
在我的微信开发中好用的开源项目这篇文章中,我介绍了一款开源的微信开发SDK。我们的项目就是基于文中所提到的demo项目来搭建。
由于时间缘故,在这里我们就不花时间来介绍项目搭架的步骤。我已经将项目搭建好传到码云,请大家下载即可。
项目地址:https://gitee.com/milogenius/milogenius-wechat
项目下载完毕,目录结构如下图:
接下来,我们需要在application.yml
配置文件中,配置自己微信测试公众号的相关信息。
注明:假如没有自己的测试公众号,可以阅读申请微信公众账号测试号这篇文章,申请自己的测试公众号,然后获得微信公众号的相关信息。
综上所述,我们的微信公众号项目搭建完毕,然后启动项目。
大家在application.yml
配置文件中可以发现,我们项目的端口是9998,因此我们需要开启穿透工具的9998端口号。
开启命令:
cpolar http 9998
注明:如果你还没有安装cpolar穿透工具,请参见我的另一篇博客windows下安装cpolar
我们知道,当我们开发机联调外网,通过一些操作,就可以调用微信的接口获取想要的信息。那么微信服务器如何调用我方服务器?大家都知道我们开发机一般都是内网,微信服务器无法直接调用我们的服务,这个难题在我们利用穿透工具之后迎刃而解。现在打通了网络,但是我们要告诉微信服务器去请求谁,这就是我们接下来要做的配置。
微信公众号项目认证入口类WxPortalController
@RestController
@RequestMapping("/wx/portal/{appid}")
public class WxPortalController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private WxMpService wxService;
private WxMpMessageRouter messageRouter;
@Autowired
public WxPortalController(WxMpService wxService, WxMpMessageRouter messageRouter) {
this.wxService = wxService;
this.messageRouter = messageRouter;
}
@GetMapping(produces = "text/plain;charset=utf-8")
public String authGet(@PathVariable String appid,
@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) {
this.logger.info("\n接收到来自微信服务器的认证消息:[{}, {}, {}, {}]", signature,
timestamp, nonce, echostr);
if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
throw new IllegalArgumentException("请求参数非法,请核实!");
}
if (!this.wxService.switchover(appid)) {
throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid));
}
if (wxService.checkSignature(timestamp, nonce, signature)) {
return echostr;
}
return "非法请求";
}
通过查看认证入口类,我们可以获得配置的路径
域名/wechat/wx/portal/测试公众号的appid
例如:https://6dd0c0b1.cpolar.io/wechat/wx/portal/wx5862395d992d
接下来,我们将路径配置到测试公众号相关位置(token随便填)之后,点击认证。
假如失败,会如下图所示:
如果我们出现上述情况,多点几次认证,就会成功,可能和穿透工具不稳定有关。
假如成功,会如下图所示;
配置完成如下图所示:
友情提示:这里配置域名不带https://
,请大家格外注意。
通过上面的步骤,我们就完成了微信公众号项目的搭建和本地服务器与微信服务器网络策略的调试,接下来,我们就可以学习微信公众号的各个功能。
返回专栏目录 |
---|