推荐学习书目
› 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
aiqier
V2EX  ›  Python

python 做的支付模块,如何保证“可靠”

  •  
  •   aiqier · Oct 22, 2015 · 7215 views
    This topic created in 4032 days ago, the information mentioned may be changed or developed.

    大家应该都知道, python 本身不适合用来开发支付相关的模块。
    相比之下,静态语言 java ,要适合的多,但是我们现在的系统,支付相关的模块,就是由 python 来做的,
    那么就目前而言,我要如何在用 python 的同时,保证这个项目“可靠”
    首先我认为:动态语言没有静态类型检查,所以在项目做大的时候,项目的维护成本会变的越来越高。支付系统的安全性很重要,而动态语言过于灵活,不易保证,他可能在做业务系统上会快很多。
    我想请教一下:
    1.除了我说的,用 python 做一个支付相关的系统,会有的那些风险,还会有哪些风险。
    2.我如何在使用 python 的前提下,竟可能的保证项目”可靠”。
    这个项目包括付款渠道,收款渠道。钱包,收银台等。逻辑不是很复杂,大概 2w 多行的代码。

    30 replies  •  2015-10-23 16:12:05 +08:00
    leavic
    leavic
    Oct 22, 2015
    1
    类型我倒不觉得有问题,其实 python 是强类型语言,关键是 python 并没有办法真正的隐藏接口,现在都是靠着 PEP 规范修改接口名字来做的,别人要不遵守这个规则,想访问一样可以访问。
    test0x01
    test0x01
    Oct 22, 2015 via Android
    2
    任何语言项目的维护都是要靠程序员自己。 靠语言根本不靠谱,你说 java 厉害吧,程序员要是不靠谱能把你搞死。
    surfire91
    surfire91
    Oct 22, 2015
    3
    "大家应该都知道, python 本身不适合用来开发支付相关的模块。"
    我就不知道 python 不适合用来开发支付相关的模块,也不知道为什么不适合。
    楼主你知道吗?
    imn1
    imn1
    Oct 22, 2015
    4
    大家是谁?
    binux
    binux
    Oct 22, 2015❤️1
    5
    我怎么不知道 python 不适合开发支付相关的模块?
    没有类型检查, 最多给你的余额改成 [100, 3], 或者执行到一半抛出异常. 说得好像静态类型检查自带 UPS 不会瞬间断电重启一样.
    该算错帐的, 难道静态类型检查了就不算错了?
    PythonAnswer
    PythonAnswer
    Oct 22, 2015
    6
    支付模块需要什么样的功能?性能?

    你还没分析,就说大家认为 xx 不适合做 xx...
    stackpop
    stackpop
    Oct 22, 2015
    7
    和语言没有关系。
    之前在猪厂用 python 做过支付模块,接入了银联 /支付宝 /stripe 等第三方渠道做支付, 服务千万级的游戏用户,没有出现过账务错误。
    wkdhf233
    wkdhf233
    Oct 22, 2015
    8
    动态语言过于灵活无法保证安全性,这逻辑也是醉了
    kaneg
    kaneg
    Oct 22, 2015
    9
    这不就和打错字怪键盘一样的逻辑吗
    domty
    domty
    Oct 22, 2015
    10
    安全性跟你用啥语言没关系吧。
    首先保证你的业务流程没有空子让别人钻。
    技术角度的安全交给专业的安全人员去考虑,比如框架上的,协议上的,系统上的。
    再不济还可以抛异常强制回滚整个业务呢。
    RitianZhao1988
    RitianZhao1988
    Oct 22, 2015
    11
    槽点太多,喷不过来
    janxin
    janxin
    Oct 22, 2015
    12
    如果你得想类型检查,可以考虑上支持 Type Hints 的 Pycharm ?
    imlonghao
    imlonghao
    Oct 22, 2015
    13
    我不是大家中的一员,我觉得只有写不好的代码没有很糟糕不好的语言
    ipconfiger
    ipconfiger
    Oct 22, 2015
    14
    楼举神逻辑,第一句大家都知道不知道楼举是怎么知道的。

    一种我代表全国人民的既视感
    111111111111
    111111111111
    Oct 22, 2015
    15
    "大家应该都知道, python 本身不适合用来开发支付相关的模块。"

    我怎么不知道?听谁说的
    aiqier
    aiqier
    OP
    Oct 22, 2015
    16
    其实我觉得,如果要是不能客观分析我问的问题,就不要回答的,天天喷累不累,天天说这个是人的问题,那个是人的问题,买不起房是人的问题。我只是说动态语言,太活了,如何在一定程度上能“框住”设计懂么?做一个项目的经费就那么多,哪里招的起那么多 python 大神?那时候还不是靠 java 的静态类型检查过滤到一些错误再说,有一天你走了,别人接手这个项目,是 java 容易维护还是 python 容易维护?有些东西就是不能用 python 做的 ok ?那么既然是人的问题,那么为啥不用 lisp 写, lisp 多牛逼!写不出来也是人的问题是吧?
    https://www.quora.com/Why-does-Google-prefer-the-Java-stack-for-its-products-instead-of-Python/answer/Robert-Love-1?srid=pu2I&share=1
    aiqier
    aiqier
    OP
    Oct 22, 2015
    18
    @domty 在知乎上看过类似的讨论,单纯说语言不是问题,是人的问题,完全没意义,类似说“找不到工作是人的问题”。我 python 还算不错,但是仔细去看 java 的写的一些东西,安全系数要高很多。 http://www.zhihu.com/question/21017354 ,我觉得一部分答案还是有道理的。
    @leavic
    @test0x01
    @binux
    @stackpop
    binux
    binux
    Oct 22, 2015❤️1
    19
    @aiqier 蛤?! 如果要是不能客观提出你的问题, 就不要提问.
    geeklian
    geeklian
    Oct 23, 2015
    20
    醉了,醉了,一个主观问题何必要客观的回答?
    业务流程没漏洞就 ok 了,真要是程序语言有什么安全漏洞,那就认栽吧,好像有也是 java 多。
    另外: python 现在也可以支持静态类型检查,有个库叫 typing.py
    SYP
    SYP
    Oct 23, 2015
    21
    @geeklian 这种抽象层次很高的语言安全漏洞是会比低级语言多的,这种意义上来说确实不适合。
    xiazi
    xiazi
    Oct 23, 2015❤️1
    22
    看了 Why-does-Google-prefer-the-Java-stack-for-its-products-instead-of-Python:
    里面提到的 python 缺点实际只有两点 Concurrency 和 Performance(完全没有提动态类型这些), 而两点实际就是性能问题, 而性能问题就是因为 GIL, 而现实中需要大量占用 cpu 的应用并不多(支付模块中应该不会存在这类问题).
    XianZaiZhuCe
    XianZaiZhuCe
    Oct 23, 2015
    23
    喷子真多
    est
    est
    Oct 23, 2015
    24
    LZ 挖坑机器人。大家不要理会。人的固有偏见为啥大家要白费力气去纠正呢。偏激就要放纵他偏激一辈子。
    mengzhuo
    mengzhuo
    Oct 23, 2015
    25
    ╮(╯▽╰)╭

    无稽之谈
    我司 IAP 模块就是 Python 写的,还是 mongodb 做的存储
    收入、对账、从来没有错过~~
    youxiaer
    youxiaer
    Oct 23, 2015❤️1
    26
    @aiqier 支付公司用 java 的确实比较多,但是动态语言做支付也是可以的,首先得看业务复杂度,其次就是开发人员对所使用的语言的掌握程度,即使使用 java ,如果出现逻辑错误也是很危险的。 php 就是动态语言,用 php 做支付的也不少。
    domty
    domty
    Oct 23, 2015❤️1
    27
    @aiqier
    你说的这些东西实际上涉及的是技术选型和技术架构,譬如开发人员的成本,开发后产品的负载能力,代码的维护成本。你说 python 是动态类型,维护成本高,在高访问量下响应慢,我觉得的都有道理,但是这和你用它开发产品的安全性低没啥必然联系。
    作为一个程序员的角度,我只能尽可能的保证我开发的业务流程尽可能没有漏洞就够了,该效验的地方效验,该加密的地方加密,让恶意的请求被过滤掉就够了。这些业务代码,即使换门开发语言我也能轻松写出来。
    aiqier
    aiqier
    OP
    Oct 23, 2015
    28
    @geeklian 能够天生的支持静态类型检查,和用库去实现类型检查是两码事,类似说“ c 也能写出面相对象的代码”,那和 java 直接支持一样么?
    shenqiu2015
    shenqiu2015
    Oct 23, 2015
    29
    java 那套严苛的规则是用来约束猪队友的,只有猪队友,才离了规则就不会走路吃饭
    shenqiu2015
    shenqiu2015
    Oct 23, 2015
    30
    java 的静态类型检查有利于 IDE 智能感知,有利于加快编译运行速度。但是跟业务逻辑没有关系,没有了静态类型检查就不会写业务逻辑?这个说法不成立。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1452 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 18:10 · PVG 02:10 · LAX 10:10 · JFK 13:10
    ♥ Do have faith in what you're doing.