微信服务号 - 开发配置
服务号开发需要完成认证、配置服务器、管理access_token,并根据业务需求对接各类高级接口。
开发准备
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1. 注册认证 | mp.weixin.qq.com 注册服务号 | 需企业资质,完成微信认证(300元/年) |
| 2. 开通支付 | 申请微信支付商户号 | 在pay.weixin.qq.com申请,绑定服务号 |
| 3. 配置域名 | 设置业务域名、JS安全域名、授权回调域名 | 需在服务器根目录放置验证文件 |
| 4. 服务器配置 | 填写URL、Token、EncodingAESKey | 启用开发者模式,自动回复和自定义菜单改为API管理 |
| 5. IP白名单 | 配置服务器IP | 只有白名单内IP才能获取access_token |
access_token 中控服务
const axios = require('axios')
const Redis = require('ioredis')
const redis = new Redis()
const APP_ID = process.env.WX_APPID
const APP_SECRET = process.env.WX_SECRET
async function getAccessToken() {
let token = await redis.get('wx_access_token')
if (token) return token
const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APP_ID}&secret=${APP_SECRET}`
const { data } = await axios.get(url)
await redis.set('wx_access_token', data.access_token, 'EX', 7000)
return data.access_token
}
module.exports = { getAccessToken }
用户标签管理
async function createTag(name) {
const token = await getAccessToken()
const { data } = await axios.post(
`https://api.weixin.qq.com/cgi-bin/tags/create?access_token=${token}`,
{ tag: { name } }
)
return data.tag
}
async function tagUsers(tagId, openidList) {
const token = await getAccessToken()
await axios.post(
`https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=${token}`,
{ openid_list: openidList, tagid: tagId }
)
}
async function getUserList(nextOpenid = '') {
const token = await getAccessToken()
const { data } = await axios.get(
`https://api.weixin.qq.com/cgi-bin/user/get?access_token=${token}&next_openid=${nextOpenid}`
)
return data
}