Python3 对接微信

Python实例:微信-第二章(多次发送) 第一章已经实现Python接入微信自动发送一段话这一章要实现的是较为复杂的效果。 阅读详情
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 = "xxxxxxx"
        # nonceStr
        self.app_secret = "xxxxxxxxxx"
        # 获取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())

# -*- 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 = "xxxxxxxxxx"
        # nonceStr
        self.app_secret = "xxxxxxxxxxxxxxxxx"
        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())


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

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Online_API_calls.html

企业微信-会话内容存档-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 阅读详情

相关推荐

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

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

k5l6m的博客 225

vue 引入weixin-js-sdk报错: import wx from ‘weixin-js-sdk‘ wx=‘undefined‘

vue 引入weixin-js-sdk报错: import wx from ‘weixin-js-sdk‘ wx=‘undefined‘

且听风吟的博客 2581

PC端微信HOOK并与Python对接

一款基于易语言开发的微信HOOK框架DaenWxHook,内存级别控制PC端微信。

小小明-代码实体的专栏 2万+

python电脑版微信-微信PC版的API接口 | 可通过Python调用微信功能

微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息,接受转账、好友请求、入群请求,群管理等功能。可用于二次开发在线微信机器人、微信消息监控、群控软件、开发界面作多个微信控制软件等用途。clone/下载源码到本地安装源码包里的微信客户端(你以前的版本和这个不一致的都需要安装这个)执行源码中的test.py目前提供pyd和依赖的相关文件,通过python直接impo...

weixin_37988176的博客 5595

单细胞测序流程(五)t-sne聚类分析和寻找marker基因

系列文章目录 单细胞测序流程(一)简介与数据下载 单细胞测序流程(二)数据整理 单细胞测序流程(三)质控和数据过滤——Seurat包分析,小提琴图和基因离差散点图 单细胞测序流程(四)主成分分析——PCA 本期主讲内容——t-sne聚类分析和寻找marker基因 介绍:T-SNE是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。 一、课前准备 之前所使用的数据 R语言的IDE 二、过程 聚类分析的目的是根据细胞的差别所进行细胞分群,两个..

qq_45478665的博客 2万+

vivado生成及调用自定义IP的方法

开发环境:vivado 2018.2 1.将整个工程封装为自定义IP 将整个工程封装为自定义IP主要有以下步骤: 步骤1.选中工程中的top模块。点击Tools ------> Create and Package New IP,如图1所示 图1 步骤2.弹出界面后,点击next至图2界面,选择Package your current project,然后继续点击next 图2 步骤3.选择生成的IP路径,如图3所示。这个路径就是后续添加该IP的路径 图3 步骤4.继续点击next,然后选择fi

进击的阿日比 4726

Python与微信交互(互动)神器yyds

Weixin-Python 是一个用于开发微信公众平台应用的 Python 库。它可以帮助你轻松地处理微信服务器发来的消息,以及向用户发送各种类型的消息。Weixin-Python 的主要功能包括:验证微信服务器的签名,确保请求来自微信服务器。解析微信服务器发来的 XML 消息,并提供便捷的 API 来处理这些消息。创建并发送各种类型的回复消息,如文本、图片、语音、视频、音乐和图文消息。处理事件推...

Python小二 2589

MaxENT生态位模型实战:从数据准备到论文发表的完整指南

本文提供MaxENT生态位模型从数据准备到论文发表的完整实战指南,涵盖物种分布数据处理、环境变量筛选、参数优化及结果可视化等关键步骤。特别介绍如何通过R语言进行高级建模优化,提升模型AUC值,并分享海洋生物专题研究中的数据处理技巧。适合生态学研究者快速掌握这一强大的物种分布预测工具,产出高质量研究成果。

tensor9flow的博客 301

Zabbix对接企业微信Python3 Code

Zabbix对接企业微信Python3 Code

tq_devops的博客 1325

最详细的Cadence OrCAD Capture自带元件库的介绍

最详细的Cadence OrCAD Capture自带元件库的介绍 本章节将介绍Cadence OrCAD Capture 软件自带的各类元件库的分类,方便大家在设计时能够快速的选择元件。 AMPLIFIER.OLB 共182个零件,存放模拟放大器,IC,如LM386,MAX457等。 ARITHMETIC.OLB 共182个零件...

LGCPCB的博客 6万+

【数据结构】汉诺塔问题(丰富图解)

经典汉诺塔问题,丰富图解,助你理解。

℉f的博客 4105

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

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

出去玩去的博客 2496

微信小程序 - [wxapplib]] backgroundfetch privacy fail {“errno”:101,“errMsg”:“private_getBackgroundFetchDa

微信小程序报错之backgroundfetch privacy fail,微信小程序报错WAServiceMainContext.js:1 [wxapplib]] backgroundfetch privacy fail {“errno“:101,怎么解决?问题出现:调用wx.chooseMessageFile报错(开发者工具中正常)用户隐私协议中未声明小程序使用此功能,安卓真机调试报错:backgroundfetch privacy fail ,怎么解决?微信小程序[wxapplib]] backgrou

🏆 前端领域优质创作者 1万+

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

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

为了兼容这部分手机,车机端在向手机端发送USB控制命令字的同时,需要启动mDNS Server,广播车机端IP地址和HiCar SDK侦听的Server Socket端口(IP地址和端口在HiCar SDK初始化USB driver时,告知车机),在检测到手机断开USB连接时关闭mDNS Server。厂商在集成HiCar SDK开发HMI应用时,不可避免会使用到智能座舱的敏感权限,例如位置权限、摄像头权限、麦克风权限等,SDK初始化时,厂商HMI应用需要设置必要的车机参数供SDK使用。

码农17年的博客 1074

STM32开发 -- 4G模块开发详解(1)

这部分一直再看,资料都已经整理好了,但是一直没有汇总。接下来就详细的看一下,GSM这部分是怎么实现的。

不积跬步,无以至千里 5万+

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

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

weixin_39645041的博客 366

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

编辑编辑器 3014

IEM模型,地表粗糙度模拟

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

weixin_41639818的博客 2624

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

CodeIsle的博客 797

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

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

weixin_39633954的博客 337

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
上一篇: PowerDesigner 表格导出为excel
下一篇: Python 小写数字转为大写
唐僧不爱八戒
博客等级 码龄9年 158粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值