一、小程序开发
1. 创建小程序

2. 创建云函数根目录

3. 创建云函数
- 新建 Node.js 云函数。
- 上传并部署:云端安装依赖(不上传 node_modules)。
3.1 getOpenid
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
3.2 sendMsg
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.subscribeMessage.send({
touser: event.openid,
page: 'pages/index/index',
data: {
name1: {
value: event.name
},
phone_number2: {
value: '15012345678'
}
},
templateId: 'DbK68HlQx1LQGWiN4mBfFhJs'
})
console.log("result", result)
return result.errCode
} catch (err) {
console.log("err", err)
return err.errCode
}
}
4. 新建页面
4.1 index.wxml
<button bindtap="getOpenid">获取Openid</button>
<button bindtap="getUserAuthorization">获取用户授权</button>
<input placeholder="请输入用户名" bindinput="getUsername"></input>
<button bindtap="sendOne">发送订阅消息(单用户)</button>
<button bindtap="sendAll">发送订阅消息(多用户)</button>
4.2 index.js
let username = ''
Page({
getOpenid() {
wx.cloud.callFunction({
name: "getOpenid"
}).then(res => {
console.log("获取openid成功", res)
}).catch(res => {
console.log("获取openid失败", res)
})
},
getUserAuthorization() {
wx.requestSubscribeMessage({
tmplIds: [
"3AK7Pv2bckT8mECmLc5qQ3dxn0K3"
],
success(res) {
console.log('授权成功', res)
},
fail(res) {
console.log('授权失败', res)
}
})
},
getUsername(event) {
console.log("获取输入用户名", event.detail.value)
username = event.detail.value
},
sendOne() {
if (username == null || username == '') {
wx.showToast({
icon: "none",
title: '请输入用户名',
})
return
}
this.sendMsg("oRP3g5T3jNy6Kvp3djT1", username)
},
sendAll() {
if (username == null || username == '') {
wx.showToast({
icon: "none",
title: '请输入用户名',
})
return
}
let openids = [
"oRP3g5T3jNy6Kvp3djT1"
]
openids.forEach(openid => {
this.sendMsg(openid, username)
})
},
sendMsg(openid, name) {
console.log("name", typeof name)
wx.cloud.callFunction({
name: "sendMsg",
data: {
openid: openid,
name: name
}
}).then(res => {
console.log("发送订阅消息成功", res)
}).catch(res => {
console.log("发送订阅消息失败", res)
})
}
})