微信小程序发送消息简单Demo

前言


  最近项目有需求需要用到微信小程序推送消息,在此记录一下实验过程。

前提准备


在开始前,你需要准备:

  • 注册微信小程序
  • 一个简单的springBoot 项目
  • 微信开发者工具

正式


微信小程序发送消息主要通过WxMaTemplateMessage 类来推送

public class WxMaTemplateMessage implements Serializable {
    private String toUser;       // 给谁推送(用户openId)
    private String templateId;  // 消息ID
    private String page;    // 用户点开消息跳转到对应的小程序界面
    private String formId;  // 表单formId
    private List<WxMaTemplateData> data; // 消息的数据列表
    private String emphasisKeyword;  
...

所以我们在推送前需要构造这些信息,formId 和toUser(openId) 是从前端传过来的。formId 可以通过表单或者支付来获取,表单比较简单,只需要把report-submit 设置为true 就可以获得。

简单通过微信开发者工具来获取formId(openId 数据库存了)

  1. 先建立一个前端项目,AppID 就是小程序的id,在微信公众号后台可以看到。


    image.png
  2. 修改index/index.js 和index.wxml (百度某位同学的),通过表单来获取formId ,并发送到后台。

// index.wxml
<form bindsubmit='registerFormSubmit' report-submit='true'>
  <view class='buttons'>
    <button class='confirmbtn' form-type='submit'>确定</button>
  </view>

</form>
<view>formid: {{formid}}</view>
<button bindtap='push'>
    发送
</button>

//index.js
//获取应用实例
const app = getApp()

Page({
  
  data: {
    formid: ""
  },
  //事件处理函数
  registerFormSubmit: function (e) {
    //    打印formId
    console.log(e.detail.formId);
    this.setData({
      formid: e.detail.formId
    })
   },
  //测试推送
 push() {
    let formid = this.data.formid;
   let openid = 'oT-H-40ZHdRX1REZFKQhPg3jJZoQ';
    wx.request({
      url: 'http://localhost:8080/push?openId=' + openid + "&formId=" + formid,
      success(res) {
        console.log("推送结果:", res)
      },
      fail(err) {
        console.log("推送失败:", err)
      }
    })
  }
})

效果图

这里formid 在测试的时候获取不到,调到真机调试,或者用预览就行了。

  1. 请求后台接口来发送消息(ctrl c v 百度某同学)
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class PushController {

    @GetMapping("/push")
    public String push(@RequestParam String openId, @RequestParam String formId) {
        //1,配置小程序信息
        WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();
        wxConfig.setAppid("你的appId");
        wxConfig.setSecret("你的secret");

        WxMaService wxMaService = new WxMaServiceImpl();
        wxMaService.setWxMaConfig(wxConfig);

        //2,设置模版信息(keyword1:类型,keyword2:内容)
        List<WxMaTemplateData> templateDataList = new ArrayList<>(2);
        WxMaTemplateData data1 = new WxMaTemplateData("keyword1", "获取老师微信");
        WxMaTemplateData data2 = new WxMaTemplateData("keyword2", "2501902696");
        WxMaTemplateData data3 = new WxMaTemplateData("keyword3", "2501902696");
        WxMaTemplateData data4 = new WxMaTemplateData("keyword4", "2501902696");
        templateDataList.add(data1);
        templateDataList.add(data2);
        templateDataList.add(data3);
        templateDataList.add(data4);

        //3,设置推送消息
        WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
                                                  .toUser(openId)
                                                  .formId(formId)
                                                  .templateId("你的消息id") // 在微信公众号后台可以申请消息模版
                                                  .data(templateDataList)
                                                  .page("pages/index/index")
                                                  .build();

        //4,发起推送
        try {
            wxMaService.getMsgService().sendTemplateMsg(templateMessage);
        } catch (WxErrorException e) {
            System.out.println("推送失败:" + e.getMessage());
            return e.getMessage();
        }
        return "推送成功";
    }

}
image.png

一个简单的小程序推送demo ,权侵删

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容