小程序之模板消息

一、获取formId

小程序中form组建中写的写的很明确。利用report-submit 属性 来获取formId。

 注意form组件一定要加report-submit属性,否则获取不到formId。
属性名 类型 说明  
report-submit Boolean 是否返回 formId 用于发送模板消息  
bindsubmit EventHandle 携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value'} , formId: ''}  
bindreset EventHandle 表单重置时会触发 reset 事件

二、利用code 换取 openid


利用 wx.login() 方法 获取 code 登录凭证,然后利用 wx.request() 请求换取 openid。

代码如下

wx.login({
success: function (res) {
wx.request({
//获取openid接口
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: '', //小程序APPID
secret: '', //小程序app_secret
js_code: res.code, //登录凭证code
grant_type: 'authorization_code'
},
method: 'GET',
success: function (res) {
console.log(res.data.openid) //获取到的openid
console.log(res.data.session_key) //获取到session_key
}
})
}
})

三、下面就是开始发送模板消息

发送模板消息

接口地址:(ACCESS_TOKEN 需换成上文获取到的 access_token)

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

HTTP请求方式:

POST

POST参数说明:

参数 必填 说明
touser 接收者(用户)的 openid
template_id 所需下发的模板消息的id
page 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
form_id 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
data 模板内容,不填则下发空模板
color 模板内容字体的颜色,不填默认黑色
emphasis_keyword 模板需要放大的关键词,不填则默认无放大

代码如下

    orderSign: function (e) {
var fId = e.detail.formId;
var fObj = e.detail.value;
var l = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' + App.globalData.wxData.token;
var d = {
touser: wx.getStorageSync( 'user').openid,
template_id: 'dKyw9dIDjncWW3VuFIRK9o', //这个是1、申请的模板消息id,
page: '/pages/index/index',
form_id: fId,
value: {

"keyword1": {
"value": fObj.product,
"color": "#4a4a4a"
},
"keyword2": {
"value": fObj.detail,
"color": "#9b9b9b"
},
"keyword3": {
"value": new Date().getDate(),
"color": "#9b9b9b"
},
"keyword4": {
"value": "201612130909",
"color": "#9b9b9b"
},
"keyword5": {
"value": "$300",
"color": "red"
}
},
color: '#ccc',
emphasis_keyword: 'keyword1.DATA'
}
wx.request({
url: l,
data: d,
method: 'POST',
success: function (res) {
console.log( "push msg");
console.log(res);
},
fail: function (err) {
// fail
console.log( "push err")
console.log(err);
}
});
}


希望对大家有所帮助!

猜你喜欢

转载自blog.csdn.net/jensen_yao/article/details/80155256