话不多说:
下面直接上代码:
wxml:
<
form
name=
'pushMsgFm'
report-submit
bindsubmit=
'form'>
<
button
form-type=
"submit">submit
</
button
>
</
form
>
js:
// pages/index/index.js
Page({
data: {
},
/*
微信公众平台测试连接 https://mp.weixin.qq.com/debug/
全局返回码说明:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234
*/
onLoad:
function (options) {
var that =
this
wx.login({
success:
function (data) {
console.log(data.code, data)
// 获取openid
wx.request({
url:
'https://api.weixin.qq.com/sns/jscode2session?appid=你的自己的appid&secret=你自己的session_key&js_code=' + data.code ,
header: {
"Content-Type":
"application/x-www-form-urlencoded" },
method:
"post",
success:
function (res) {
console.log(res,
"opind")
that.setData({
openid: res.data.openid,
session_key: res.data.session_key,
})
}
})
}
})
// 获取access_token
wx.request({
url:
'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的自己的appid&secret=你自己的session_key',
method:
"GET",
success:
function (res) {
console.log(res,
"res")
console.log(res.data.access_token,
"access_token")
that.setData({
access_token: res.data.access_token,
})
}
})
},
// 点击执行方法
form:
function (e) {
var that =
this;
var fId = e.detail.formId;
// 网络请求
var l =
'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + that.data.access_token;
// 需要传的参数
var d = {
touser: that.data.openid,
//用户的openid
template_id:
'XX1hceIwI1XiQaUc5Z4qIrZnYQkYEHElSq5m6yIa0M8',
//这个是申请的模板消息id,位置在微信公众平台/模板消息中添加并获取
page:
'/pages/index/index',
//点击通知跳转的页面
form_id: fId,
//表单提交场景下,为 submit 事件带上的 formId
//此处必须为data,只有人说value也可以,可能官方已经修复这个bug
data: {
"keyword1": {
"value":
"酒店",
"color":
"#4a4a4a"
},
"keyword2": {
"value":
"2018-03-22",
"color":
"#9b9b9b",
},
"keyword3": {
"value":
"$300",
"color":
"#9b9b9b"
},
"keyword4": {
"value":
"中国",
"color":
"#9b9b9b"
},
},
color:
'#ccc',
emphasis_keyword:
'keyword1.DATA'
}
wx.request({
url: l,
data: d,
method:
'POST',
//此处不能有请求头
success:
function (res) {
console.log(res,
"push msg");
},
fail:
function (err) {
console.log(err,
"push err");
}
});
},
})
最后编译,点击提交发起请求,这里只能手机调试,我用开发工具打印出来的formId: "the formId is a mock one"并不是数字串。此处需要真机测试才能成功
到此结束: