条纹(Stripe)、贝宝(PayPal)和 Django-Rest-Framework 的集成

7

我想将Stripe、PayPal或Braintree集成到Django项目中,我想使用“django-rest-framework”,现在我对一件事情感到困惑,那就是-我应该“触摸”我的数据库吗?

我的意思是,我只想向我的客户收取一次费用,这是一个费用,没有其他的,所以我应该接触“db”还是不接触?我担心这会扭曲PCI编译方式处理事务的方式。除了这些提到的支付系统的文档,我不知道从哪里开始。

有人可以帮助我了解一次性付款的最佳实践是什么吗?

2个回答

17

(免责声明:我是Stripe的员工,所以我只会在这里谈论Stripe。)

Stripe使得符合PCI标准变得容易。通过适当的集成,您将永远无法访问客户的付款信息。

使用Stripe的典型付款流程可以分为两个步骤:

  1. 收集客户的付款信息,使用预构建的Checkout表单或使用Stripe.js创建自己的表单。

    在这两种情况下,卡信息直接从客户的浏览器发送到Stripe的服务器,后者返回一个卡令牌。然后将此令牌发送到您的后端。

  2. 在您的后端,使用令牌创建付款

该令牌代表一张卡片,但对您隐藏了PCI敏感信息(即整个卡号和CVC)。

您可以在此处找到创建付款的简单教程。

如果您不打算多次向同一客户收取费用(或者如果您不介意每次都要求他们提供付款信息),则不一定需要在自己的数据库中存储任何内容。当您创建付款时,将立即通知结果(成功或失败),并可以采取必要措施。


我不打算再向他们收费,只想收取一次性费用,感谢您为我澄清这个问题,现在让我们看看PayPal的人对此有何说法。 - copser
谢谢,这很有帮助。如果您想要存储卡片信息以进行重复购买,甚至是支付信息(例如卖家的连接银行账户),您是否也可以从Stripe检索这些令牌? - sonarforte
@sonarforte 您可以使用令牌将卡片添加到客户对象中,然后使用客户ID在未来创建收费时无需再次收集付款信息。请参阅 https://stripe.com/docs/charges#saving-credit-card-details-for-later - Ywain

0

我猜你已经解决了这个问题。 除此之外,我想在使用REST API(DRF)和前端服务器时添加一些关于PayPal支付的信息。 在这种情况下,您可以使用两个服务器来保护您的交易,如何实现呢?

前端服务器将负责显示PayPal结帐按钮,并在订单完成后在Paypal服务器上创建订单。后端服务器将检查在PayPal服务器上创建的订单的有效性(使用从前端传递的订单ID,在付款完成后),并根据PayPal对其的响应更新数据库。

现在,当付款成功时,您可以简单地更新数据库,但这会导致安全问题:人们甚至可以发送请求来更新数据库,而不必进行付款。 以下是一个示例: enter image description here 完整教程:https://www.kowe.io/projects/accept-paypal-payments-in-your-vuejs-and-drf-app/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接