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
gevin
V2EX  ›  Python

求助个网站上支付功能实现的思路

  •  
  •   gevin ·
    flyhigher139 · 2015-05-08 09:38:03 +08:00 · 2986 次点击
    这是一个创建于 3278 天前的主题,其中的信息可能已经有所发展或是发生改变。

    近期要帮别人做一个网站,基于django开发,网站需要简单的支付功能,如注册用户付费成为会员等。

    我从来没有做过支付相关的功能,与钱相关的功能还要慎重考虑安全性问题,所以这里想和各位老师请教一下,如何实现比较高效

    ps:
    我现在主要考虑下面三点如何实现

    1. 如何付费?利用支付宝,利用微信支付,还是有其他更好的方式(如ping++)?
    2. 使用这些付费手段前,要具备什么样的使用条件?(如需要申请什么东西,提供哪些资质等)
    3. 付费后(成功或失败)如何实现callback比较靠谱?
    4. 以后会开发微信服务号,在微信服务号上提供支付功能最后能一并考虑进去

    请各位老师指点,不胜感激

    13 条回复    2015-05-09 14:20:55 +08:00
    armoni
        1
    armoni  
       2015-05-08 10:08:19 +08:00   ❤️ 1
    去他们网站上看看吧,有sdk文档,百度下就知道的东西
    huxiweng
        2
    huxiweng  
       2015-05-08 10:16:55 +08:00 via iPhone   ❤️ 1
    想太多了。ping++就够了。
    cevincheung
        3
    cevincheung  
       2015-05-08 10:33:54 +08:00   ❤️ 1
    @huxiweng ping++还是需要自己去申请各大支付平台的key和密钥什么的,个人身份只能用银联方式支付。
    shierji
        4
    shierji  
       2015-05-08 10:58:03 +08:00 via Android
    我想问下如何保证安全呢。纯新手 哪儿能找到文档么 同样想基于Python

    @armoni
    @huxiweng
    @cevincheung
    hging
        5
    hging  
       2015-05-08 11:00:24 +08:00
    1. 我现在用的ping++ 之前用过支付宝
    2. 申请如果是公司可能要执照什么的 具体可以丢给ping++帮你搞定.(简直太方便了)
    3. 付费后, 比如ping++或者支付宝会给你callback 感觉接受到callback后 再通过callback的内容去相应的支付放去验证下状态, 这样比较安全.
    4. 那建议用ping++ 增加支付方式不要太方便....
    101
        6
    101  
       2015-05-08 11:06:41 +08:00
    https://github.com/fengli/alipay_python
    很久没更新了,了解一下思路吧
    gevin
        7
    gevin  
    OP
       2015-05-08 11:38:54 +08:00
    @armoni 去什么网站看?
    gevin
        8
    gevin  
    OP
       2015-05-08 11:39:16 +08:00
    @101 多谢~
    gevin
        9
    gevin  
    OP
       2015-05-08 11:43:04 +08:00
    @hging 我也看中ping++,现在的困境是我从来没接触够支付功能的逻辑,所以比较慎重,关于支付功能的实现,能多介绍一下么?
    hging
        10
    hging  
       2015-05-08 12:18:07 +08:00
    @gevin 基本上在ping++的网站上 可以找到文档 然后基本上把代码都帮你写完了. 只用改改就好了(仅限支付以及回调,验证回调正确性还要自己写,不过不难)
    gevin
        11
    gevin  
    OP
       2015-05-08 13:31:20 +08:00
    @hging 多谢~
    tidewind
        12
    tidewind  
       2015-05-09 01:51:46 +08:00   ❤️ 1
    支付功能最简单的逻辑(抛开ping++不提)

    1:用户在你的系统里做某个操作得到一个订单(订单编号按照自定义规则生成,需要唯一标识)

    2:参看第三方支付的 sdk,每家标准不同,当用户创建完订单开始支付时,服务端内部(django)需要用sdk向第三方支付平台发起支付申请(可以把刚才创建的的订单编号传过去,还包括一堆 有的没的参数,包括支付结果的回调地址,根据sdk需要来)

    3:带着参数redirect到第三方支付页面(也有别的情况,例如微信支付就是拿着prepayid之类的丢给浏览器js继续处理),总之这一步就开始让用户进行支付的操作了

    4:支付完成,两种支付通知方式:
    1:第三方支付发起同步跳转请求到你的web服务上,带着参数将支付结果告诉你的某个接口,你进行解密后拿到支付是否成功的信息,对你的数据进行操作。
    2:异步通知,第三方支付会在它后台向你的异步通知请求接口发起支付结果请求,如果因为网络问题,一次没访问到,会多访问几次,如果n次之后还没有访问到,不再请求,你需要手工查询进行处理。

    支付结果通知建议同步和异步两种都做,当然每一个方式都需要先检查一遍订单是否已经做过已付款的操作。

    这就是最简单的逻辑了。
    gevin
        13
    gevin  
    OP
       2015-05-09 14:20:55 +08:00
    @tidewind 多谢~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1187 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:12 · PVG 02:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.