python实现推送消息到微信公众号
使用到库:
Requests
实现方式:
微信已开放了对应的接口,直接通过python的requests库,发起请求,实现推送消息到公众号
微信公众号准备:
1、没有注册微信公众号,可以使用微信提供的测试公众号,来测试公众号的推送
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
2、点击登录,使用自己微信账号,扫一扫登录

3、登录成功后,会生成一个自己的测试公众号,有测试号的appid、appsecret
4、要看推送的效果,要先关注当前的测试账号,关注成功后,可在列表查看当前的粉丝数和具体的open_id

使用微信公众号的接口:
1、 获取微信公众号的授权token:
2、 获取当前公众号的粉丝的open_id:
https://api.weixin.qq.com/cgi-bin/user/get?access_token={self.token}&next_openid={next_openid}
3、 发送模板消息的接口:
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={self.token}
4、 发送普通消息的接口:
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=xxx
实现逻辑:
发送消息的接口,需要验证token,和传入粉丝的open_id,进行发送,发送模板消息,需要传入模板id

微信公众号后台,模板管理,增加模板,模板内容需要配置对应

实现代码:
class WechatMessagePush:
def __init__(self, appid, appsecret, temple_id):
self.appid = appid
self.appsecret = appsecret # 模板id,参考公众号后面的模板消息接口 -> 模板ID(用于接口调用):IG1Kwxxxx
self.temple_id = temple_id self.token = self.get_Wechat_access_token() def get_Wechat_access_token(self):
'''
获取微信的access_token: 获取调用接口凭证
:return:
'''
url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={self.appid}&secret={self.appsecret}"
response = requests.get(url) res = response.json()
if "access_token" in res:
token = res["access_token"]
return token def get_wechat_accout_fans_count(self):
'''
获取微信公众号所有粉丝的openid
'''
next_openid = ''
url = f"https://api.weixin.qq.com/cgi-bin/user/get?access_token={self.token}&next_openid={next_openid}"
response = requests.get(url)
res = response.json()['data']['openid'] def send_wechat_temple_msg(self, content):
'''
发送微信公众号的模板消息'''
url = f"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={self.token}" fan_open_id = self.get_wechat_accout_fans_count()
for open_id in fan_open_id:
body = {
"touser": open_id,
'template_id': self.temple_id,
# 'url': 'http://www.jb51.net',
"topcolor": "#667F00",
"data": {
"content": {"value": content}
}
}
headers = {"Content-type": "application/json"}
data = json.JSONEncoder().encode(body)
res = requests.post(url=url, data=data, headers=headers)
调用方法,发送消息
if __name__ == '__main__':
appid = "wx4d4xxxx"
screct = "522xxxx4"
template_id = 'IG1Kxxbxxxxxls'
WechatMessagePush(appid, screct, template_id).send_wechat_txt_msg(msg="测试")
实现的推送的消息

