Безопасный способ приема платежей на Django Heroku?
Я пытаюсь принимать платежи на Django с помощью Heroku.
У меня была куча проблем с использованием Stripe, потому что я мало знаю о стороне клиента/сервера, и каждый раз, когда я получаю что-то, что работает, мне приходится раскрывать свой закрытый ключ. Мне кажется, что для этого нет никаких ресурсов. Есть ли у кого-нибудь что-нибудь, что может помочь?
Обычно любые секреты, которые вы не хотите раскрывать пользователям (например, секретные ключи API), могут храниться на бэкенде вашего сервера Django и не раскрываться пользователям вашего приложения.
В случае со Stripe важно понимать, что существует два вида ключей API: публикуемые API ключи и секретные API ключи.
Согласно документации по stripe:
Key type | example | When to use |
---|---|---|
Publishable | pk_test_TYooMQauvdEDq54NiTphI7jx | On the client-side. Can be publicly-accessible in your web or mobile app’s client-side code (such as checkout.js) to tokenize payment information such as with Stripe Elements. By default, Stripe Checkout tokenizes payment information. |
Secret | sk_test_4eC39HqLyjWDarjtT1zdp7dc | On the server-side. Must be secret and stored securely in your web or mobile app’s server-side code (such as in an environment variable or credential management system) to call Stripe APIs. |
Итак, вы будете хранить свой секретный ключ только в вашем приложении Django. Ваш фронтенд будет либо обращаться только к бэкенду, либо использовать только публикуемый ключ.
Существует несколько продуктов, которые предлагает stripe для интеграции платежей в ваше приложение. Вы можете посмотреть в Stripe Checkout quickstart примеры кода о том, как правильно использовать эти ключи в вашем приложении.