记录一次用python升级微信支付的代金券的接口

2024-05-09 01:58

本文主要是介绍记录一次用python升级微信支付的代金券的接口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近打开微信支付的后台,做代金券页面竟然要升级接口

官方给了一堆文档,一如既往读的头疼

于是微信开发者社区看到一篇文章

借鉴一下,来这里mark一下

首先你要先安装python不会的话去参照这个链接安装一下

https://www.liaoxuefeng.com/wiki/1016959663602400/1016959856222624

我就是参照这个安装的,安装的3.x版本

安装成功后看一下版本

 出现这个就是安装成功

然后接下来打开微信支付的后台

提前准备好

1.微信支付商户号

2.api秘钥

好了接下来

准备开始

随便新建一个.py的文件,在这里我是命名为1.py

接下来随便用个编辑器打开,我这里用的hubider你用vscdoe都行,用记事本都ok

复制的微信社区一个大佬的代码

复制之前先替换一下里面对应内容

import time
from xml.dom import minidomimport hashlib
from heapq import heappush, heappop
from collections import OrderedDictimport requestsSandBox_Url = 'https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey'
MicroPay_Url = "https://api.mch.weixin.qq.com/sandboxnew/pay/micropay"
UnifiedOrder_Url = "https://api.mch.weixin.qq.com/sandboxnew/pay/unifiedorder"
OrderQuery_Url = "https://api.mch.weixin.qq.com/sandboxnew/pay/orderquery"
ReFund_Url = "https://api.mch.weixin.qq.com/sandboxnew/pay/refund"
RefundQuery_Url = "https://api.mch.weixin.qq.com/sandboxnew/pay/refundquery"
DownloadBill_Url = "https://api.mch.weixin.qq.com/sandboxnew/pay/downloadbill"
nonce_str = "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"if __name__ == '__main__':mch_id = "这里放微信商户号"wxpay_key = "这里放秘钥"def get_sign_key(mch_id, key):template = "<xml><mch_id><![CDATA[{0}]]></mch_id>" \"<nonce_str><![CDATA[{1}]]></nonce_str>" \"<sign><![CDATA[{2}]]></sign></xml>"nonce_str = "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"encrypted_str = "mch_id=" + mch_id + "&nonce_str=" + nonce_str + "&key=" + keym = hashlib.md5()m.update(encrypted_str.encode('utf-8'))sign_key_request_data = template.format(mch_id, nonce_str, m.hexdigest().upper())result = requests.post(SandBox_Url, sign_key_request_data)dom = minidom.parseString(result.content)root = dom.documentElementsandbox_signkey = ''if root.getElementsByTagName("return_code")[0].childNodes[0].nodeValue == "FAIL":retmsg = root.getElementsByTagName("return_msg")[0].childNodes[0].nodeValueraise RuntimeError("请求出了点小错误:" + retmsg)else:sandbox_signkey = root.getElementsByTagName("sandbox_signkey")[0].childNodes[0].nodeValueprint("亲,这就是你的沙箱密钥了哦: \n" + sandbox_signkey)return sandbox_signkeydef to_tree_map(param_map):keys = param_map.keys()heap = []for item in keys:heappush(heap, item)sort = []while heap:sort.append(heappop(heap))res_map = OrderedDict()for key in sort:res_map[key] = param_map.get(key)return res_mapdef build_xml(param, wxpay_key):tree_map = to_tree_map(param)encrypted_str = ""for k in tree_map:encrypted_str += "{}={}&".format(k, tree_map[k])encrypted_str = encrypted_str + "key=" + wxpay_keym = hashlib.md5()m.update(encrypted_str.encode('utf-8'))sign = m.hexdigest().upper()param.update(sign=sign)complete_tree_map = to_tree_map(param)xml = "<xml>"for k in complete_tree_map:xml += "<{}><![CDATA[{}]]></{}>".format(k, complete_tree_map[k], k)xml += "</xml>"return xmldef request_handler(url, xml, desc):result = requests.post(url, xml)print(desc + "我才不是请求结果呢:\n" + result.content.decode("utf-8"))def upgrade(mch_id, wxpay_key):if mch_id == "":raise RuntimeError("出差错了哦,亲,你的商户号在哪呢?不填写商户号亲亲是要给空气去验收吗?")if wxpay_key == "":raise RuntimeError("出差错了哦,亲,你不填写商户密钥怎么继续呢,是用爱吗?")key = get_sign_key(mch_id, wxpay_key)nonce_str = "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"out_trade_no = round(time.time())MicroPay_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id,'nonce_str': nonce_str, 'body': "check",'out_trade_no': out_trade_no, 'total_fee': "501", 'spbill_create_ip': "8.8.8.8",'auth_code': "120061098828009406", }MicroPay_xml = build_xml(MicroPay_param, key)request_handler(MicroPay_Url, MicroPay_xml, "亲,用例编号1001刷卡正常支付有结果了,快来看呀 \n")time.sleep(1)OrderQuery_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id, 'nonce_str': nonce_str,'out_trade_no': out_trade_no,}OrderQuery_xml = build_xml(OrderQuery_param, key)request_handler(OrderQuery_Url, OrderQuery_xml, "亲,用例编号1001刷卡正常支付查询出结果了,快来看呀 \n")time.sleep(1)out_trade_no_2nd = round(time.time())print("我是1002下单的订单号:",+ out_trade_no_2nd)MicroPay_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id,'nonce_str': nonce_str, 'body': "check",'out_trade_no': out_trade_no_2nd, 'total_fee': "502", 'spbill_create_ip': "8.8.8.8",'auth_code': "120061098828009406",}MicroPay_xml = build_xml(MicroPay_param, key)request_handler(MicroPay_Url, MicroPay_xml, "亲,用例编号1002刷卡正常支付结果来了,你还抓紧不来看 \n")time.sleep(1)OrderQuery_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id, 'nonce_str': nonce_str,'out_trade_no': out_trade_no_2nd,}OrderQuery_xml = build_xml(OrderQuery_param, key)request_handler(OrderQuery_Url, OrderQuery_xml, "亲,用例编号1002刷卡正常支付查询结果,结果好像有点不太对呢 \n")time.sleep(1)ReFund_param = {'appid': "wxd678efh567hg6787", 'mch_id': mch_id, 'nonce_str':nonce_str,'out_refund_no': out_trade_no,'total_fee': "502",'refund_fee': "501",  'out_trade_no': out_trade_no_2nd,}ReFund_xml = build_xml(ReFund_param, key)request_handler(ReFund_Url, ReFund_xml, "亲,下面展示的是用例编号1002刷卡支付退款的结果,你猜对不对 \n")time.sleep(1)RefundQuery_param = {'appid': "wxd678efh567hg6787", 'mch_id': mch_id,'nonce_str':nonce_str,'out_trade_no': out_trade_no_2nd, }RefundQuery_xml = build_xml(RefundQuery_param, key)request_handler(RefundQuery_Url, RefundQuery_xml, "亲,用例编号1002刷卡支付退款查询结果返回中,加载不出来长按电源键或Ait+F4重试哦 \n")time.sleep(1)nonce_str = "5K8264ILTKCH16CQ2502SI8ZNMTM67VS"out_trade_no = round(time.time())UnifiedOrder_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id,'nonce_str': nonce_str, 'body': "check",'out_trade_no': out_trade_no, 'total_fee': "551", 'notify_url':"https://www.weixin.qq.com/wxpay/pay.php",'spbill_create_ip': "8.8.8.8",'trade_type': "JSAPI", }UnifiedOrder_xml = build_xml(UnifiedOrder_param, key)request_handler(UnifiedOrder_Url, UnifiedOrder_xml, "亲,用例编号1003-公众号/APP/扫码正常支付有结果了,快来看呀 \n")time.sleep(1)OrderQuery_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id, 'nonce_str': nonce_str,'out_trade_no': out_trade_no,}OrderQuery_xml = build_xml(OrderQuery_param, key)request_handler(OrderQuery_Url, OrderQuery_xml, "亲,用例编号1003-公众号/APP/扫码正常支付查询出结果了,快来看呀 \n")time.sleep(1)out_trade_no_2nd = round(time.time() * 1000)print("我是1002下单的订单号:",+ out_trade_no_2nd)UnifiedOrder_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id,'nonce_str': nonce_str, 'body': "check",'out_trade_no': out_trade_no_2nd, 'total_fee': "552", 'notify_url':"https://www.weixin.qq.com/wxpay/pay.php",'spbill_create_ip': "8.8.8.8",'trade_type': "JSAPI", }UnifiedOrder_xml = build_xml(UnifiedOrder_param, key)request_handler(UnifiedOrder_Url, UnifiedOrder_xml, "亲,用例编号1004-公众号/APP/扫码支付退款结果来了,你还抓紧不来看 \n")time.sleep(1)OrderQuery_param = {'appid': "wxd678efh567hg6787",'mch_id': mch_id, 'nonce_str': nonce_str,'out_trade_no': out_trade_no_2nd,}OrderQuery_xml = build_xml(OrderQuery_param, key)request_handler(OrderQuery_Url, OrderQuery_xml, "亲,用例编号1004-公众号/APP/扫码支付退款查询结果,结果好像有点不太对呢 \n")time.sleep(1)ReFund_param = {'appid': "wxd678efh567hg6787", 'mch_id': mch_id, 'nonce_str':nonce_str,'out_refund_no': out_trade_no,'total_fee': "552",'refund_fee': "551",  'out_trade_no': out_trade_no_2nd,}ReFund_xml = build_xml(ReFund_param, key)request_handler(ReFund_Url, ReFund_xml, "亲,下面展示的是用例编号1004-公众号/APP/扫码支付退款的结果,你猜对不对 \n")time.sleep(1)RefundQuery_param = {'appid': "wxd678efh567hg6787", 'mch_id': mch_id,'nonce_str':nonce_str,'out_trade_no': out_trade_no_2nd, }RefundQuery_xml = build_xml(RefundQuery_param, key)request_handler(RefundQuery_Url, RefundQuery_xml, "亲,用例编号1004-公众号/APP/扫码支付退款查询结果返回中,加载不出来长按电源键或Ait+F4重试哦 \n")time.sleep(1)DownloadBill_param = {'appid': "wxd678efh567hg6787", 'mch_id': mch_id, 'nonce_str': nonce_str,'bill_date': "2021-04-01", 'bill_type': "ALL"}DownloadBill_xml = build_xml(DownloadBill_param, key)request_handler(DownloadBill_Url, DownloadBill_xml, "亲,你要下载交易的对账单来了,加载中······,加载不出来长按电源键或Ait+F4重试哦 \n")upgrade(mch_id, wxpay_key) 

大佬的文章等会放在底部

然后再这个文件夹下打开cmd

python 1.py运行

报错,是对应的包没有安装

py的包不是npm是pip命令

 

安装一下这个包

然后重新 python 1.py

多运行两次,本地沙箱环境

然后去这个链接查看升级成功没有

https://pay.weixin.qq.com/wiki/doc/api/tools/sp_coupon.php?chapter=15_6&index=4

然后再返回微信支付代金券查看接口就升级成功

 

 

参考微信社区大佬链接

https://developers.weixin.qq.com/community/develop/article/doc/0002e82b060c3028230c915f150813

 

这篇关于记录一次用python升级微信支付的代金券的接口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972074

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部