进行微信服务号开发的步骤
一个别人已经搭建好的项目参考地址:下载链接
1.搭建微信服务号的服务器
项目配置maven
<dependency>
<groupId>com.soecode.wx-tools</groupId>
<artifactId>wx-tools</artifactId>
<version>2.1.4-RELEASE</version>
</dependency>
配置微信参数
#配置如下
wx.appId=你的appId
wx.appSecret=你的appSecret
wx.token=你设置的token
wx.aesKey=如果选择安全模式,需要填入。如果是明文模式,填空就好了
wx.mchId=商户ID
controller
package com.jt.wx.controller;
import com.soecode.wxtools.api.IService;
import com.soecode.wxtools.api.WxMessageRouter;
import com.soecode.wxtools.api.WxService;
import com.soecode.wxtools.bean.WxXmlMessage;
import com.soecode.wxtools.util.xml.XStreamTransformer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@RestController
@RequestMapping("/wx")
public class WxController {
private IService iService = new WxService();
@GetMapping
public String check(String signature, String timestamp, String nonce, String echostr) {
if (iService.checkSignature(signature, timestamp, nonce, echostr)) {
return echostr;
}
return null;
}
@PostMapping
public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
// 创建一个路由器
WxMessageRouter router = new WxMessageRouter(iService);
try {
// 微信服务器推送过来的是XML格式。
WxXmlMessage wx = XStreamTransformer.fromXml(WxXmlMessage.class, request.getInputStream());
System.out.println("消息:\n " + wx.getContent());
out.println(router.route(wx));
} catch (Exception e) {
e.printStackTrace();
} finally {
out.close();
}
}
}
2.映射服务器到服务号上面
如何使用内网映射?
我这边找了下CSDN之前的博客,基本上推荐的方法有
1.花生壳,2ngrok
花生壳我去官网瞟了一眼基本上都是付费的,我就简单入个门所以不考虑
2.ngrok推荐上国内的官网上面,国外的可能有墙还是怎么的,映射失败
www.ngrok.cc
端口号选择80,红框内的一定不要填写
本地启动ngork:
3.公众号与服务器关联起来
appID,和appsecret,需要和服务器上面的一致
URL:是映射的外网地址,通过ngork映射的地址.注意增加controller的RequestMapping的值作为后缀
Token:是自己定义的与服务器保持一致就可以
4.效果测试
项目参考:下载链接