python实现推送消息到微信公众号的更多相关文章
- python特定时间发送消息到微信公众号
#!/usr/bin/env python# -*- coding: utf-8 -*-# __author__ = 'James'# 导入模块from wxpy import *import tim ...
- [wxpusher]分享一个服务器推送消息到微信上的小工具,可以用于微信推送提醒和告警。
背景 作为一个程序员,业余搞点自己的东西很正常,一般程序员都会有一两台自己的服务器,谁叫今天xx云搞活动,明天yy云搞活动呢. 自家的服务器用来跑爬虫,跑博客,或者跑一些个人业务,但当服务有新状态,抢 ...
- PHP实现发送模板消息到微信公众号
简述:在这里会具体讲述到如何实现:如何通过后台的代码来实现发送模板消息到已经关注了"心想"公众号的用户. (本人新手,目前实习中,我的所有文档都是在自己开发过程中的记录,有些言语跟 ...
- PHP实现发送模板消息(微信公众号版)
以下为开发步骤: 1.微信公众号为服务号且开通微信认证(其他类型账号不能发送) 2.ip白名单设置你的服务器ip(用于获取access_token) 3.网页授权你的域名(用于获取用户的openid) ...
- 微信硬件平台(八) 4 ESP8266通过微信公众号给用户推送消息
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=自己申请微信公众号的TOKEN 输出结果: 由于aRDUINO串 ...
- 免注册公众号的三种微信推送消息服务的C#代码实现
有时候我们需要监控一些网络上的变化,但是每次去刷新网页却又很麻烦,而且大部分刷新的时候网页并没有更新.那么有没有一个工具,可以监控网页变化,并将变化的结果推送到手机微信上呢? 这里有很多应用场景,比如 ...
- 微信公众号发送客服消息提示errcode":45015,"errmsg":"response out of time limit or subscription is canceled hint:解决办法【已解决】
微信公众号发送客服消息提示errcode":45015,"errmsg":"response out of time limit or subscription ...
- python编写微信公众号首图思路详解
前言 之前一直在美图秀秀调整自己的微信公众号首图,效果也不尽如人意,老是调来调去,最后发出来的图片被裁剪了一大部分,丢失部分关键信息,十分恼火,于是想着用python写一个程序,把微信公众号首图的模式 ...
- 微信公众号发送告警Python脚本
调用该脚本,可以向微信公众号发生告警. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 微信公众号发送告警脚本 import ur ...
- SNF微信公众号客户端演示-微信开发客户端能干什么
关注测试微信号: 关注后菜单页面如下: 一.扫描二维码进行订单查询演示 1.点击菜单“软件产品”->选择“扫描查询” 2.扫描如下二维码进行订单查询演示. 3.扫描结果如下: 二.微信“输入订单 ...
随机推荐
- [Caddy2] Caddyfile 静态文件托管 file_server 的 hide 用法
file_server 语法: file_server [<matcher>] [browse] { root <path> hide <files...> i ...
- WPF 应用启动过程同时启动多个 UI 线程且访问 ContentPresenter 可能让多个 UI 线程互等
在应用启动过程里,除了主 UI 线程之外,如果还多启动了新的 UI 线程,且此新的 UI 线程碰到 ContentPresenter 类型,那么将可能存在让新的 UI 线程和主 UI 线程互等.这是多 ...
- 记 Win8.1 某应用渲染抛出 OutOfMemoryException 异常及修复方法
本文记录某个应用在某台 Windows 8.1 x86 系统上,运行时抛出 OutOfMemoryException 异常,启动失败.应用程序能启动,但是在第一次碰到渲染时,就发现渲染初始化失败,从而 ...
- SQL Server实战三:数据库表完整性约束及索引、视图的创建、编辑与删除
本文介绍基于Microsoft SQL Server软件,实现数据库表完整性约束.索引与视图的创建.编辑与删除等操作的方法. 目录 1 交互式为数据库表S创建PRIMARY KEY约束 2 交互式 ...
- 源码安装expect
1. yum安装expect 如果有外网,可以yum安装,如下: yum install expect 2.源码安装expect 下载tcl源码包 cd /tmp &&wget htt ...
- jfarme
import java.awt.Color;import java.awt.Container; import javax.swing.JFrame;import javax.swing.JLabel ...
- 【Vue】vuex存储和本地存储(localstorage、sessionstorage)的区别
sessionStorage sessionStorage 方法针对一个 session 进行数据存储.当用户关闭浏览器窗口后,数据会被删除. 用法: 储存: 1. 点(.)运算符 sessionSt ...
- 1.简单的C语言程序
简单的C语言程序 什么是计算机程序? 什么是计算机语言? 所谓程序,就是一组计算机能识别和执行的指令. 什么是计算机语言? 机器语言(0,1 '低级语言'),汇编语言(符号化 '低级语言'),高级语言 ...
- sql 查找是否存在的记录
场景:根据条件从数据库表中查询 『有』与『没有』,只有两种状态 方法1: SELECT count(*) FROM table WHERE a = 1 方法2: SELECT 1 FROM table ...
- spring-boot集成Quartz-job存储方式二RAM
简单区分: RAM:程序启动从数据库中读取原始job配置(也可以从配置文件中读取),job中间运行过程在RAM内存中,程序停止或重启后,RAM中数据丢失,再次启动的时候会重新读取job配置.适合于单机 ...