300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众平台的:服务器配置 消息推送配置

微信公众平台的:服务器配置 消息推送配置

时间:2021-07-12 22:31:27

相关推荐

微信公众平台的:服务器配置 消息推送配置

小程序(消息推送配置)与服务号(服务器配置)通用配置方法都是一样的。

以公众号为例子 设置与开发-》基础设置-》服务器配置

一:在服务器后台添加一个验证类(接口)

package com.jeesite.modules.sys.web;import mon.lang.StringUtils;import mon.web.BaseController;import com.jeesite.modules.msg.utils.WeixinMsgPushUtils;import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;import mons.logging.Log;import mons.logging.LogFactory;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.InputStream;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;/*** 微信token验证Controller* @author cgq* @version -04-21*/@Controller@RequestMapping(value = "/sys/wxToken")public class WxTokenController extends BaseController {private static String token = "这里是自定义的token,需和你提交的token一致";/*** 校验签名** @param signature* 签名* @param timestamp* 时间戳* @param nonce* 随机数* @return 布尔值*/public static boolean checkSignature(String signature, String timestamp, String nonce) {String checktext = null;if (null != signature) {// 对ToKen,timestamp,nonce 按字典排序String[] paramArr = new String[] {token, 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();}}// 将加密后的字符串与signature进行对比return checktext != null ? checktext.equals(signature.toUpperCase()) : false;}/*** 将字节数组转化为16进制字符串** @param byteArrays* 字符数组* @return 字符串*/private static String byteToStr(byte[] byteArrays) {String str = "";for (int i = 0; i < byteArrays.length; i++) {str += byteToHexStr(byteArrays[i]);}return str;}/*** 将字节转化为十六进制字符串** @param myByte* 字节* @return 字符串*/private static String byteToHexStr(byte myByte) {char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };char[] tampArr = new char[2];tampArr[0] = Digit[(myByte >>> 4) & 0X0F];tampArr[1] = Digit[myByte & 0X0F];String str = new String(tampArr);return str;}private static final Log log = LogFactory.getLog(WxTokenController.class);/*** 微信token验证*/@RequestMapping(value = "getToken")@GetMapping(produces = "text/plain;charset=utf-8")@ResponseBodypublic void getToken(HttpServletRequest request, HttpServletResponse response) {try {log.debug("__________signature["+request.getParameter("signature")+"]_____________");if (StringUtils.isNotBlank(request.getParameter("signature"))) {String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");if (checkSignature(signature, timestamp, nonce)) {log.debug("数据源为微信后台,将echostr["+echostr+"]返回!___000000000__");response.getOutputStream().println(echostr);}}} catch (Exception e) {e.printStackTrace();}}}

二:填写服务器配置

三:完成提交

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。