微信公众号常用代码

在微信公众号开发中,常用的代码主要是基于微信公众平台提供的开发接口,使用的编程语言通常是基于微信官方支持的语言,如JavaScript、Java、Python等。

接入微信公众平台:
在公众号后台配置服务器地址,接收微信服务器的验证请求。

Node.js示例:

javascript
const express = require('express'); const crypto = require('crypto'); const app = express(); const token = 'your_token'; // 与微信后台配置的Token一致 app.get('/wechat', (req, res) => { const { signature, timestamp, nonce, echostr } = req.query; const sha1 = crypto.createHash('sha1').update([token, timestamp, nonce].sort().join('')).digest('hex'); if (sha1 === signature) { res.send(echostr); } else { res.status(401).send('Invalid signature'); } }); const port = 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); });

接收用户消息:
处理用户发送过来的文本、图片、语音等消息。

Node.js 示例:

javascript
app.post('/wechat', (req, res) => { const { xml } = req.body; const messageType = xml.MsgType[0]; if (messageType === 'text') { // 处理文本消息 const content = xml.Content[0]; // 进行相应的业务逻辑处理 } else if (messageType === 'image') { // 处理图片消息 // ... } // 返回空字符串,微信服务器不会报错 res.send(''); });

发送客服消息:
主动向用户发送文本、图文等消息。

Node.js 示例:

javascript
const axios = require('axios'); const accessToken = 'your_access_token'; // 通过接口获取 const sendTextMessage = (openId, content) => { const url = `https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=${accessToken}`; const data = { touser: openId, msgtype: 'text', text: { content: content, }, }; axios.post(url, data) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); }; // 调用发送文本消息的函数 sendTextMessage('user_open_id', 'Hello, this is a text message.');

获取用户信息:
获取用户的基本信息,如昵称、头像等。

Node.js 示例:

javascript
const getUserInfo = (openId) => { const url = `https://api.weixin.qq.com/cgi-bin/user/info?access_token=${accessToken}&openid=${openId}&lang=zh_CN`; axios.get(url) .then(response => { const userInfo = response.data; console.log(userInfo); }) .catch(error => { console.error(error); }); }; // 调用获取用户信息的函数 getUserInfo('user_open_id');

接入验证:
在接入微信公众号开发时,需要进行服务器配置,验证服务器有效性。

javascript
const express = require('express'); const app = express(); app.use(express.urlencoded({ extended: true })); app.get('/wechat', (req, res) => { const { signature, timestamp, nonce, echostr } = req.query; const token = 'your_token'; // 替换为在公众号平台设置的Token const sha1 = require('sha1'); const signatureCheck = sha1([token, timestamp, nonce].sort().join('')); if (signatureCheck === signature) { res.send(echostr); } else { res.send('Invalid signature'); } }); app.listen(80, () => { console.log('Server is running on port 80'); });

获取用户信息:
使用微信网页授权获取用户基本信息。

javascript
const request = require('request'); const appId = 'your_app_id'; // 替换为公众号的AppID const appSecret = 'your_app_secret'; // 替换为公众号的AppSecret const getCodeUrl = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`; // 用户同意授权后,会跳转到redirect_uri/?code=CODE&state=STATE const code = 'user_code'; // 从上述跳转后的URL中获取code参数 const getUserInfoUrl = `https://api.weixin.qq.com/sns/oauth2/access_token?appid=${appId}&secret=${appSecret}&code=${code}&grant_type=authorization_code`; request.get(getUserInfoUrl, (error, response, body) => { const accessTokenInfo = JSON.parse(body); // 获取用户信息 const getUserInfoUrl = `https://api.weixin.qq.com/sns/userinfo?access_token=${accessTokenInfo.access_token}&openid=${accessTokenInfo.openid}&lang=zh_CN`; request.get(getUserInfoUrl, (error, response, body) => { const userInfo = JSON.parse(body); console.log(userInfo); }); });

发送文本消息:
通过公众号发送文本消息给用户:

javascript
const axios = require('axios'); const accessToken = 'your_access_token'; // 替换为获取到的AccessToken const sendTextMessage = (openid, content) => { const apiUrl = `https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=${accessToken}`; const postData = { touser: openid, msgtype: 'text', text: { content: content } }; axios.post(apiUrl, postData) .then(response => { console.log(response.data); }) .catch(error => { console.error(error); }); }; // 调用发送文本消息函数 const userOpenid = 'user_openid'; // 替换为实际用户的OpenID const messageContent = 'Hello, this is a text message!'; sendTextMessage(userOpenid, messageContent);