Java后台+微信小程序实现推送 “服务通知”
成功步骤:
开发——开发设置——消息推送 注意:URL填写的是:要在外网能访问的接口(需要80或者443端口才行),该接口需要包括能够验证签名的方法,具体方法如下:
只需要把下面接口中的WECHAT_TOKEN :改成 消息推送的"Token(令牌)"值 一样即可。
在模板消息——我的模板中创建一个模板消息,获取模板ID
1、java后台创建小程序 Vo类,用于封装传送的参数。
TemplateDataVo .java
WxMssVo .java
import lombok.Data; import java.util.Map; /* * 小程序推送所需数据 * */ @Data public class WxMssVo { private String touser;//用户openid private String template_id;//模版id private String page = "pages/index/index";//默认跳到小程序首页 private String form_id;//收集到的用户formid // private String emphasis_keyword = "keyword1.DATA";//放大那个推送字段 private Map<String, TemplateDataVo> data;//推送文字 }
2、java后台创建发送消息推送类
WeChatService.java 该类包括以下主要方法: 1、推送通知的主要方法类: /** * * @param access_token app的token * @param openid 用户openid * @param formId 表单ID * @param templateId 模板ID * @param keywords {与模板字段一一对应} * @return / public String pushOneUser(String access_token,String openid, String formId,String templateId,String[] keywords) 2、获取app的access_token 方法 / * 获取access_token * appid和appsecret到小程序后台获取,当然也可以让小程序开发人员给你传过来 * */ public String getAccess_token()
我们在本地的小程序开发工具构建一个这样的页面来测试下: 为什么是这样的页面?主要是为了方便获取openid、formId
index.wxml 只有 元素中 加上report-submit=“true” 才能获取得到formId,formId有效期为7天,一个formId只能发送一次通知,发完就不能再用了,formId是发送推送信息的必要条件。
<view class="container"> <form bind:submit=getOpenIdTap report-submit="true"> <button formType=submit>获取用户唯一标识openid</button> <view class=widget> <text class=column>openid:{ {openid}}</text> </view> <view class=widget> <text class=column>session_key:{ {session_key}}</text> </view> <view class=widget> <text class=column>formId:{ {formId}}</text> </view> </form> <form bind:submit="testSubmit" report-submit="true"> <button formType="submit">发送模板消息</button> <view class=widget> <text class=column>errcode:{ {errcode}}</text> </view> <view class=widget> <text class=column>errmsg:{ {errmsg}}</text> </view> </form> <view class=moto-container bindtap=bindViewTap> <text class=moto>获取列表</text> </view> </view>
index.js 将index.js中的下面几个参数换成你的即可 const APP_ID = APP_ID ;//输入小程序appid const APP_SECRET = APP_SECRET ;//输入小程序app_secret
运行小程序,点击获取openid、formId
如果出现如下图所示:formId is a mock one。 说明需要我们用真机测试才能获取formId 点击“真机调试”,用手机扫描二维码 拿到我们需要的openId、formId
回到java后台WeChatService.java
用main方法测试一下。推送成功! 看下手机端展示:
为什么不直接在 小程序中直接发送“模板消息”? 答:主要是因为真机测试时,手机不能调用本地的接口,所以不好测试,我们用真机测试获取formId,在放在java后台,模拟调用接口测试