Python3 对接微信

用Python实现与WeChat交互 用Python登录微信# Python要和微信进行连接通信 需要导入wxpy库 # 本代码执行后直接会弹出二维码 手机上用微信扫描 # 就能够登录微信 收发消息 from wxpy import * bot = Bot(cache_path=True) # 设置cache 登录信息保存 # 这样就不用每次都扫描二维码 bot.file_helper.send("hello") # 发送消息hell... 阅读详情
# -*- coding: utf-8 -*-
from wechatpy import WeChatClient
import time
import requests
import hashlib
import random
import string


class wxJdkParmasView(object):
    ''' 1, 此处官方文档明确提到用户需要缓存jsapi_ticket
           因为其api调用次数非常有限,根据文档说明我把获取基础支持的acess_token和ticket写到了一起

        2, 此类是给前端js_JDK构造参数,并得到 nonceStr,signature,timestamp 的类,调用signutareEncryption()即可

        3, signature生成需要一下几个参数noncestr(随机字符串),
           有效的jsapi_ticket, timestamp(时间戳),
           url(当前网页的URL,不包含#及其后面部分)
    '''

    def __init__(self, url):

        # app_id
        self.app_id = "***********"
        # nonceStr
        self.app_secret = "********************"
        self.client = WeChatClient(self.app_id, self.app_secret)
        # 获取access_token链接
        # https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
        self.base_get_access_token = self.client.fetch_access_token()
        # 获取ticket链接
        # https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
        self.get_ticket_url = self.client.jsapi.get_jsapi_card_ticket()
        print(self.get_ticket_url)
        # 生成signature的参数
        self.ret = {
            'nonceStr': self.__create_nonce_str(),
            'timestamp': self.__create_timestamp(),
            # 'jsapi_ticket': self.__get_ticket(),
            'jsapi_ticket': self.get_ticket_url,
            'url': url
        }
        self.signutareEncryption()

    def get_access_token(self):
        '''从微信端获取access_token'''
        try:
            access_token = requests.get(self.base_get_access_token).json()['access_token']
            # access_token = "23_oZS_nQaKMC5UjbfzDJ48Jsaz6hPhLjWg3pVDCd2tva1hM19nQTdimLH-Dn-Hy0da2NDFdgM0AvKkkR48WKBUwTQkjRJLl2PAD0ZcKgpvIw9Qn3vWBI6B6YDYnm4T-UnOfn7Hj-x_B_ZCHNnVKLUeACAYZI"
            # 缓存并设置过期时间
            # cache.set(key, access_token, 110 * 60)
            return access_token
        except:
            return "获取access_token异常"

    def __get_ticket(self):
        '''获取tickey'''
        try:
            access_token = self.get_access_token()
            # 获取ticket
            ticket = requests.get(self.get_ticket_url.format(access_token)).json()['ticket']
            return ticket
        except:
            return "获取tickey异常"

    def __create_nonce_str(self):
        '''从a-zA-Z0-9生成指定数量的随机字符'''

        return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15))

    def __create_timestamp(self):
        '''生成时间戳'''

        return int(time.time())

    def signutareEncryption(self):
        '''生成签名signature'''

        string = '&'.join(['%s=%s' % (key.lower(), self.ret[key]) for key in sorted(self.ret)]).encode('utf-8')
        signature = hashlib.sha1(string).hexdigest()
        # 返回js_jdk参数
        response = dict()
        response['signature'] = signature
        response['timestamp'] = self.ret.get('timestamp')
        response['nonce']=self.ret.get('nonceStr')
        response['appid'] = self.app_id
        return response

if __name__ == '__main__':
    print(wxJdkParmasView('https://blog.youkuaiyun.com/GodLordGee/article/details/89382886').signutareEncryption())


import time
import requests
import hashlib
import random
import string


