开源我公司微信支付 python 版本的全部代码,包含生成微信订单,以及最新的微信平台向用户发红包,向用户付款等功能

2016-12-21 13:31:07 +08:00
 Jolly23

GitHub 代码地址 [https://github.com/Jolly23/wx_pay_python]

作者个人网站 [https://jolly23.com]

这套系统基本涵盖微信支付全部相关功能,以及自己总结的开发引导,如果可以请点 Star

微信支付功能

参考文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php

使用

首先引入包

from wx_pay import WxPay, WxPayError

构造微信支付类,传入配置文件

wx_pay = WxPay(
    wx_app_id='WX_APP_ID', 
    wx_mch_id='WX_MCH_ID', 
    wx_mch_key='WX_MCH_KEY',
    wx_notify_url='http://www.example.com/pay/weixin/notify'
)

创建订单

pay_data = wx_pay.js_api(
        openid=u'***user_openid***',  # 付款用户 openid
        body=u'***商品名称 /付款显示名称***',  # 例如:饭卡充值 100 元
        total_fee=100  # total_fee 单位是 分, 100 = 1 元
    )

给用户发红包

wx_pay.send_red_pack(
    api_client_cert_path='/home/xxx/SERVER/ext_file/wx_2_pay_cert.pem',
    api_client_key_path='/home/xxx/SERVER/ext_file/wx_2_pay_key.pem',
    send_name=u'微信支付测试',  # 红包名称
    re_openid=u'***to_user_openid***',  # 要接收红包的用户 openid
    total_amount=100,  # total_fee 单位是 分, 100 = 1 元, 最大 499 元
    wishing=u'感谢参与测试',  # 祝福语
    client_ip=u'222.222.222.222',  # 调用微信发红包接口服务器公网 IP 地址
    act_name=u'微信支付测试系统',  # 活动名称
    remark=u'感谢参与'  # 备注
)

查询订单

raw = wx_pay.close_order(out_trade_no)

关闭订单

raw = wx_pay.order_query(out_trade_no=out_trade_no)

工具函数

签名

wx_pay.sign(dict(openid="123"))

32 位随机字符串

wx_pay.nonce_str()

验证签名

wx_pay.check(dict(openid="123", sign="SIGN"))

生成微信前端 JS 参数

详见example.py的wx_js_config方法,用来生成前端使用微信js的必要参数

18755 次点击
所在节点    Python
93 条回复
v2dead
2016-12-21 16:13:42 +08:00
赞一个,微信 API 之接的恶心好久,各种 XML ,稀奇古怪的接口请求,感觉糅合了十几号人的风格。
虽然愿景很好,但这样的项目其实不太敢用的,因为即使用这个项目,还要全面的去看你的代码和微信接口,一但微信方面接口升级,不知道你那边什么时候升级,难道不支付了?
有空去看你代码的,还不如自己封装一遍。。。
liqiazero
2016-12-21 16:16:12 +08:00
该 star 的还是得 star 啊。
这个东西都是 API 各种回调,核心自然在微信那边,核心支付的东西微信在出 API 的时候已经做了各种防范了。只要 API 用的好,基本上在支付上不会问题,就是回调错了,微信那边也会给你 pass 掉。基本上没有啥安全性问题,不过还是 star 啊!
tar
2016-12-21 16:19:21 +08:00
"劳资叫你们维护系统,你们居然给开源了"
fy
2016-12-21 16:32:13 +08:00
python2 ...
butterflydog
2016-12-21 17:21:03 +08:00
点赞
pudgeee
2016-12-21 17:21:34 +08:00
这个是要赞一个。
lonelinsky
2016-12-21 17:31:45 +08:00
查询订单

raw = wx_pay.close_order(out_trade_no)
关闭订单

raw = wx_pay.order_query(out_trade_no=out_trade_no)

这边写反了哦…
deadofpeople
2016-12-21 18:11:09 +08:00
666
Jolly23
2016-12-21 18:27:18 +08:00
@lonelinsky 感谢指正,粗心了
irory
2016-12-21 18:40:57 +08:00
我记得发红包每个用户至少 1 元吧 ... 这个没判断算不算 BUG ? O(∩_∩)O 哈哈~
njushannon
2016-12-21 19:02:27 +08:00
2333333 ,可以用来轻度套现
wclebb
2016-12-21 19:07:04 +08:00
哇塞,请问有现成的网站或微信号可以参考一下吗?
虽然……用不到。
但估计以后会有用,所以希望能提供一下简单的参考或微信号。
Jolly23
2016-12-21 19:22:32 +08:00
@wclebb 民大小偲-个人中心-赞助(但是没绑定学号看不到赞助页面) 校园卡充值也看不到
em70
2016-12-21 19:23:33 +08:00
你是个伟人
timlili
2016-12-21 19:36:59 +08:00
luefei
2016-12-21 20:01:51 +08:00
zeayes
2016-12-21 20:07:25 +08:00
jessynt
2016-12-21 20:16:50 +08:00
楼上这啥情况,要撕逼啊,瓜子小板凳已备好
wellsc
2016-12-21 20:18:12 +08:00
谢谢
jessynt
2016-12-21 20:26:12 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/329136

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX