在开始前,你需要准备:
正式
微信小程序发送消息主要通过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 数据库存了)
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 在测试的时候获取不到,调到真机调试,或者用预览就行了。
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;
@RestControllerpublic 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 "推送成功"; }
}复制代码
原文作者:Rolan
原文链接:http://www.wxapp-union.com/article-5698-1.html
直播预告
如何才能毕业不失业?如何避开职场面试的坑?
如何保持超强竞争力?如何突破职业瓶颈?
NEXT学院邀请互联网一线大咖
开设系列直播讲座为IT从业者答疑解惑!
本周四19:00,小N在直播间等你喔~
点击阅读原文,提前报名