V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zwczou
V2EX  ›  Python

关于 (开源我公司微信支付 python 版本的全部代码...) 项目的一些 bug

  zwczou · 2016-12-21 22:50:58 +08:00 · 10248 次点击
这是一个创建于 2927 天前的主题,其中的信息可能已经有所发展或是发生改变。

看到 V2EX 上面有关于微信支付的开源项目 开源我公司微信支付 python 版本的全部代码..., 细看源码后发现此项目 fork 我的老项目 zakzou/flask-weixin-pay ,所以继承了一些老问题

  1. jsapi 里面的 timestamp 为整型,在 ios 系统里面调起 api 有问题
  2. download_bill 里面的 bill_type 的必填,另外返回内容存在是文本而非 xml ,所以不能转换为 dict
  3. refund 需要证书

以上问题都已经在 zwczou/weixin-python 里面修复

另外 Jolly23/wx_pay_python 又新产生的问题

  1. unified_order 里面的 user_ip 应为 spbill_create_ip ,导致误判 flask ,另外 nonce_str 传入有误

另外推荐下我的项目 weixin-python,包括微信支付,微信公众号,微信登陆,微信消息处理等

已经在实际项目中使用过微信网页登陆,微信支付,微信公众平台大部分

主要分为几个模块:

  1. 微信登陆
  2. 微信支付
  3. 微信消息 ( 改自lepture/flask-weixin )
  4. 微信公众平台

以上几个模块都可以单独使用,也可以跟 flask 组合一起使用

42 条回复    2016-12-23 11:12:51 +08:00
woshicai
    1
woshicai  
   2016-12-21 22:59:32 +08:00
前排
> (其实我是来看评论的)
xiuc001
    2
xiuc001  
   2016-12-21 23:03:15 +08:00 via iPhone
围观楼主吊打前文 CTO
messense
    3
messense  
   2016-12-21 23:08:44 +08:00
想要更多功能的可以看看 https://github.com/jxtech/wechatpy
n37r06u3
    4
n37r06u3  
   2016-12-21 23:08:52 +08:00
围观楼主吊打前文 CTO +1
timlili
    5
timlili  
   2016-12-21 23:14:59 +08:00 via iPhone
Cool.
AlexaZhou
    6
AlexaZhou  
   2016-12-21 23:16:57 +08:00
坐等 CTO 出来澄清
xiongbiao
    7
xiongbiao  
   2016-12-21 23:25:40 +08:00
前排看戏
Trim21
    8
Trim21  
   2016-12-21 23:32:10 +08:00
原帖的 cto 已经 append 了...
danmary61
    9
danmary61  
   2016-12-21 23:37:09 +08:00
说你呢,对,别左顾右盼了,就是那个 20 岁的 CTO ,你向前一~步走!
xiahei
    10
xiahei  
   2016-12-21 23:54:56 +08:00
实际上 CTO 的博客也是直接抄的,然后归至自己的名下.
虽然已经 502 了.
shellcodecow
    11
shellcodecow  
   2016-12-21 23:56:45 +08:00
刚我还在回帖说 zwczou 看到会尴尬...LOL
i147
    12
i147  
   2016-12-21 23:56:58 +08:00
so cool
zonzin
    13
zonzin  
   2016-12-22 08:40:38 +08:00
大师你好,请问这个可以把消息分享到朋友圈不?
qinxi
    14
qinxi  
   2016-12-22 09:02:49 +08:00 via Android
2333
wensonsmith
    15
wensonsmith  
   2016-12-22 09:03:02 +08:00
只好 @ Jolly23

: doge
qq496844026
    16
qq496844026  
   2016-12-22 09:16:35 +08:00
做得好
lincolnhuang
    17
lincolnhuang  
   2016-12-22 09:38:57 +08:00
赞起来,围观 20 岁 CTO
WPalle
    18
WPalle  
   2016-12-22 09:39:13 +08:00
233
niboy
    19
niboy  
   2016-12-22 09:51:55 +08:00
围观。。。
lrh3321
    20
lrh3321  
   2016-12-22 10:05:41 +08:00
围观楼主吊打前文 CTO +1
huijian222
    21
