最近公司做小程序需要用到消息推送,笔者在一路采坑做完后几个笔记,希望能帮到大家少采坑。

如果你连小程序都没有注册也没有做,那就不要继续看了。。。。。。。

微信官方文档:  微信消息推送      微信小程序订阅消息


一、加上依赖

        <!-- 针对   org.apache.commons.codec.binary.Base64,需要导入架包           --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.9</version></dependency>

入架包commons-codec-1.9(或commons-codec-1.8等其他版本)

否则在base64 操作上 会报 Last encoded character (before the paddings if any) is a valid base 64 alpha 的错


二、编写验证URL代码

微信消息推送工具类

import java.security.MessageDigest;
import java.util.Arrays;public class WXMsgPushUtils {/*** 用SHA1算法生成安全签名*/public static String getSHA1(String... values) throws Exception {try {String[] array = new String[values.length];for (int i = 0; i < values.length; i++) {array[i] = values[i];}StringBuffer sb = new StringBuffer();// 字符串排序Arrays.sort(array);for (int i = 0; i < values.length; i++) {sb.append(array[i]);}String str = sb.toString();// SHA1签名生成MessageDigest md = MessageDigest.getInstance("SHA-1");md.update(str.getBytes());byte[] digest = md.digest();StringBuffer hexstr = new StringBuffer();String shaHex = "";for (int i = 0; i < digest.length; i++) {shaHex = Integer.toHexString(digest[i] & 0xFF);if (shaHex.length() < 2) {hexstr.append(0);}hexstr.append(shaHex);}return hexstr.toString();} catch (Exception e) {e.printStackTrace();throw new Exception("SHA1加密失败");}}
}

验证URL接口


import WXMsgPushUtils;
import org.springframework.web.bind.annotation.*;import java.util.Map;/*** 微信小程序 模板消息推送*/
@RestController
@RequestMapping("weixinpublic")
public class WxMsgPushController {/*** 正确响应微信发送的Token验证,注意 这里是 get请求**/@GetMapping("/verify")public String verifyUrl(@RequestParam Map<String, String> params) throws Exception {// 微信发送的请求中 会有四个参数// 微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。String signature = params.get("signature");// 随机字符串String echostr = params.get("echostr");// 时间戳String timestamp = params.get("timestamp");// 随机数String nonce = params.get("nonce");// 消息推送配置中的 Token(令牌)String token = "DTBMpnU";// 验证String msgSignature = WXMsgPushUtils.getSHA1(token, timestamp, nonce);// 验证失败if (!signature.equals(msgSignature)) {return "false";}// 验证成功 将 echostr 原格式返回 ,即可完成验证return echostr;}
}

题外话。。。。微信官方给的文档说明是三个参数加密,但是下载得到的java 官方demo 加密参数是4个,不知道为啥。。。。浪费了半天时间

但是官方文档上写的 又是三个参数

最后删除 掉demo中的一个参数 测试成功.


三、登录微信平台,配置消息推送,验证URL

URL地址为项目推送的接口地址,即 微信官方会像这个接口地址发送GET请求,验证接口以及验证消息的确来自微信服务器,所以需要配置上服务器的接口地址(需要单独写一个接口来验证)

Token :自定义任意满足微信规则的字符,记录下来验证接口中会用到

EncodingAESKey:我是点击随机生成的,大家也可按需操作,一个月只能修改三次

加密方式、数据格式 大家按需就好不会影响验证 URL

完成代码的编写和这边的配置,确定好两边 Token一致,点击提交即可完成配置

微信消息推送配置详解 JAVA后端版本相关推荐

  1. Android 消息推送框架详解

    消息推送的概念 消息推送,是指绕过手机运营商,通过TCP/IP网络传输的方式,向应用程序发送数据,这些数据包括简单的文本,图片,或者其他多媒体数据. 与手机运营商发送短信的方式相比,消息推送普及性和可 ...

  2. php微信 消息推送 配置,模板消息通知配置

    我们将介绍如何开发模板消息,即如何用程序发送模板消息功能. 本文分为以下三个部分:申请模板消息权限 开发模板消息SDK 构造模板消息体并发送 一.申请模板消息权限 模板消息的申请需账号已经开通微信支付 ...

  3. Java后台微信点餐小程序开发最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序,包含语音提示,微信消息推送,网页管理后台

    由于之前的Java后台微信点餐小程序有些知识点过时了,所以今天重新出一版,把里面过时的知识点更新下 前五章是部署笔记,后面是知识点的详细讲解,大家可以先看部署笔记,部署起来后,再跟着详细知识学习. 第 ...

  4. java发送qq消息_Java点餐系统和点餐小程序新加微信消息推送功能

    其实想给点餐系统加推送很久了,之前也有单门写过Java版的微信消息推送和云开发版的微信消息推送.之所以一直没有加,也是考虑到大家的学习接受度,因为做订阅消息推送是一个综合性的开发工作. 需要你既要会小 ...

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

    小程序(消息推送配置)与服务号(服务器配置)通用配置方法都是一样的. 以公众号为例子 设置与开发->基础设置->服务器配置 一:在服务器后台添加一个验证类(接口) package com. ...

  6. TP6 微信小程序消息推送配置Token校验失败200302

    ThinkPHP6 微信小程序消息推送配置时报错: {"ret":200302,"err_msg":"verify token fail"} ...

  7. 微信小程序——消息推送配置

    第一步:官网下载对应版本的cryptoDemo 下载地址:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip 第二步:创建检查文件wxchec ...

  8. 微信小程序开发消息推送配置教程

    微信小程序开发消息推送配置教程 微信小程序开发消息推送配置这一块网上都是PHP居多,由于用egg.js写了一套验证方法. 第一步:填写服务器配置 登录微信小程序官网后,在小程序官网的"设置- ...

  9. 小程序消息推送配置服务器修改,微信小程序——消息推送配置

    第一步:官网下载对应版本的cryptoDemophp 下载地址:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zipjson 第二步:建立检查文 ...

最新文章

  1. 二进制,十进制,十六进制
  2. VS2013 C#中调用DLL
  3. 随机名字生成小demo源码
  4. WARNING: You are using pip version 19.2.3, however version 20.1.1 is available. You should consi解决办法
  5. 【2015蓝桥杯省赛】C++ B组试题
  6. 浙江省计算机数据库三级报名,浙江省计算机等级考试三级数据库技术
  7. 修改maven默认仓库(即repository)的路径
  8. 互联网项目架构经验分享
  9. Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
  10. 人工智能之语音识别概述(一)
  11. 第一章:计算机基础知识——知识点整理
  12. 如何导出html中的图片,一键保存网页中的全部图片
  13. 牛刀:中国未来房价基本走势…
  14. WIN10下删除Hiberfil.sys文件
  15. Python3.7 安装Airflow 报错tenacity.async import AsyncRetrying
  16. 数据分析-数据指标描述业务之--咸鱼APP
  17. 护眼灯的标准是什么?护眼台灯国家标准给你答案
  18. 亚马逊正式发布Fire Phone 合同价199美元起
  19. 同时用公司内网和手机热点上网(真的有用!)
  20. perl 串口 linux,Perl的串口操作Win32::SerialPort

热门文章

  1. 觉醒力量 (hidpower)
  2. redis保存登录用户信息
  3. kmeans聚类算法_机器学习/算法校招面试考点汇总(附面试题和答案)【持续更新】_笔经面经...
  4. Html中img标签中的属性
  5. 能翻译维吾尔语的软件有哪些?这几个可以用用看
  6. Centos7安装SonarQube常见问题
  7. 可逆残差网络:不存储激活的反向传播 Reversible Residual Network: Backpropagation Without Storing Activations
  8. linux命令随记(更新ing)
  9. matplotlib plot 3d 画图
  10. 《U盘密使》V1.1