zwczou/weixin-python
zwczou/weixin-python has 1,677 GitHub stars and 388 forks. GitHot measured -1 in 7 days. Last checked 2026-11-10 01:19 UTC. Last push 2023-08-06.
微信SDK - 包括微信支付,微信公众号,微信登陆,微信消息处理等
Crecimiento de estrellas medido
- in 24h
- Actualización retrasada
- in 7 days
- -1
- in 15 days
- Actualización retrasada
- in 1 month
- Actualización retrasada
Cambios netos en períodos que se solapan, no totales diarios. Los datos no disponibles se dejan en blanco. Las estrellas indican interés, no calidad.
README.md
Original微信SDK
提供微信登录,公众号管理,微信支付,微信消息的全套功能
文档目录
欢迎提交Pull requests
如果需要单独使用其中的某些模块,可以见文档目录的具体模块
如果需要组合在一起可以参考快速开始
目录
安装
使用pip
sudo pip install weixin-python
使用easy_install
sudo easy_install weixin-python
安装最新版本
pip3 install git+https://github.com/zwczou/weixin-python
当前版本v0.5.7
功能
- 微信登录
- 微信支付
- 微信公众号
- 微信消息
异常
父异常类名为 WeixinError
子异常类名分别为 WeixinLoginError WeixinPayError WeixinMPError WeixinMsgError
用法
参数
WEIXIN_TOKEN必填,微信主动推送消息的TOKENWEIXIN_SENDER选填,微信发送消息的发送者WEIXIN_EXPIRES_IN选填,微信推送消息的有效时间WEIXIN_MCH_ID必填,微信商户ID,纯数字WEIXIN_MCH_KEY必填,微信商户KEYWEIXIN_NOTIFY_URL必填,微信回调地址WEIXIN_MCH_KEY_FILE可选,如果需要用退款等需要证书的api,必选WEIXIN_MCH_CERT_FILE可选WEIXIN_APP_ID必填,微信公众号appidWEIXIN_APP_SECRET必填,微信公众号appkey
上面参数的必填都是根据具体开启的功能有关, 如果你只需要微信登录,就只要选择 WEIXIN_APP_ID WEIXIN_APP_SECRET
微信消息
WEIXIN_TOKENWEIXIN_SENDERWEIXIN_EXPIRES_IN
微信登录
WEIXIN_APP_IDWEIXIN_APP_SECRET
微信公众平台
WEIXIN_APP_IDWEIXIN_APP_SECRET
微信支付
WEIXIN_APP_IDWEIXIN_MCH_IDWEIXIN_MCH_KEYWEIXIN_NOTIFY_URLWEIXIN_MCH_KEY_FILEWEIXIN_MCH_CERT_FILE
初始化
如果使用flask
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from flask import Flask, jsonify, request, url_for
from weixin import Weixin, WeixinError
app = 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 kwargs
return "欢迎订阅我们的公众号"
微信登录
@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", 400
next = request.args.get("next", "/")
data = weixin.access_token(code)
openid = data.openid
resp = 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_str
raw = weixin.jsapi(openid="openid", body=u"测试", out_trade_no=out_trade_no, total_fee=1)
return jsonify(raw)
except WeixinError, e:
print e.message
return 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_token跟jsapi_ticket函数
access_token默认保存在~/.access_token
jsapi_ticket默认保存在~/.jsapi_ticket
默认在(HOME)目录下面,如果需要更改到指定的目录,可以导入库之后修改,如下
import weixin
DEFAULT_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")
Explorar proyectos relacionados
codecrafters-io/build-your-own-x
Domina la programación recreando desde cero tus tecnologías favoritas.
561,728 estrellaspublic-apis/public-apis
Una lista colectiva de API gratuitas
498,148 estrellasmorluto/rea
Ingeniería inversa de cualquier cosa con agentes, desde el comportamiento de la aplicación hasta los binarios nativos.
451,531 estrellasopenclaw/openclaw
La IA que de verdad hace las cosas. Cualquier sistema operativo y cualquier plataforma. Al estilo langosta. 🦞
394,331 estrellas