最近公司刚完成了一个微信公众号和小程序配套的一个小项目,需要我去线上部署,因为第一次部署这类项目,过程中遇到了很多坑,因此把其中一些重要的步骤记录下来,防止以后在此踩坑。
说明:以下部署步骤仅仅是我个人的部署方式,可能有些做法和顺序是错误的,每个人结合自身情况来做,文章内容仅供参考。
公司申请并认证微信公众号,此步骤略。
首先进入公众号后台,找到基础设置:
截图的开发者密码已经申请。正常情况第一次进去以后要根据提示申请并认真记录开发者密码,如果遗忘需要重置密码。
拿到AppId 和 AppSecret之后,根据需求进行服务器配置,进入公众号–》开发–》基础配置
此时配置未启动,点击修改配置(如下图示例)
配置好以后,点击提交 按钮时,会向填写的URL发送一个GET请求,以此验证服务器信息是否正确。服务器接收如下:
@GetMapping(value = "/test/wx")
@ApiOperation(value = "微信", httpMethod = "GET")
public String wxFirm(@RequestParam(value = "signature", required = false) String signature,
@RequestParam(value = "timestamp", required = false) String timestamp,
@RequestParam(value = "nonce", required = false) String nonce,
@RequestParam(value = "echostr", required = false) String echostr) {
String str= null;
try {
str = wxFirm1(signature, timestamp, nonce, echostr);
} catch (Exception ex) {
ex.printStackTrace();
}
return str;
}
public String wxFirm1(String signature, String timestamp, String nonce,String echostr) throws Exception {
String checktext = null;
System.out.println("signature"+signature);
System.out.println("timestamp"+timestamp);
System.out.println("nonce"+nonce);
System.out.println("echostr"+echostr);
if (null != signature) {
// 对ToKen,timestamp,nonce 按字典排序,这里需要注意的是”abc123“和我们在微信公众号内配置的一样。
String[] paramArr = new String[] { "abc123", timestamp, nonce };
Arrays.sort(paramArr);
// 将排序后的结果拼成一个字符串
String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
// 对接后的字符串进行sha1加密
byte[] digest = md.digest(content.toString().getBytes());
checktext = byteToStr(digest);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
System.out.println(checktext);
// 将加密后的字符串与signature进行对比
if(checktext.equals(signature.toUpperCase())) {
return echostr;
}else {
return "false";
}
}
如果配置成功,会保存成功,如果配置失败,则会有相应提示。
这里需要注意的是,配置该信息的时候,使用的是get请求,但是后续接收公众号转发过来的消息的是post请求,所以这里保存成功以后,要把get请求改为post请求,否则接收消息会报错。
服务器信息配置完以后,需要配置白名单,否则在获取access_token等信息的时候会报错,not in whitelist
,添加位置如下:
在这里插入图片描述
建议将服务器IP地址和本地测试地址添加。
菜单设置相对较为简单,只要有微信公众号的AppId和AppSeret
即可,这里附上微信提供的接口调试工具:
微信公众平台接口调试工具(https://mp.weixin.qq.com/debug)
1)首先填写信息获取access_token:如下图
将上述得到的access_token复制进行下一步
2)设置菜单如下图(填写access_token即可):
这里提供一份菜单JSON的文件模板:
{
"button": [
{
"name": "互联网医院",
"sub_button": [
{
"type": "view",
"name": "关于互联网医院",
"url": "https://www.baidu.com"
},
{
"type": "view",
"name": "历史推文",
"url": "https://www.baidu.com"
}
]
},
{
"type": "view",
"name": "在线问诊",
"url": "https://www.baidu.com"
},
{
"type": "view",
"name": "自助下单",
"url": "https://www.baidu.com"
}
]
}
用户点击公众号的时候,我们必然想要获得一些用户信息,比如用户的OpenId、头像等,但是获得信息的文件目录必须是在微信授权过的,所以需要我们自己配置。
进入公众号后台,设置–》公众号设置–》功能设置
如下图:
点击设置,仔细阅读上述文件。
这大概是基本步骤,剩下的步骤有时间在补充。如果错误,请评论指正。
这大概是基本步骤,剩下的步骤有时间在补充。如果错误,请评论指正。