2

我有一个我想象的非常标准的设置,一个带有购物车的电子商务应用程序,以及将订单存储在本地数据库中的能力(需要知道从批发商那里订购什么商品以及将它们送到哪里)。

目前,所有这些功能都运行良好。我现在的“结帐”允许客户输入他们的详细信息,然后保存一个订单,每个订单都有几个订单项目。

我想要做的是使用此表单将一些信息发送到条带,如果收到指示成功的令牌,则将一些(但不是全部)字段保存到本地数据库。

我不想在本地保存 CC 数据或类似的东西,我很清楚安全风险和法律义务,如 PCI 合规性。

我只想拥有一个表格,客户可以使用它来输入他们的数据,然后点击付款(就像大多数电子商务网站一样),而不是有一个表格来输入数据,另一个表格来支付。

django-stripe 文档非常缺乏,Stripe API 文档似乎只有 ruby​​ 框架和 javascript 的示例,django 没有。

我想做的事情是否可能,如果是,正确的方法是什么?

如果需要,我可以发布我的模型、表单、视图和模板片段,但这似乎是一个逻辑和方法问题,而不是特定于代码的问题。

4

1 回答 1

3

使用过 Stripe,它实际上有很棒的文档。您要查找的内容位于Stripe API Referencecharge中的部分下。您还需要创建一个令牌(可以在服务器端通过 HTTPS 或通过 JS 在客户端完成)。

您要做的实际上是首先通过 Stripe 向用户收费,如果响应成功,则将订单信息输入到您的数据库中。

一个例子是这样的:

from django.views.generic import View
import stripe
stripe.api_key = "sk_test_KEY_HERE"


class PaymentView(View):
    def post(self, request, *args, **kwargs):
        card_num = request.POST['card_num']
        exp_month = request.POST['exp_month']
        exp_year = request.POST['exp_year']
        cvc = request.POST['cvc']

        token = stripe.Token.create(
          card={
            "number": card_num,
            "exp_month": int(exp_month),
            "exp_year": int(exp_year),
            "cvc": cvc
          },
        )

        charge = stripe.Charge.create(
          amount=2000,
          currency="usd",
          source=token,  # obtained above
          #source="tok_visa", # obtained with Stripe.js (JS)
          description="Charge for jenny.rosen@example.com"
        )

        if charge['captured'] == True:
            Sale.objects.create(product=product, amount=amount)
            return redirect('app:success_page')

        return redirect('app:fail_page')
于 2019-03-10T20:55:51.333 回答