微信公众平台服务器配置启用说明

在微信公众平台机型服务器配置的时候,下图中的服务必须先在服务端跑起来,后台接口使用java开发。
在这里插入图片描述
authenticate控制器接口如下:

/**
	 * 验证只接受微信后台的服务请求
	 *     开发者通过检验signature对请求进行校验。
	 *     若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功。
	 *     验证流程如下:
	 *     1、将token timestamp nonce三个参数进行字典序排序;
	 *     2、将三个参数字符串拼接成一个字符串进行sha1加密;
	 *     3、将加密后的字符串与signature对比,相同则该请求来源于微信。
	 * @return
	 */
	@ResponseBody
	@GetMapping(value="/authenticate")
	public String authenticate(Model model, HttpServletRequest request, HttpServletResponse response) {
		String signature = request.getParameter("signature"); // 微信加密签名,结合了开发者填写的token参数和请求中的timestamp、nonce参数
		String timestamp = request.getParameter("timestamp"); // 时间戳
		String nonce = request.getParameter("nonce");         // 随机数
		String echostr = request.getParameter("echostr");     // 随机字符串
		
		// 1) 将token timestamp nonce进行字典序排序
		List<String> wxlist = new ArrayList<String>();
		wxlist.add(WxConstants.MY_TOKEN);
		wxlist.add(timestamp);
		wxlist.add(nonce);
		
		Collections.sort(wxlist);
		
		String orderstr = "";
		for (int t=0; t<wxlist.size(); t++) {
			if (wxlist.get(t) != null) {
				orderstr = orderstr + wxlist.get(t);
			}
		}
		// 2) 将三个参数字符串拼接成一个字符串并加密
		String sha1str = DigestUtils.sha1Hex(orderstr);
		
		// 3) 比对signature,是否相同
		if (sha1str != null && signature != null && sha1str.equals(signature)) {
			return echostr;
		}
		
		return "hello";
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jinwen5290

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值