小程序后台。订阅消息里面,新建一个消息模板
小程序代码,登录后,弹出订阅信息
requestSubscribeMessage: function () {wx.requestSubscribeMessage({tmplIds: ['-323232-32323'], // 替换为你的模板IDsuccess(res) {// 用户订阅结果console.log(res);},fail(err) {console.error('订阅消息失败', err);}});},
JAVA后台发送消息提醒
<!--小程序的API包--><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-miniapp</artifactId><version>4.5.0</version></dependency>
#微信小程序的appid 开发者工具拿到
wx.miniapp.configs.appid=111
#开发者工具拿到Secret
wx.miniapp.configs.secret=1111
#微信小程序消息服务器配置的token
wx.miniapp.configs.token=123随便写
#微信小程序消息服务器配置的EncodingAESKey
wx.miniapp.configs.aesKey=123随便写
wx.miniapp.configs.msgDataFormat=JSON
package com.java.core.web.config;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;@Data
@ConfigurationProperties(prefix = "wx.miniapp.configs")
public class WxProperties {/*** 设置微信小程序的appid*/private String appid;/*** 设置微信小程序的Secret*/private String secret;/*** 设置微信小程序消息服务器配置的token*/private String token;/*** 设置微信小程序消息服务器配置的EncodingAESKey*/private String aesKey;/*** 消息格式,XML或者JSON*/private String msgDataFormat;
}
package com.java.core.web.config;import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxRuntimeException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Slf4j
@Configuration
@EnableConfigurationProperties(WxProperties.class)
public class WxConfig {@Autowiredprivate WxProperties properties;@Beanpublic WxMaService getService() {if (properties == null || properties.getAppid() == null || properties.getSecret() == null) {throw new WxRuntimeException("required wechat param not found");}WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();config.setAppid(properties.getAppid());config.setSecret(properties.getSecret());config.setToken(properties.getToken());config.setAesKey(properties.getAesKey());config.setMsgDataFormat(properties.getMsgDataFormat());WxMaService service = new WxMaServiceImpl();service.setWxMaConfig(config);return service;}
}
package com.java.core.web.contrller.test;import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage;
import com.java.core.com.annotation.Log;
import com.java.core.com.enums.BusinessType;
import com.java.core.com.vo.HttpResult;
import com.java.core.web.contrller.common.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;@Api(tags = {"微信小程序测试"})
@RestController
@RequestMapping("wxmini")
public class WxMiniAppController extends BaseController {@Autowiredprivate WxMaService wxService;@ApiOperation(value = "发送小程序消息")@Log(title = "发送小程序消息", businessType = BusinessType.GET)@GetMapping(value = "/sendMsg")public HttpResult sendMsg(String openId){//String openId = "oWt586-xxxx";String templteId = "-xxxx-HjpoRJVU";//模板Id// 获取当前日期和时间LocalDateTime currentDateTime = LocalDateTime.now();// 定义日期时间格式化模式DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 格式化日期和时间String formattedDateTime = currentDateTime.format(formatter);Map<String, String> map = new HashMap<>();map.put("character_string9", "111111111111");//单号map.put("thing1", "您收到了测试任务提醒消息");//发送内容map.put("thing14", "申请人");//申请人map.put("time8", formattedDateTime);//单据时间WxMaSubscribeMessage wxMaSubscribeMessage = WxMaSubscribeMessage.builder().toUser(openId).templateId(templteId)//模板ID.page("pages/login/index")//打开后要跳转的页面.build();// 设置将推送的消息map.forEach((k, v) -> {wxMaSubscribeMessage.addData(new WxMaSubscribeMessage.MsgData(k, v));});try {wxService.getMsgService().sendSubscribeMsg(wxMaSubscribeMessage);} catch (WxErrorException e) {e.printStackTrace();}return HttpResult.ok();}
}