参考文档 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的必要参数
![]() | 1 soli 2016-12-21 13:51:50 +08:00 先赞一下! |
2 ty89 2016-12-21 14:02:31 +08:00 滋瓷 v2 应该多一些这种帖子,少一些撕逼的 |
![]() | 3 lincolnhuang 2016-12-21 14:07:05 +08:00 先赞后看! |
![]() | 4 shiny 2016-12-21 14:18:17 +08:00 via iPhone 你们公司同意你开源? |
![]() | 5 wyntergreg 2016-12-21 14:18:55 +08:00 手动点赞 |
![]() | 7 Jolly23 OP 放出来的代码足够大家开发用,一些涉密的小东西没开源,但不影响此框架使用。截至昨天,我公司用这套代码 3 个月已经在微信成功过账 109 万元且未产生任何问题。 |
![]() | 8 cxl008 2016-12-21 14:38:11 +08:00 赞一个 |
![]() | 9 flamhaze5946 2016-12-21 14:40:21 +08:00 @Jolly23 你这泄露了财务信息吧 - -b |
10 wsy2220 2016-12-21 14:42:08 +08:00 支持开源 |
![]() | 11 dexterlei 2016-12-21 14:47:22 +08:00 先赞后看 |
![]() | 12 mortal 2016-12-21 14:53:33 +08:00 你问我呲磁不呲磁,我当然是呲磁的!我们年轻人还是要 Star 学习一个。 |
14 vugusurk 2016-12-21 14:57:31 +08:00 哇,才大三就 CTO 啦 |
![]() | 17 xiuc001 2016-12-21 15:49:39 +08:00 你们公司同意你开源? |
![]() | 18 derpc 2016-12-21 15:51:31 +08:00 via iPhone 先赞后看,楼主加油 |
19 MrWhite 2016-12-21 15:53:40 +08:00 不错的哦。 很详细~ |
20 zhushajun 2016-12-21 15:55:23 +08:00 ![]() 学习了,感谢分享哈 |
21 v2dead 2016-12-21 16:13:42 +08:00 赞一个,微信 API 之接的恶心好久,各种 XML ,稀奇古怪的接口请求,感觉糅合了十几号人的风格。 虽然愿景很好,但这样的项目其实不太敢用的,因为即使用这个项目,还要全面的去看你的代码和微信接口,一但微信方面接口升级,不知道你那边什么时候升级,难道不支付了? 有空去看你代码的,还不如自己封装一遍。。。 |
22 liqiazero 2016-12-21 16:16:12 +08:00 该 star 的还是得 star 啊。 这个东西都是 API 各种回调,核心自然在微信那边,核心支付的东西微信在出 API 的时候已经做了各种防范了。只要 API 用的好,基本上在支付上不会问题,就是回调错了,微信那边也会给你 pass 掉。基本上没有啥安全性问题,不过还是 star 啊! |
![]() | 23 tar 2016-12-21 16:19:21 +08:00 "劳资叫你们维护系统,你们居然给开源了" |
![]() | 24 fy 2016-12-21 16:32:13 +08:00 python2 ... |
![]() | 25 butterflydog 2016-12-21 17:21:03 +08:00 点赞 |
![]() | 26 pudgeee 2016-12-21 17:21:34 +08:00 这个是要赞一个。 |
27 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) 这边写反了哦… |
![]() | 28 deadofpeople 2016-12-21 18:11:09 +08:00 666 |
![]() | 29 Jolly23 OP @lonelinsky 感谢指正,粗心了 |
![]() | 30 irory 2016-12-21 18:40:57 +08:00 我记得发红包每个用户至少 1 元吧 ... 这个没判断算不算 BUG ? O(∩_∩)O 哈哈~ |
![]() | 31 njushannon 2016-12-21 19:02:27 +08:00 2333333 ,可以用来轻度套现 |
![]() | 32 wclebb 2016-12-21 19:07:04 +08:00 哇塞,请问有现成的网站或微信号可以参考一下吗? 虽然……用不到。 但估计以后会有用,所以希望能提供一下简单的参考或微信号。 |
34 em70 2016-12-21 19:23:33 +08:00 你是个伟人 |
![]() | 35 timlili 2016-12-21 19:36:59 +08:00 ![]() |
36 luefei 2016-12-21 20:01:51 +08:00 ![]() |
![]() | 37 zeayes 2016-12-21 20:07:25 +08:00 ![]() |
![]() | 38 jessynt 2016-12-21 20:16:50 +08:00 via iPhone 楼上这啥情况,要撕逼啊,瓜子小板凳已备好 |
![]() | 39 wellsc 2016-12-21 20:18:12 +08:00 谢谢 |
![]() | 40 jessynt 2016-12-21 20:26:12 +08:00 via iPhone |
![]() | 41 HLT 2016-12-21 20:34:24 +08:00 ![]() 这 TM 就很尴尬了 |
![]() | 42 sparkssssssss 2016-12-21 20:40:16 +08:00 马克,感谢分享 |
![]() | 43 GreatMartial 2016-12-21 20:47:55 +08:00 via Android 字词,感谢分享 |
![]() | 44 strong>AyoCross 2016-12-21 20:48:04 +08:00 ![]() 这。。。果然亮点都在评论 |
![]() | 45 8bit 2016-12-21 20:52:45 +08:00 分分钟扒掉底裤..... |
![]() | 46 1etterSong 2016-12-21 21:00:20 +08:00 后排了 |
![]() | 47 sivacohan PRO 你知道你为什么不能叫 wxpay 吗? 因为 wxpay 被我占了。哈哈哈。 |
![]() | 48 zhchbin 2016-12-21 21:09:55 +08:00 还有,这个退款操作的 API 不可以的吧。。确定能正常?文档里写着要求要用证书的。。 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_4 |
49 zwczou 2016-12-21 21:12:56 +08:00 ![]() 最开始 zakzou/flask-weixin-pay 有以下几个问题: 1. 下载账单返回的不是 xml ,而是 csv 格式的,所以此接口不能使用( download_bill) 2. 退款需要商户证书,目前还不支持,还在开发中(refund) 在 weixin-python 里面已经修复问题 1 ,问题 2 也在支持的路上 另外 zakzou/flask-weixin-pay 是支持非 flask 的框架的,你的这个版本反而仅仅支持 flask 框架了 |
![]() | 50 renyijiu 2016-12-21 21:13:48 +08:00 你的个人网站 502 了。。。。。 |
![]() | 51 yura93 2016-12-21 21:17:05 +08:00 我去,看到评论好方 |
52 fffflyfish 2016-12-21 21:28:07 +08:00 好尴尬,这个 star 比 zwczou 的都多 |
![]() | 53 dtfm 2016-12-21 21:45:04 +08:00 昨天也看见了锤子开源的 onestep ,每次在 Github 上看见中文的文档和 readme ,都觉得好接地气,莫名的亲切。 |
![]() | 54 gogobody 2016-12-21 21:46:33 +08:00 via Android 看见标题就赞了 |
![]() | 55 haozibi 2016-12-21 21:56:27 +08:00 via Android 要回复先看看上面的评论吧 |
56 dazzle 2016-12-21 22:02:35 +08:00 via Android 表示看见过 N 次,个人网站放上来,几小时后挂了 (ω) |
![]() | 57 leeyiw 2016-12-21 22:09:04 +08:00 开源也要遵守基本法吼 |
58 xfan001 2016-12-21 22:26:13 +08:00 搭车,自己写的微信公众号和微信支付 sdk , https://github.com/xfan001/weixin-sdk ,实际使用过, 与框架无关,代码很简单,看看就懂了 |
![]() | 59 shijingshijing 2016-12-21 22:28:53 +08:00 这个要赞一下~ 呵呵。 Mark 一记 |
60 vugusurk 2016-12-21 22:38:59 +08:00 via iPhone 呵呵,楼主能解释下 35-37 楼的质疑,和 40 楼的抄袭问题吗 呵呵,楼主能解释下 35-37 楼的质疑,和 40 楼的抄袭问题吗 呵呵,楼主能解释下 35-37 楼的质疑,和 40 楼的抄袭问题吗 |
![]() | 61 wwlweihai 2016-12-21 22:42:31 +08:00 关于支付,目前采用 ping++的方案是个不错的选择,而且有商业的团队来保障质量。这个项目开源,是个学习的好东西。 |
![]() | 62 n37r06u3 2016-12-21 22:44:13 +08:00 502 Bad Gateway nginx/1.10.0 (Ubuntu) 分分钟。。。 |
63 mingyun 2016-12-21 22:45:57 +08:00 star 了,另 https://jolly23.com/ 502 了 |
![]() | 64 v4an 2016-12-21 23:47:51 +08:00 |
![]() | 66 onefouroo 2016-12-22 07:18:21 +08:00 via iPhone 马克一下 可能以后用的着 |
67 phpdever 2016-12-22 08:22:56 +08:00 楼主,我喜欢你 |
68 sambawy 2016-12-22 09:08:55 +08:00 先赞一个再慢慢看 |
69 quericy 2016-12-22 09:13:33 +08:00 这特么就很尴尬了 |
![]() | 70 xylitolLin 2016-12-22 09:28:09 +08:00 我只是来看戏的 |
![]() | 71 ahonn 2016-12-22 09:38:03 +08:00 所以... 我 star 了 https://github.com/zwczou/weixin-python |
![]() | 72 lincolnhuang 2016-12-22 09:39:54 +08:00 比较了下代码, 20 岁 CTO ,抱歉的通知您,赞我要收回了。。 |
![]() | 73 gimp 2016-12-22 09:55:04 +08:00 这好尴尬... |
![]() | 74 hhstore 2016-12-22 10:04:41 +08:00 ![]() 题主做人态度不端正啊. 我仔细对比了 2 个项目的代码, 合着你是原版照啊!? 你倒是改个函数名, 意思一下啊!? ============================== 1. 照着别人的项目, 完整照抄, 还出来骗赞, 这个动机就很可耻. 2. v 友给出`被抄袭人`的项目, 打脸了, 扭扭捏捏, 贴了原作者另外一个项目, 企图蒙混过关. 你抄的哪个, 你觉得大家瞎吗? 这个做法简直是不要脸了. 3. 抄代码的时候, 你看懂别人的代码了吗? 原作者肯定是 Python 老司机, 代码追求 1 行流, 恐怕你看不懂, 不知道怎么改吧? 这就尴尬了. 4. 你删了 原作者 部分代码, 你知道 `你删除那部分的代码` 用意是什么吗? 5. 学习, 借鉴, 分享, 都不可耻. 前提是首先尊重他人成果. 借鉴他人的成果, 要注明. 6. 点进你的个人简介, 看是 20 岁的学生, Python 代码 1 行流, 写的这么溜. 显然 Python 基础不错啊, 这是个好苗子, 可惜被打脸了哇. 你这种不端正的学习态度, 如果不纠正, 会误你一生的. 7. 这位同学, 念你还没毕业, 好好反思一下吧. 以后进了社会, 没人给你犯错的机会. 你每一次试错, 都要付出巨大的代价. ============================== 路过同学, 可以仔细对比一下 原作者的代码, 和 这位 抄袭者的. 高下立判. 原作者: https://github.com/zwczou/weixin-python/blob/master/weixin/pay.py 该抄袭同学: https://github.com/Jolly23/wx_pay_python/blob/master/wx_pay.py 企图蒙混的示例: https://github.com/zakzou/flask-weixin-pay/blob/master/example.py |
![]() | 75 frozenshadow 2016-12-22 10:04:53 +08:00 刚要赞,好尴尬。。 |
![]() | 76 kghch 2016-12-22 10:12:48 +08:00 注释都要照抄,这好尴尬,我赶紧 unstar 了... |
![]() | 77 Jolly23 OP 微信支付功能集,前期开发借鉴 https://github.com/zakzou/flask-weixin-pay ,抱歉不是在 fork 上改动是因为几个月前就开始带到项目中使用,改进包括让其脱离 flask 框架限制,并且加入微信支付最新的两个营销功能,然后从我的工程代码提出来这个底层类发布。向前辈致谢 |
![]() | 78 sevncz 2016-12-22 10:15:41 +08:00 收回我的 star |
![]() | 79 hhstore 2016-12-22 10:16:37 +08:00 @zwczou 这个是原作者吗? 2333. 小吐槽下: 代码风格, 过于追求 Python 代码 1 行流, 不利于团队带新手. 另外, 代码还是写的挺优雅.老司机开车, 稳! ======================== 围观群众应该去 star 原作者哇. |
![]() | 80 Jolly23 OP @hhstore 感谢指正,但贴那个地址并不是企图蒙混过关,是真的开始就看的那个代码啊,上面有我的 contribure |
![]() | 82 wpby 2016-12-22 10:23:26 +08:00 这就很尴尬了 大兄弟 |
83 vugusurk 2016-12-22 10:24:30 +08:00 开撕开撕 |
![]() | 84 bonfy 2016-12-22 10:44:10 +08:00 这里我也来列下人物清单 主要当事人: - 楼主 [zwczou]( https://github.com/zwczou) - 20 岁 CTO [Jolly23]( https://github.com/jolly23) 目前情况 20 岁 CTO Star > 楼主 另外几个隐藏人物(有可能是楼主马甲,猜测,如果不是而且后续乱入的话故事会有新剧情。。。。) - 原始版 flask-weixin-pay [zakzou]( https://github.com/zakzou) - 原始版 flask-weixin-pay 主要代码贡献 [zaczwc]( https://github.com/zaczwc) 我只想说如果这些都是楼主马甲,请老司机你以后上路别挂这么多马甲啊,我找得都累。。。 |
![]() | 85 Jolly23 OP 首先说一句抱歉 1. 解释下为什么贴的是另一个项目地址,并不是像 @hhstore 说的企图蒙混过关,开始开发是在几个月前,当时是从知乎上跳到 zakzou 那个 flask 微信支付项目中,当时直至昨天都不知道 zwczou 的代码和 zakzou 的代码一样,刚开始写是参照 zakzou 的,并且也提过 contribute ,现在发现他的和 zwczou 的代码一样, https://github.com/zakzou/flask-weixin-pay 2. 刚发布那个帖子也没想到会有这么多的关注,虽然在 zakzou 代码上有改进,把 zakzou 的工程脱离了 flask 框架限制并加了几个新的营销功能,但大部分还是大部分使用了原来开源的代码,现在发现可能他的代码也是从 zwczou 那 copy 的,所以我现在也是间接 copy 了 zwczou 的代码,真的抱歉。 3. 公司是我在大学时期创建的,法人不是我,聘请一些在读研究生做员工。 4. 对我个人行为感到遗憾和后悔,发布没有好好考虑到原代码提供者版权问题,对不起。希望大家能原谅,给我改过的机会。以后发布代码更加遵守版权问题。对不起。已在 github 补充了说明情况。 5. 向前辈致敬,同时也对前辈说一声对不起,对大家说声对不起。今后增强自己对于版权保护的认识,更加充分尊重原作者,抱歉。 |
![]() | 87 soli 2016-12-22 10:49:17 +08:00 |
![]() | 89 fxxkgw 2016-12-22 12:39:24 +08:00 坦白说这代码写的真好 看着舒服 比我强多了 我仔细看了好几遍。。 心里暗暗佩服 LZ 。。。不过看了回帖就不知道怎么说了 总之感谢分享 |
![]() | 90 ybh37 2016-12-22 13:18:53 +08:00 V2 正能量啊 |
91 ahkxhyl 2016-12-22 19:32:51 +08:00 python 功能这么强 刚刚入门 才看几天的手册 得坚持下去~ 感谢分享~~ |
92 billowqiu 2016-12-23 09:21:53 +08:00 20 岁 CTO ,服啊 |