小程序客服及消息推送开发(后台JAVA)
最近公司在做小程序,涉及到客服及消息推送,简单的记录下开发过程及心得
客服
小程序自带的有客服功能只需要开启就行了.
选择开启后即可使用.
消息推送
首先在开发 开发设置中配置消息推送
URL: 服务器 设置自己服务器的路径.
Token(令牌): 自己设置,后面再自己的URL需对应.
EncodingAESkey(消息加密秘钥):涉及到加密解密,自己设置,推荐使用随机生成.
消息加密方式: 我这里选择的是明文模式.
数据格式: XML 和 JSON 都行,我选择的是JSON(听说JSON有问题,不过目前没遇到).
配置完后点击保存配置,此时微信端会发送一个GET请求到之前配置的URL路径中进行校检.废话不说直接贴代码
// 与接口配置信息中的Token要一致
private static String WECHAT_TOKEN = "ZIJIESHANYAO";
@RequestMapping("/checkToken")
public void get(HttpServletRequest request, HttpServletResponse response) throws Exception {
boolean isGet = request.getMethod().toLowerCase().equals("get");
PrintWriter print;
if (isGet) {
// 微信加密签名
String signature = request.getParameter("signature");
// 时间戳
String timestamp = request.getParameter("timestamp");
// 随机数
String nonce = request.getParameter("nonce");
// 随机字符串
String echostr = request.getParameter("echostr");
// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (signature != null && checkSignature(signature, timestamp, nonce)) {
System.out.println("111111111");
System.out.println("jiaoyanchenggong");
try {
print = response.getWriter();
print.write(echostr);
print.flush();
} catch (IOException e) {
e.printStackTrace();
}
} else {
}
} else {
}
}
/**
* 验证签名
*
* @param signature
* @param timestamp
* @param nonce
* @return
*/
public static boolean checkSignature(String signature, String timestamp, String nonce) {
String[] arr = new String[]{
WECHAT_TOKEN, timestamp, nonce};
// 将token、timestamp、nonce三个参数进行字典序排序
// Arrays.sort(arr);
sort(arr);
StringBuilder content = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
content.append(arr[i]);
}
MessageDigest md = null;
String tmpStr = null;
try {
md = MessageDigest.getInstance("SHA-1");
// 将三个参数字符串拼接成一个字符串进行sha1加密
byte[] digest = md