一、获取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);
}
});
}
希望对大家有所帮助!