huijian222  
   2016-12-22 10:09:36 +08:00
围观
gogobody
    22
gogobody  
   2016-12-22 10:16:08 +08:00 via Android
支持原作者
VicYu
    23
VicYu  
   2016-12-22 10:19:38 +08:00
@zwczou

小建议,把 wiki 上的快速开始放到 Readme?
scys
    24
scys  
   2016-12-22 10:20:48 +08:00
围观
bigzhu
    25
bigzhu  
   2016-12-22 10:29:43 +08:00
star 了,估计很快就会用到。

今年初还为了个项目,自已很痛苦的写了个 python 的微信支付。(再也不想去看微信的 API 文档了)

我这个 33 岁做过好几次 CTO 的老司机,只能和这 20 岁 CTO 说:这种虚名没什么意思,做 CTO 也不是什么牛 X 的事。真没必要靠抄袭来爽,有这功夫好好学习,多写代码。另外请和原作者道歉。
Jolly23
    26
Jolly23  
   2016-12-22 10:31:48 +08:00
首先说一句抱歉,
1. 不知道 zakzou 和你是不是一个人,刚开始写是参照 zakzou 的,并且也提过 contribute ,现在发现他的和你的代码一样。 https://github.com/zakzou/flask-weixin-pay
2. 刚发布那个帖子也没想到会有那么多的关注,虽然在 zakzou 代码上有改进,但大部分还是大部分使用了原来开源的代码,现在发现可能他的代码也是从您那 copy 的,所以我现在也是间接 copy 了您的代码,真的抱歉。
3. 对我个人行为感到遗憾和后悔,发布没有好好考虑要提到原代码提供者版权问题,对不起。希望您能原谅,给我改过的机会。以后发布代码更加遵守版权问题。抱歉,致敬
qwer1234asdf
    27
qwer1234asdf  
   2016-12-22 10:36:14 +08:00
这就尴尬了。。
bonfy
    28
bonfy  
   2016-12-22 10:43:20 +08:00   ❤️ 1
很尴尬 我来列下人物清单

主要当事人:

- 楼主 [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)

我只想说如果这些都是楼主马甲,请老司机你以后上路别挂这么多马甲啊,我找得都累。。。
Charkey
    29
Charkey  
   2016-12-22 10:46:05 +08:00
好像有点乱的样子
noobsheldon
    30
noobsheldon  
   2016-12-22 10:48:36 +08:00
@qinxi 你这图像是谁啊?
mimzy
    31
mimzy  
   2016-12-22 10:55:39 +08:00
@noobsheldon 南小鸟
Jolly23
    32
Jolly23  
   2016-12-22 10:56:11 +08:00
首先说一句抱歉
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. 向前辈致敬,同时也对前辈说一声对不起,对大家说声对不起。今后增强自己对于版权保护的认识,更加充分尊重原作者,抱歉。
noobsheldon
    33
noobsheldon  
   2016-12-22 11:11:26 +08:00
@mimzy 多谢
zwczou
    34
zwczou  
OP
   2016-12-22 11:16:01 +08:00   ❤️ 1
@Jolly23
@bonfy

关于马甲的事情:
所有马甲都带有 ZOU 或者 ZWC ,因为 ZWC 是本人的姓名拼音, ZOU 是姓拼音,而平时开发在公司有两台,家里面有台笔记本, gitconfig 有些出入导致马甲泛滥,给大家带来不便,不好意思!

关于新开项目的事情:
最开始有 zakzou/flask-weixin-pay ,因为我做的是微信里面的支付(pay.py), JSAPI 需要有 openid ,而 openid 依赖于微信网页授权(login.py),另外又经常用到 access token 做一些事情,所以导致想另起炉灶,做一个比较全的微信 SDK ,才有了 zwczou/weixin-python


@Jolly23 接受你的道歉,事情就到这里吧!

另:希望大家多多关注项目本身,多提交 issue 跟 pull requests !
hhstore
    35
hhstore  
   2016-12-22 11:24:04 +08:00   ❤️ 1
@Jolly23 你 @我了, 那位说一下.

