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后台,模拟调用接口测试

经验分享 程序员 微信小程序 职场和发展