微信小程序发送订阅消息

小程序后台。订阅消息里面,新建一个消息模板

小程序代码,登录后,弹出订阅信息

复制代码
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();
    }
}
相关推荐
郑叔敲代码1 小时前
帝国cms 微信小程序的登录逻辑
微信小程序·小程序·notepad++
棋子一名4 小时前
跑马灯组件 Vue2/Vue3/uni-app/微信小程序
微信小程序·小程序·uni-app·vue·js
无衣 秦风5 小时前
vue3+hubuilderX开发微信小程序使用elliptic生成ECDH密钥对遇到的问题
微信小程序·小程序
游戏开发爱好者86 小时前
BShare HTTPS 集成与排查实战,从 SDK 接入到 iOS 真机调试(bshare https、签名、回调、抓包)
android·ios·小程序·https·uni-app·iphone·webview
2501_916008896 小时前
iOS 26 系统流畅度实战指南|流畅体验检测|滑动顺畅对比
android·macos·ios·小程序·uni-app·cocoa·iphone
流***陌7 小时前
陪诊就医小程序中健康档案的精细化管理设计方案
小程序
明天你好2677 小时前
如何做一个花店小程序,搭建一个小程序多少钱
微信小程序·小程序·模拟退火算法
2501_915106328 小时前
苹果软件加固与 iOS App 混淆完整指南,IPA 文件加密、无源码混淆与代码保护实战
android·ios·小程序·https·uni-app·iphone·webview
江城开朗的豌豆8 小时前
小程序登录不迷路:一篇文章搞定用户身份验证
前端·javascript·微信小程序
2501_915921438 小时前
iOS 26 崩溃日志解析,新版系统下崩溃获取与诊断策略
android·ios·小程序·uni-app·cocoa·iphone·策略模式