1. 你参考的那个项目, 头文件里, 已经给出原作者(也就是本贴楼主) 的 gmail. 你聪明的话, 第一时间 google, 就能找到作者的 github, 以及 原始项目.

2. 你对 参考的的项目的一处 contribute, 是什么呢.
把原接口 json 返回值, 改成 flask 里的 jsonify() 实现. (画蛇添足哇)
那么同学, 你有没有去看一下 flask 源码里 jsonify() 是如何实现的呢? 哈哈.
为什么别人直接用 json() 返回? 你真以为别人不知道 jsonify()吗?
可能原因: 不想跟 flask 框架绑死. 本来一个 lib, 最佳状况, 就是越少依赖越好.
你这处改动, 出发点是好的. jsonify() 实现, 多做了些事情.
但是, 数据的格式化, 处理, 原本就不是 lib 该考虑的, 应该由上层使用者, 再去包装数据.

3. 我自己实现的 微信支付 SDK, 就不需要 flask.
抽时间整理下代码, 会放出来, 另外还有 支付宝支付等 SDK, 欢迎 star.

=================================

我本意也不是想撕你一个学生, 只不过想提醒下, 学习态度要端正.
不要太浮躁, 看别人的代码, 要仔细, 多琢磨一下为什么.
看不懂别人写的代码是干嘛用的, 就随便删? 你可以提个 issue, 说不定作者心情好就告诉你一下.

学习的心态不好, 浅尝辄止, 浮光掠影的. 不会有多大成就.

每个人都是从菜鸟一步步成长起来的, github 有很多好代码.
谦虚点, 多读读, 多琢磨琢磨.

不要只是把活干完, 就完了.
干好, 干的更好, 才有出息.
hhstore
    36
hhstore  
   2016-12-22 11:31:55 +08:00
纠正:
第 2 条, 有偏差. (部分评论基于 lib 前提, 请无视)
没细看, 原来是 example.py 代码. 改成 jsonify() 是可以的.
如果是 lib 的 API 的返回值, 常规做法是返回正常的 Python 数据类型, 而不是 json, 更不需要引入 jsonify()
Jolly23
    37
Jolly23  
   2016-12-22 11:45:00 +08:00   ❤️ 1
@hhstore 学习态度要端正.
不要太浮躁, 看别人的代码, 要仔细, 多琢磨一下为什么.
看不懂别人写的代码是干嘛用的, 就随便删? 你可以提个 issue, 说不定作者心情好就告诉你一下.

学习的心态不好, 浅尝辄止, 浮光掠影的. 不会有多大成就.

每个人都是从菜鸟一步步成长起来的, github 有很多好代码.
谦虚点, 多读读, 多琢磨琢磨.

不要只是把活干完, 就完了.
干好, 干的更好, 才有出息.

谢谢,通过这件事儿,我会重新思考自己的问题,把态度以及思想都摆正,谢谢您了。也谢谢您的忠告,永记于心
wwlweihai
    38
wwlweihai  
   2016-12-22 12:03:06 +08:00
本身微信支付就不是个很困难的问题,接口以及提供了,文档也有,按照要求接入,老司机最多两天就出来了,开不开源,问题都没什么问题,何况现在还用两家支付路由公司,做多种支付的聚合,所以这个事情就更简单了。最主要是和业务关联就好。


哎,年轻人呀。总是希望搞个大新闻。
cythb
    39
cythb  
   2016-12-22 13:14:34 +08:00
老司机,马甲是多啊。 github 已 star ,学习学习。
fityme
    40
fityme  
   2016-12-22 14:32:57 +08:00
在用楼主那个 weixin-python 库,想说一句:老司机能在 install_requires 里把 flask 的依赖加上么。。。
yaxin
    41
yaxin  
   2016-12-23 09:33:39 +08:00
@xiuc001 怎么看出来前文的是 CTO ??
xiuc001
    42
xiuc001  
   2016-12-23 11:12:51 +08:00 via iPhone
@yaxin 前文楼主自己说的
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1117 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 35ms · UTC 18:50 · PVG 02:50 · LAX 10:50 · JFK 13:50
Developed with CodeLauncher
♥ Do have faith in what you're doing.