1.6K Star 微信自动化,weixin-python,一个与微信交互超强库

news/发布时间2024/5/16 17:54:16

简介

提供微信登录,公众号管理,微信支付,微信消息的全套功能

安装

使用pip

sudo pip install weixin-python

使用easy_install

sudo easy_install weixin-python

用法

参数

  • WEIXIN_TOKEN 必填,微信主动推送消息的TOKEN
  • WEIXIN_SENDER 选填,微信发送消息的发送者
  • WEIXIN_EXPIRES_IN 选填,微信推送消息的有效时间
  • WEIXIN_MCH_ID 必填,微信商户ID,纯数字
  • WEIXIN_MCH_KEY 必填,微信商户KEY
  • WEIXIN_NOTIFY_URL 必填,微信回调地址
  • WEIXIN_MCH_KEY_FILE 可选,如果需要用退款等需要证书的api,必选
  • WEIXIN_MCH_CERT_FILE 可选
  • WEIXIN_APP_ID 必填,微信公众号appid
  • WEIXIN_APP_SECRET 必填,微信公众号appkey

上面参数的必填都是根据具体开启的功能有关, 如果你只需要微信登录,就只要选择 WEIXIN_APP_ID WEIXIN_APP_SECRET

  • 微信消息

    • WEIXIN_TOKEN
    • WEIXIN_SENDER
    • WEIXIN_EXPIRES_IN
  • 微信登录

    • WEIXIN_APP_ID
    • WEIXIN_APP_SECRET
  • 微信公众平台

    • WEIXIN_APP_ID
    • WEIXIN_APP_SECRET
  • 微信支付

    • WEIXIN_APP_ID
    • WEIXIN_MCH_ID
    • WEIXIN_MCH_KEY
    • WEIXIN_NOTIFY_URL
    • WEIXIN_MCH_KEY_FILE
    • WEIXIN_MCH_CERT_FILE

初始化

如果使用flask

# -*- coding: utf-8 -*-from datetime import datetime, timedelta
from flask import Flask, jsonify, request, url_for
from weixin import Weixin, WeixinErrorapp = Flask(__name__)
app.debug = True# 具体导入配
# 根据需求导入仅供参考
app.config.from_object(dict(WEIXIN_APP_ID='', WEIXIN_APP_SECRET=''))# 初始化微信
weixin = Weixin()
weixin.init_app(app)
# 或者
# weixin = Weixin(app)

如果不使用flask

# 根据需求导入仅供参考
config = dict(WEIXIN_APP_ID='', WEIXIN_APP_SECRET='')
weixin = Weixin(config)

微信消息

如果使用django,添加视图函数为
url(r'^/$', weixin.django_view_func(), name='index'),

如果为flask,添加视图函数为

app.add_url_rule("/", view_func=weixin.view_func)
@weixin.all
def all(**kwargs):"""监听所有没有更特殊的事件"""return weixin.reply(kwargs['sender'], sender=kwargs['receiver'], content='all')@weixin.text()
def hello(**kwargs):"""监听所有文本消息"""return "hello too"@weixin.text("help")
def world(**kwargs):"""监听help消息"""return dict(content="hello world!")@weixin.subscribe
def subscribe(**kwargs):"""监听订阅消息"""print kwargsreturn "欢迎订阅我们的公众号"

微信登录

@app.route("/login")
def login():"""登录跳转地址"""openid = request.cookies.get("openid")next = request.args.get("next") or request.referrer or "/",if openid:return redirect(next)callback = url_for("authorized", next=next, _external=True)url = weixin.authorize(callback, "snsapi_base")return redirect(url)@app.route("/authorized")
def authorized():"""登录回调函数"""code = request.args.get("code")if not code:return "ERR_INVALID_CODE", 400next = request.args.get("next", "/")data = weixin.access_token(code)openid = data.openidresp = redirect(next)expires = datetime.now() + timedelta(days=1)resp.set_cookie("openid", openid, expires=expires)return resp

微信支付

注意: 微信网页支付的timestamp参数必须为字符串

@app.route("/pay/jsapi")
def pay_jsapi():"""微信网页支付请求发起"""try:out_trade_no = weixin.nonce_strraw = weixin.jsapi(openid="openid", body=u"测试", out_trade_no=out_trade_no, total_fee=1)return jsonify(raw)except WeixinError, e:print e.messagereturn e.message, 400@app.route("/pay/notify, methods=['POST'])
def pay_notify():"""微信异步通知"""data = weixin.to_dict(request.data)if not weixin.check(data):return weixin.reply("签名验证失败", False)# 处理业务逻辑return weixin.reply("OK", True)if __name__ == '__main__':app.run(host="0.0.0.0", port=9900)

微信公众号

注意: 如果使用分布式,需要自己实现access_tokenjsapi_ticket函数

access_token默认保存在~/.access_token jsapi_ticket默认保存在~/.jsapi_ticket

默认在(HOME)目录下面,如果需要更改到指定的目录,可以导入库之后修改,如下

import weixinDEFAULT_DIR = "/tmp"

 获取公众号唯一凭证

weixin.access_token

获取ticket

weixin.jsapi_ticket

创建临时qrcode

data = weixin.qrcode_create(123, 30)
print weixin.qrcode_show(data.ticket)

创建永久性qrcode

# scene_id类型
weixin.qrcode_create_limit(123)
# scene_str类型
weixin.qrcode_create_limit("456")

长链接变短链接

weixin.shorturl("http://example.com/test")

 

Github地址

https://github.com/zwczou/weixin-python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/68181107.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

wireshark抓包学习

ip 过滤 ip.src_host ip.dst_host ip.addr mac 过滤 eth.src eth.dst eth.addr 端口过滤 tcp.port tcp.srcport tcp.dstport 协议类型过滤 arp dhcp 规则组合 and or 文件导出 导出特定分组all packets 为把抓到的所有包都保存 而 select packet 为保存我们鼠标点击选中的包也就…

语义搜索相关配置

1.打开services项目,在pom文件中引入依赖如下<dependency><groupId>com.hankcs</groupId><artifactId>hanlp</artifactId><version>portable-1.8.3</version> </dependency>2.在hanlp github下载语言模型,放入项目根目录下3.在…

模拟在页面点击导入csv

案例背景组件性能测试过程中,要导入大量自定义的数据。案例分析本案例中采用python的pandas库,模拟了生成导入csv文件,模拟在页面点击导入csv,使文件导入更高效。实现方案1****、在前端页面解析内部接口参数 典型的导入流程至少包含上传文件和确认上传。上传文件在浏览器中…

利用MLIR实现矩阵乘法的高性能GPU码生成:一些早期结果

利用MLIR实现矩阵乘法的高性能GPU码生成:一些早期结果 介绍了使用MLIR编译器基础设施在NVIDIA GPU上针对张量核生成代码的一些早期结果。当今高性能深度学习的最先进技术主要是由高度调优的库驱动的。这些库通常是由专业程序员手工优化与调优的,他们使用低级抽象,付出了巨大…

图文并茂手把手教你MAC运行.net项目(Visual Studio 配置c# .net环境 运行solution)

下载Visual Studio 点击这里直达官网安装Visual Studio开启项目(如果你有现成的项目) 如果没有现成的项目,可以参考下一个步骤进行测试哦 选择.sln点击键盘F5,启动项目 观察Application Output, 项目启动成功结语今天就写到这里啦~ 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ…