小程序后台。订阅消息里面,新建一个消息模板
小程序代码,登录后,弹出订阅信息
requestSubscribeMessage: function () {
wx.requestSubscribeMessage({
tmplIds: ['-323232-32323'], // 替换为你的模板ID
success(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 {
@Autowired
private WxProperties properties;
@Bean
public 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 {
@Autowired
private 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();
}
}