weixin-python

我要开发同款
匿名用户2021年12月10日
28阅读
开发技术Python
所属分类Web应用开发、Web框架
授权协议Readme

作品详情

微信SDK

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

文档目录快速开始微信消息微信支付微信登陆微信公众平台

欢迎提交Pullrequests

如果需要单独使用其中的某些模块,可以见文档目录的具体模块

如果需要组合在一起可以参考快速开始

目录安装功能异常用法参数初始化微信消息微信登陆微信支付微信公众号安装

使用pip

sudopipinstallweixin-python

使用easy_install

sudoeasy_installweixin-python

安装最新版本pip3installgit+https://github.com/zwczou/weixin-python

当前版本v0.5.7

功能微信登陆微信支付微信公众号微信消息异常

父异常类名为WeixinError子异常类名分别为WeixinLoginErrorWeixinPayErrorWeixinMPErrorWeixinMsgError

用法参数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_IDWEIXIN_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-*-fromdatetimeimportdatetime,timedeltafromflaskimportFlask,jsonify,request,url_forfromweixinimportWeixin,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.alldefall(**kwargs):"""监听所有没有更特殊的事件"""returnweixin.reply(kwargs['sender'],sender=kwargs['receiver'],content='all')@weixin.text()defhello(**kwargs):"""监听所有文本消息"""return"hellotoo"@weixin.text("help")defworld(**kwargs):"""监听help消息"""returndict(content="helloworld!")@weixin.subscribedefsubscribe(**kwargs):"""监听订阅消息"""printkwargsreturn"欢迎订阅我们的公众号"微信登陆@app.route("/login")deflogin():"""登陆跳转地址"""openid=request.cookies.get("openid")next=request.args.get("next")orrequest.referreror"/",ifopenid:returnredirect(next)callback=url_for("authorized",next=next,_external=True)url=weixin.authorize(callback,"snsapi_base")returnredirect(url)@app.route("/authorized")defauthorized():"""登陆回调函数"""code=request.args.get("code")ifnotcode: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)returnresp微信支付

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

@app.route("/pay/jsapi")defpay_jsapi():"""微信网页支付请求发起"""try:out_trade_no=weixin.nonce_strraw=weixin.jsapi(openid="openid",body=u"测试",out_trade_no=out_trade_no,total_fee=1)returnjsonify(raw)exceptWeixinError,e:printe.messagereturne.message,400@app.route("/pay/notify,methods=['POST'])defpay_notify():"""微信异步通知"""data=weixin.to_dict(request.data)ifnotweixin.check(data):returnweixin.reply("签名验证失败",False)#处理业务逻辑returnweixin.reply("OK",True)if__name__=='__main__':app.run(host="0.0.0.0",port=9900)微信公众号

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

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

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

importweixinDEFAULT_DIR="/tmp"

获取公众号唯一凭证

weixin.access_token

获取ticket

weixin.jsapi_ticket

创建临时qrcode

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

创建永久性qrcode

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

长链接变短链接

weixin.shorturl("https://example.com/test")
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论