class wxJdkParmasView(object):
    ''' 1, 此处官方文档明确提到用户需要缓存jsapi_ticket
           因为其api调用次数非常有限,根据文档说明我把获取基础支持的acess_token和ticket写到了一起

        2, 此类是给前端js_JDK构造参数,并得到 nonceStr,signature,timestamp 的类,调用signutareEncryption()即可

        3, signature生成需要一下几个参数noncestr(随机字符串),
           有效的jsapi_ticket, timestamp(时间戳),
           url(当前网页的URL,不包含#及其后面部分)
    '''

    def __init__(self, url):

        # app_id
        self.app_id = "************"
        # nonceStr
        self.app_secret = "*****************"
        # 获取access_token链接
        # https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
        self.base_get_access_token = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}'.format(self.app_id, self.app_secret)
        # 获取ticket链接
        # https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
        self.get_ticket_url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={}&type=jsapi'
        # 生成signature的参数
        self.ret = {
            'nonceStr': self.__create_nonce_str(),
            'timestamp': self.__create_timestamp(),
            'jsapi_ticket': self.__get_ticket(),
            'url': url
        }
        self.signutareEncryption()

    def get_access_token(self):
        '''从微信端获取access_token'''
        try:
            access_token = requests.get(self.base_get_access_token).json()['access_token']
            # access_token = "23_oZS_nQaKMC5UjbfzDJ48Jsaz6hPhLjWg3pVDCd2tva1hM19nQTdimLH-Dn-Hy0da2NDFdgM0AvKkkR48WKBUwTQkjRJLl2PAD0ZcKgpvIw9Qn3vWBI6B6YDYnm4T-UnOfn7Hj-x_B_ZCHNnVKLUeACAYZI"
            # 缓存并设置过期时间
            # cache.set(key, access_token, 110 * 60)
            return access_token
        except:
            return "获取access_token异常"

    def __get_ticket(self):
        '''获取tickey'''
        try:
            access_token = self.get_access_token()
            # 获取ticket
            ticket = requests.get(self.get_ticket_url.format(access_token)).json()['ticket']
            print(ticket)
                # print("Redis中保存ticketA正常%s"%cache.get('ticket'))

            return ticket
        except:
            return "获取tickey异常"

    def __create_nonce_str(self):
        '''从a-zA-Z0-9生成指定数量的随机字符'''

        return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(15))

    def __create_timestamp(self):
        '''生成时间戳'''

        return int(time.time())

    def signutareEncryption(self):
        '''生成签名signature'''

        string = '&'.join(['%s=%s' % (key.lower(), self.ret[key]) for key in sorted(self.ret)]).encode('utf-8')
        signature = hashlib.sha1(string).hexdigest()
        # 返回js_jdk参数
        response = dict()
        response['signature'] = signature
        response['timestamp'] = self.ret.get('timestamp')
        response['nonce']=self.ret.get('nonceStr')
        response['appid'] = self.app_id
        return response

if __name__ == '__main__':
    print(wxJdkParmasView('https://blog.youkuaiyun.com/GodLordGee/article/details/89382886').signutareEncryption())

http://docs.wechatpy.org/zh_CN/master/client/jsapi.html WechatPy

https://www.cnblogs.com/ifme/p/11796705.html 微信JSSdk实现分享功能

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 微信官方文档

Python-Django毕业设计扫码点餐微信小程序(程序+Lw) 订单管理,在已支付订单页面可以对索引、订单编号、商品名称、商品图片、购买数量、价格/积分、折扣价格、总价格/总积分、折扣总价格、支付类型、状态、地址、电话、收货人、下单时间等内容进行详情和发货操作,还可以对未支付订单,已取消订单,已退款订单,已完成订单,已发货订单进行详细操作如图5-14所示。食物信息管理,在食物信息管理页面可以对索引、食物名称、食物图片、食物类型、原材料、食物视频、发布日期、积分、价格、会员价等内容进行详情,修改,查看评论和删除操作,如图5-11所示。图5-12食物类型管理界面图。 阅读详情

相关推荐

Python3 微信支付(小程序支付)V3接口

微信支付V3接口

qq_42142258的博客 1万+

python 微信公众号,微信小程序wechatpy的使用

随着人工智能的不断发展,微信开发也越来越重要,很多人都开启了学习微信相关服务,本文就介绍了微信公众号和小程序的基础内容。以上就是今天要讲的内容,本文仅仅简单介绍了wechatpy的使用,而wechatpy提供了大量能使我们快速便捷地处理微信公众号,微信小程序的函数和方法。

weixin_41486438的博客 7552

企业微信-会话内容存档-python3对接Linux_C_SDK-libWeWorkFinanceSdk_C.so

import base64 import ctypes import Crypto from Crypto.Cipher import PKCS1_v1_5 from Crypto.PublicKey import RSA class WxWork: CORP_ID = '' PRI_KEY = '' CHAT_SECRET = '' @classmethod def sync_msg(cls): dll = ctypes.cdll.LoadLi

weixin_44079517的博客 2542

