微信模板消息发送需三步:获取带缓存的access_token、通过静默授权获取openid、按规范构造json发送;前提包括服务号认证、appsecret配置、ip白名单及网页授权域名设置。

微信模板消息在PHP框架中发送,核心是三件事:拿到合法凭证(access_token)、拿到用户身份(openid)、按规范组装并提交请求。不依赖第三方SDK也能实现,但需注意时效性、错误处理和参数格式。
前提条件必须满足
服务号已通过微信认证,否则后台根本看不到“模板消息”入口;公众号基础设置里已生成AppSecret并妥善保存;服务器公网IP已加入微信后台的IP白名单;网页授权域名已在“公众号设置→功能设置”中配置完成;模板已在“模板库”中选用并获取到template_id。
获取access_token(带缓存)
access_token有效期2小时,频繁请求会触发频率限制。建议本地缓存(如文件或Redis),每次调用前先读缓存,过期再刷新。
- 请求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=YOUR_APPID&secret=YOUR_APPSECRET
- 返回成功时含
access_token和expires_in(单位秒) - PHP示例中建议用cURL而非file_get_contents,便于控制超时和错误码
- 缓存键建议包含AppID,避免多公众号共用时冲突
获取用户openid(推荐静默授权)
若只需发通知不展示用户信息,用snsapi_base即可,不弹窗、体验好。
- 引导用户跳转:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=ENCODED_URL&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
- 回调页用code换取openid:https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRET&code=CODE&grant_type=authorization_code
- 返回结果中的
openid是发送模板消息的必需字段,务必存入数据库并关联业务记录
构造并发送模板消息
微信要求JSON格式严格,字段名不能错、空值要写null、颜色值用十六进制(如"#173177”)。
- 请求地址:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
- POST数据示例(关键字段):
{<br> "touser": "用户的openid",<br> "template_id": "模板ID",<br> "data": {<br> "first": {"value":"订单已提交","color":"#173177"},<br> "orderName": {"value":"iPhone 15 Pro","color":"#173177"},<br> "remark": {"value":"预计24小时内发货","color":"#999999"}<br> }<br> } - 发送后检查返回的
errcode:0表示成功;40003是openid无效;41001是access_token缺失;42001是token过期——这些都要有对应日志和重试逻辑
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











