我想将Stripe、PayPal或Braintree集成到Django项目中,我想使用“django-rest-framework”,现在我对一件事情感到困惑,那就是-我应该“触摸”我的数据库吗?
我的意思是,我只想向我的客户收取一次费用,这是一个费用,没有其他的,所以我应该接触“db”还是不接触?我担心这会扭曲PCI编译方式处理事务的方式。除了这些提到的支付系统的文档,我不知道从哪里开始。
有人可以帮助我了解一次性付款的最佳实践是什么吗?
我想将Stripe、PayPal或Braintree集成到Django项目中,我想使用“django-rest-framework”,现在我对一件事情感到困惑,那就是-我应该“触摸”我的数据库吗?
我的意思是,我只想向我的客户收取一次费用,这是一个费用,没有其他的,所以我应该接触“db”还是不接触?我担心这会扭曲PCI编译方式处理事务的方式。除了这些提到的支付系统的文档,我不知道从哪里开始。
有人可以帮助我了解一次性付款的最佳实践是什么吗?
(免责声明:我是Stripe的员工,所以我只会在这里谈论Stripe。)
Stripe使得符合PCI标准变得容易。通过适当的集成,您将永远无法访问客户的付款信息。
使用Stripe的典型付款流程可以分为两个步骤:
收集客户的付款信息,使用预构建的Checkout表单或使用Stripe.js创建自己的表单。
在这两种情况下,卡信息直接从客户的浏览器发送到Stripe的服务器,后者返回一个卡令牌。然后将此令牌发送到您的后端。
在您的后端,使用令牌创建付款。
该令牌代表一张卡片,但对您隐藏了PCI敏感信息(即整个卡号和CVC)。
您可以在此处找到创建付款的简单教程。
如果您不打算多次向同一客户收取费用(或者如果您不介意每次都要求他们提供付款信息),则不一定需要在自己的数据库中存储任何内容。当您创建付款时,将立即通知结果(成功或失败),并可以采取必要措施。
我猜你已经解决了这个问题。 除此之外,我想在使用REST API(DRF)和前端服务器时添加一些关于PayPal支付的信息。 在这种情况下,您可以使用两个服务器来保护您的交易,如何实现呢?
前端服务器将负责显示PayPal结帐按钮,并在订单完成后在Paypal服务器上创建订单。后端服务器将检查在PayPal服务器上创建的订单的有效性(使用从前端传递的订单ID,在付款完成后),并根据PayPal对其的响应更新数据库。
现在,当付款成功时,您可以简单地更新数据库,但这会导致安全问题:人们甚至可以发送请求来更新数据库,而不必进行付款。
以下是一个示例:
完整教程:https://www.kowe.io/projects/accept-paypal-payments-in-your-vuejs-and-drf-app/