首页 > 编程语言 >1.6K Star 微信自动化,weixin-python,一个与微信交互超强库

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

时间:2024-04-20 11:23:23浏览次数:27  
标签:1.6 Star weixin 微信 APP WEIXIN return app

简介

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

安装

使用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, 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_tokenjsapi_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")

 

Github地址

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

标签:1.6,Star,weixin,微信,APP,WEIXIN,return,app
From: https://www.cnblogs.com/EthanS/p/18147487

相关文章

  • 2.5K star 一款插件化&易拓展的即时聊天(IM)平台
    简介Tailchat基于HTML设计,适合任何平台或操作系统,但它仍然无法在Web中提供一些原生支持。所以Tailchat也有客户端提供手机通知、桌面截图等操作系统支持。功能消息支持基本信息,支持如文本/链接/提及/图像/文件等多种信息类型,并支持对任何你想要的信息的附加反应。你......
  • 微信小程序video在组件中的使用---暂停视频
    首先在wxml文件中设置video的id<videoid='myVideo'src='{{video}}'controls='true'></video>然后在js文件中通过wx.createVideoContext获取VideoContext实例letvideoCtx=nullletapp=getApp()Component({properties:{},......
  • 1.3K Star 一个又强又美的博客系统 POETIZE - 最美博客
    简介该个人博客系统是一个由SpringBoot+Vue2+Vue3的开发的,它不仅支持移动端和pc端的自适应,并且配备有完整的前台和后台管理功能,使博客管理者能够轻松的管理及发布博客!该博客系统主要分为两个模块:博客系统:具有文章,表白墙,图片墙,收藏夹,乐曲,视频播放,留言,友链,时间线,后台管理......
  • Ubuntu 22.04中使用微信
    刚开始装了一个优麒麟原装的微信,真的好难用,就只能发送接受个文字消息,所以还是推荐安装wine版本的,链接如下:https://www.ubuntukylin.com/applications/119-cn.html还是推荐离线安装,在线安装wine环境时容易出问题,根据它的教程安装即可~1、Wine环境安装:下载链接:http://archive.ubun......
  • 微信小程序 input 不能输入特殊字符的方法
    微信小程序开发中经常遇到有表单提交的需求,一些特殊的字段要过滤掉特殊字符。比如姓名、籍贯、地址等,都要实现不能输入特殊字符的功能,可以创建一个统一的方法来处理输入事件,并在这个方法中检查输入的字符。下面是一个简单的示例:<viewclass='flexf30ali-center'><......
  • Unity3D 打造基于AStar的寻路与导航详解
    Unity3D打造基于AStar的寻路与导航详解BYCW丶零夜 ​关注 2人赞同了该文章前言寻路与导航是游戏开发中非常重要的一部分,它可以让游戏中的角色自动寻找到目标位置,并避开障碍物。本文将介绍如何使用Unity3D打造基于AStar算法的寻路与导航解,包括技术详......
  • 企业微信hook 最新版 、企微输入验证码,二次扫码方案、发名片收消息功能,企业微信hook源
    ​产品说明在PC端企业微信客户端上发送自定义名片、封装企业微信功能为DLL,可与其他语言调用实现功能。DLL可以监听企业微信的所有消息接收和群消息,根据需求实现机器人、群发、自动消息推送、聊天机器人、监管数据收集等功能企业微信hook,企业微信功能api,自定义开发功能清......
  • 根据微信code获取换取用户登录态信息
    1.根据微信code获取换取用户登录态信息点击查看代码/***根据code获取小程序用户openpid*/@OverridepublicR<Map<String,String>>getUnitCheckPersonOpenId(Stringcode){R<Map<String,String>>resMap=newR<>();//获取......
  • 实验一-原型设计 微信卡包页面
    微信卡包页面-原型设计分享一、实验题目:原型设计二、实验目的:掌握产品原型设计方法和相应工具使用。三、实验要求 对比分析墨刀、Axure、Mockplus等原型设计工具的各自的适用领域及优缺点(至少3条)。1.墨刀:  ~适用领域:墨刀适用于快速原型设计和协作,特别是在移动应用和网页......
  • 【Python微信机器人】写一个监控采集公众号文章的插件
    原文链接:https://mp.weixin.qq.com/s/f8zbM6wMld3koqjaFbCuxw前言弄了个视频号下载后,同一个问题每天都会被问,回答的有点烦了。想了想根本原因还是缺少一个交流平台,微信群的话,刚进群的看不到之前的聊天记录。想整个知识星球,发现只能弄个收费的,免费的需要激活码才能创建。而有......