Как сохранить информацию о кредитной карте и использовать ее для будущих покупок с Django и Stripe? - PullRequest
0 голосов
/ 08 мая 2019

Я создаю электронную коммерцию с Django. Во время регистрации пользователя я хотел бы получить информацию о кредитной карте пользователя, чтобы в будущем, когда пользователь пытается что-то купить, ему / ей не нужно было снова вводить информацию о своей кредитной карте.

В настоящее время у меня возникают проблемы с Stripe (создание этой формы для получения информации о кредитной карте, а затем обработка платежа с сохраненной информацией как в Django, так и в Stripe).

Основываясь на документации Stripe, я понял, что должен сохранить идентификатор клиента пользователя в своей базе данных Django, а затем в будущем я буду использовать этот идентификатор клиента для получения информации этого пользователя из полосы. Однако я очень запутался в этом процессе:

  • 1) Получить информацию о карте.
  • 2) Сохранить информацию о карте (идентификатор клиента в Джанго и создай клиента в Stripe)
  • 3) Использовать сохраненную информацию для будущих покупок.

Это мой вид оформления заказа в Джанго: def checkout_two (запрос):

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 Ответ

1 голос
/ 08 мая 2019

Прежде всего, вы почти никогда не должны сохранять информацию о кредитной карте в своей базе данных.

Сначала я прочитал бы о PCI и других установленных отраслевых стандартах.

  • Ссылка: Хранение номера кредитной карты и PCI
  • Специально из статьи: "В большинстве случаев информация о кредитной карте не должна храниться в базе данных в любое время. Сохранение этогоинформация является не только ответственностью по соображениям безопасности, но и приводит к дополнительным действиям по обеспечению соответствия требованиям, которые необходимо выполнить для соответствия требованиям PCI Информация о кредитной карте хранится у поставщика кредитной карты, с которым вы интегрируетесь (Paypal, DataCash, DIBS и т. д.), которые должны быть PCI-совместимыми. (Серый, 2013 г.) "

Тогда загляните в стороннее сообщество, придерживающееся лучших практик.

Учебное пособие по YouTube для Django и Stripe:

Моя рекомендация, особенно для информации о кредитной карте: НЕ создавайте колесо заново.

...