Django+wechatpy接入微信公众平台以及授权登录

确定Django环境可以正常运行,环境搭建见:Linux 搭建Nginx+uwsgi+Django环境 安装 wechatpy[cryptography] sudo pip3 install wechatpy[cryptography] 修改settings.py 接入微信公众号的连接去掉csrf验证,详情参考:解决Django+Vue前后端分离的跨域问题及关闭csrf验证的后半部分 在set...

weixin_30555125的博客 1054

Python3.10环境下Dify聊天机器人对接企业微信全流程(附避坑指南)

本文详细介绍了在Python3.10环境下将Dify聊天机器人对接企业微信的全流程,包括环境配置、依赖管理、API设置、核心代码实现及性能优化等关键步骤。特别针对Python3.10的兼容性问题提供了解决方案,并分享了企业微信对接中的避坑指南,帮助开发者高效搭建智能客服系统。

k5l6m的博客 225

控制障碍函数(Control Barrier Function,CBF) 二、示例

使用一个经典简单的示例讲解CBF的推导

Lyajpunov的博客 6429

Zabbix对接企业微信Python3 Code

Zabbix对接企业微信Python3 Code

tq_devops的博客 1325

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

微信公众号使用uniappH5、python对接微信支付V3-JSAPI的支付功能

apiv3升级后,请求体使用不用xml使用json,每次请求需要在header中添加签名,而签名需要用微信支付的商户证书私钥进行RSA加密。微信公众号网页用uniapp,后台用的python,近期对接微信支付-apiv3版-jsapi支付,特此整理记录方便日后查找使用。3.2、jsapi_list为空列表[]也不可以,提示fail,添加一个权限就可以了。3.1、签名出错,查看参数,查看加密方式,查看url参数(出错较多)

出去玩去的博客 2496

Cadence IC618/Spectre231安装避坑指南:详解环境变量配置与License管理那些事儿

本文深入解析Cadence IC618/Spectre231安装过程中的环境变量配置与License管理难题,提供从变量冲突解决到高效License管理的实用方案。针对常见的64位标识冲突、路径污染及License服务器连接问题,给出具体诊断步骤和优化建议,帮助用户构建稳定可靠的EDA环境。

weixin_33737134的博客 615

SAP S4HANA F-02报错:更正统一日记账分类账的定制设置

消息号 FINS_ACDOC_CUST201 使用FINS_CUST_CONS_CHK_P去检查公司代码和分类账的设置 提示:过账期间变式为空(分类账 E1/公司代码 7500) 检查了表FINSC_LD_CMP 显示有分类账未分配过账期间变式 解决:后台配置定义分类账和货币类型的设置把过账变式维护下 路径:财务会计→财务会计全局设置→分类账→分类账→定义分类账和货币类型的设置 选中需要维护的分类账双击左侧的“分类账的公司代码设置”,找到对应的公司代码维护上即可。

qq_45068743的博客 6447

python3对接微信小程序蓝牙

''' Created on 2019年10月15日 @author: lg ''' from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex # 强制输入明文增加到16字节的倍数,在末尾补'\0' def add_to_16(text): text = str(text, 'ISO-8859-1') ...

a289237642的博客 671

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

python对接微信支付_python3接入微信企业支付实现小程序提现

