人生中第一次准备开发网站的支付系统,有什么安全事项需要注意的?

2017-05-18 11:07:47 +08:00
 Reign

做外贸站,有流量靠山,所以成交量预计应该还是不错,而且从用户反馈情况来看,应该很有前景,现在准备薅欧美资本主义羊毛,开始出售虚拟服务,准备实施的方案为:用户按月付费订阅我们的服务。目前就准备着手开发网站的支付系统了,但有几点需要疑问:

  1. 国外开发是不是一个 PayPal 打天下就行,如果不行,那这么多支付系统选哪个好?有没有统一集成的接口简单方案?
  2. 涉及到金钱,最关键的就是安全问题,用户注册我的网站,我准备的是将 uid 用 php 的可逆式加密生成 cookie 来检测客户端,但是这样的话,另一个用户拷贝走这个 cookie 不就盗用账户了么?怎么防止这种行为?
  3. 用户 cookie 一般的过期时间设置多少合适
  4. 存储到 MySQL 中的金钱信息是否需要可逆式加密?
  5. 是否一定需要 https ?
  6. 如果最坏的情况,最终这个项目失败,怎样退款给那些付费但还未到期的用户?

另外还有哪些需要注意的求好心 V 友提示一下避免踩坑,第一次开发支付系统难免有点摸不着头脑,求好心 V 友解答一下,谢谢

8493 次点击
所在节点    程序员
58 条回复
lingo
2017-05-18 14:48:57 +08:00
我很好奇是个什么样的流量靠山。。。不便细说也可以大概举个栗子?
littleylv
2017-05-18 14:52:30 +08:00
@isno #18 “价格信息在数据结构建议用 int, 单位最小分” 这个方法不错,学习了
sp1sp1
2017-05-18 14:53:28 +08:00
我很好奇是个什么样的流量靠山。。。不便细说也可以大概举个栗子?
pango
2017-05-18 15:00:30 +08:00
我做过,用的是这个: https://github.com/spookylukey/django-paypal, 已经帮你搞定了一切,文档在这里: https://django-paypal.readthedocs.io/en/stable/
bozong
2017-05-18 15:34:33 +08:00
@paw #12 为什么不能用浮点数
bozong
2017-05-18 15:34:54 +08:00
@johnlui #6 为什么要用分
bozong
2017-05-18 15:44:24 +08:00
我们用的 decimal(18,4)
Reign
2017-05-18 15:51:09 +08:00
@imnpc stripe 比 PayPal 哪点好了,我的是订阅付费
subpo
2017-05-18 15:52:59 +08:00
不要用 float 不要用 float 不要用 float
maomaomao001
2017-05-18 15:55:50 +08:00
@slime7 一般用什么表示钱呢? 我的也是浮点数
bozong
2017-05-18 15:55:59 +08:00
@subpo #29 用的 decimal
slime7
2017-05-18 16:24:15 +08:00
@maomaomao001 楼上都提了,用分作单位,显示的时候转换元,微信也是分单位;用 decimal。
imnpc
2017-05-18 16:41:10 +08:00
@Reign paypal 一人争议 账户就被限制...
chiukong
2017-05-18 16:48:57 +08:00
1.paypal 可以,但如果是虚拟服务,小心被反蹭羊毛
2.cookie 丢失都会造成用户信息泄露,但是关键业务,如购买之类的,除了 cookie 还要做二次身份确认,如支付密码,手机短信验证码等
3.这个问题。。不知道如何回答。反正用户有操作就会对 cookie 续费
4.用户关键信息需要做对称加密,密码等做不可逆存储
5.需要
6.PayPal 支持退款。。。
chiukong
2017-05-18 16:50:29 +08:00
对楼主的流量靠山比较感兴趣,我也做了几年支付系统了,有其他问题可以加微信聊聊,可以提供一些其他建议。俺也顺便了解下俺感兴趣的话题。哈哈。微信:chiukong_lee
Reign
2017-05-18 16:52:13 +08:00
@chiukong 何谓反蹭羊毛?
qceytzn
2017-05-18 17:02:51 +08:00
@imnpc 也是分情况的,我用下来的感受是现在 paypal 并不是一有争议就立刻限制整个账户

@Reign stripe 应该是手续费更低一点,功能更强一点,以及对程序员更友好一点,不过大陆用户需要在美国或者其他 stripe 支持的国家设立公司或者有该国税号才可以用,并且需要一个该国的银行账户,银行账户好解决,主要是税号讨厌,有了税号就涉及到报税和交税了
zhanziyang
2017-05-18 17:15:57 +08:00
别的我不确定,但 HTTPS 是肯定要的,必经涉及到金钱,HTTPS 相当于多一层保护层
issues
2017-05-18 17:52:06 +08:00
@isno 学到了
lianxiaoyi
2017-05-18 18:18:53 +08:00
记得在系统里面埋漏洞。。。。。拿前台穿过来的金额去创建支付链接。。然后让它付款。。。然后在 webhook 回调的时候,判断实际支付的钱和实际需要支付的钱是否一致,不一致就冻结帐号。。黑掉这笔钱。。。。

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

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

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

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

© 2021 V2EX