如何保存信用卡信息并将其用于将来与Django和Stripe的购买?

时间:2019-05-08 19:39:35

标签: python django stripe-payments

我正在用Django创建电子商务。在用户注册期间,我想获取用户的信用卡信息,以便将来用户尝试购买商品时,他/她不必再次插入他/她的信用卡信息。

当前,我在处理Stripe时遇到问题(创建此表单以获取信用卡信息,然后使用Django和Stripe中的存储信息处理付款)。

基于Stripe文档,我了解到应该将用户的客户ID保存在Django数据库中,然后,将来,我将使用此客户ID从Stripe检索此用户的信息。但是,我对此过程感到非常困惑:

  • 1)获取卡信息。
  • 2)保存卡信息(客户ID在 Django,并在Stripe中创建客户)
  • 3)使用保存的信息 供将来购买。

这是我在Django中的结帐视图: def checkout_two(request):

if request.method == "POST":
    # Creating a Customer in the stripe platform.
    customer = stripe.Customer.create(

      # How to create such form to get the info below?
      source=request.POST['stripeToken'], # How to get token?
      # email="john@email.com", # How to get email?
    )

    # Charging the Customer instead of the card:
    # charge = stripe.Charge.create(
    #   amount=1000,
    #   currency='usd',
    #   customer=customer.id,
    # )

    # YOUR CODE: Save the customer ID and other info in a database for later.
    obj = Customer.objects.create(customer_id=customer.id)

    # When it's time to charge the customer again, retrieve the customer ID.
    # charge = stripe.Charge.create(
    #   amount=1500, # $15.00 this time
    #   currency='usd',
    #   customer=obj.id, # Previously stored, then retrieved
    # )
    return render(request, "payments/checkout_two.html", {"customer_id":obj.id})
else:
    context = {"stripe_publishable_key":STRIPE_PUBLISHABLE_KEY}
    return render(request, "payments/checkout_two.html", context)

1 个答案:

答案 0 :(得分:1)

首先,您几乎应该永远不要将信用卡信息保存在数据库中。

我将首先阅读PCI和已设置的不同行业标准。

  • 参考:Credit Card Number Storage and PCI
  • 具体来自于文章:“在大多数情况下,信用卡信息不应随时存储在数据库中。存储此信息不仅是出于安全原因的责任,而且还会导致更多合规性操作必须与PCI兼容。信用卡信息由您与之集成的信用卡提供商(Paypal,DataCash,DIBS等)存储,它们必须与PCI兼容。(灰色,2013)“ < / em>

然后查看遵循最佳实践的社区推动的第三方。

有关django和stripe的YouTube教程:

尤其对于信用卡信息,我的建议是:不要重新创建轮子。