最近发现某些小程序有了提现功能,原来小程序是不支持提现的,所以当初实现方法是打算让用户去关注公众号,再从公众号提现,当然前提要公众号跟小程序使用同一的unionid来标记唯一用户,既然现在支持小程序直接提现了,那就不再使用关注公众号这种影响用户体验的方法了小程序提现使用的是企业付款接口(这什么烂文档,这个接口印象中已经出现很久了,因为没有在小程序开发中就没太留意,产生了小程序不能做提现的错觉,虽然...

weixin_39645041的博客 366

【调优】OpenClaw调优之模型(tokens)篇

OpenClaw用户常遇四大痛点:规则被无视、API账单暴涨、低效模型选择、记忆丢失。通过/context list命令可解析上下文组成,包括工作区配置、引导参数限制、系统提示词等关键信息。重点需关注Token消耗来源,如核心配置文件、技能工具说明等,避免静默截断。建议精简非必要内容,优化记忆机制,平衡功能与成本。该分析帮助用户减少无效操作,合理控制API支出。

海兰 989

自抗扰控制(ADRC)理论与工程实践:6.1 离散时间ADRC的推导

本文系统阐述了自抗扰控制(ADRC)的离散化方法,重点对比了前向欧拉法和基于零阶保持器(ZOH)的精确离散化两种方法。前向欧拉法计算简单但精度较低,稳定性受采样周期约束;ZOH法精度高但对大采样周期更鲁棒。文章详细推导了跟踪微分器、扩张状态观测器和控制律的离散形式,分析了采样周期选择的关键因素,为ADRC的数字实现提供了理论指导。

技术工作者 195

python3 对接微信、支付宝支付接口,以及异步验签、同步验签全过程

首先简单描述下微信以及支付宝对接流程(PC网站中集成支付二维码) 对接支付宝付款的话有两种方式,一:调用支付宝接口,根据返回的qr_code的值(是一个url),然后自己生成二维码,嵌入在网页付款(也就是订单预创建),二:通过新跳转页面到支付网站支付,这种方式对于web来说不太友好,毕竟直接集成在网站中,直接支付比较方便,我本次项目中使用到的也是集成在网站中,支付宝的接口都要用到RSA2的加密库,在验签的时候略微麻烦。 微信支付跟支付宝的都差不多,安全方面,支付宝使用的是RSA2对数据的签名,微信使用MD

编辑编辑器 3014

基于PyTorch+Transformer实现谣言检测系统

本项目使用基于`PyTorch+Transformer`的谣言检测模型,将文本中的谣言事件进行连续向量化,通过一维卷积神经网络的学习训练来挖掘表示文本深层的特征,避免了特征构建的问题,并能发现那些不容易被人发现的特征,从而产生更好的效果。

优快云 精品推荐 6349

python3.6 对接微信、支付宝支付接口,以及异步验签、同步验签全过程。

首先描述下微信以及支付宝对接流程(PC网站中集成支付二维码) 对接支付宝支付付款的话有两种方式,一:调用支付宝接口,根据返回的qr_code的值(是一个url),然后自己生成二维码,嵌入在网页付款(也就是订单预创建),二:通过新跳转页面到支付网站支付,这种方式对于web来说不太友好,毕竟直接集成在网站中,直接支付比较方便,我本次项目中使用到的也是集成在网站中。 准备工作 支付宝对接有一个测试环境,支付宝沙箱版(注意,目前只有支持安装版本).... 困了困了,现在很晚了,明天继续更新 希望能让大家少

weixin_41639818的博客 2624

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【限时揭秘】Python智能体对接微信公众号底层机制:掌握这3种模式你也能做AI客服

掌握Python智能体微信公众号对接核心方法,轻松实现AI客服自动化。详解API接入、消息加密解密与异步响应三种模式,适用于智能问答、用户交互等场景,提升服务效率。开发必备技巧,值得收藏。

CodeIsle的博客 797

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

python企业微信回调_Python Django对接企业微信第三方服务回调验证的一些坑

今天公司老总,叫我把公司的企业微信,服务商管理后台中的本地应用进行回调验证。听起来一脸懵逼,没搞过企业微信对接情况。一头雾水,不知道如何下手。先讲解一下,企业微信情况。登录到企业微信后,右上角服务商管理后台之后点击进入应用管理界面选择网页应用,这里说下,创建应用的方法,自己去百度一下哈,如何创建我就不阐述了。这里配置回调URL,即是你网站的URL地址,比如:https://xxxx.xxxx.co...

weixin_39633954的博客 337

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python --微信v3支付

v3支付 # from Crypto.PublicKey import RSA # import random # from Crypto.Signature import PKCS1_v1_5 # from Crypto.Hash import SHA256 # import base64 # import time import time import random from Cryptodome.PublicKey import RSA from Cryptodome.Signature import

weixin_44634704的博客 2698

微信Native收款v3版本,pySide2(pyqt)客户端和服务端demo

微信Native支付V3版本使用教程pyside

jinshuihe~_~ 295

Rocky Linux 9.3 离线部署 Hermes Agent 并对接微信全记录:TaoToken 统一 Key 配置实战

Rocky Linux 9.3 内网离线部署 Hermes Agent,用 uv 管理 Python 3.13 并同步依赖,config.toml 中 provider 设为 custom、base_url 指向 TaoToken 统一 Key,即可接入模型并打通微信私聊通道。访问 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 获取 Key。

QuartzStag78的博客 229
上一篇: 100行python代码,轻松完成贪吃蛇小游戏
下一篇: flask 国际化
唐僧不爱八戒
博客等级 码龄9年 158粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值