Как подключить платежную систему в django?
Я новичок во фреймворке Django и не совсем понимаю, как подключить платежную систему к сайту, при этом, чтобы часть оплаты за товар шла на баланс пользователя, который его выставил, а 10%-20% от суммы шло на баланс сервиса. И как лучше всего подключить платежную систему для физ.лиц?
Итак, вам нужно ответить себе на несколько вопросов, таких как:
- Какой платежный провайдер мне нужен? Это должен быть paypal, stripe или... .
- Если я знаю, какой платежный провайдер мне нужен, есть ли пакет для django (или python) для него?
- Если да, то насколько он актуален?
- Если нет, то были ли обновления API или решений, описанных в документации платежного провайдера? Лучше ли они в каком-либо смысле?
В зависимости от этих ответов, вы можете перейти к реализации платежей с помощью внешней библиотеки (например, https://django-paypal.readthedocs.io/en/latest/) или просто реализовать это самостоятельно. В моей ситуации, когда я реализовал платежи paypal в магазине e_commerce, я просто выбрал кнопки paypal, потому что они выглядели лучше, и они, пока что, работают более приятно.
В основном вы должны реализовать то, что Paypal называет IPN
(мгновенные уведомления о платежах). Stripe и, например, TPay также имеют IPN-подобные механизмы. IPN - это просто представление (функциональное или общее), которое обрабатывает платежи, используя данные с обычно md5 проверкой, где вы обновляете статус заказа до COMPLETED
или и так далее.
Отсутствие проверки безопасности может сделать конечную точку уязвимой для пользовательских запросов, выполняемых postman, curl или любым другим инструментом HTTP-тестирования.
Что касается моделей - вы должны написать их сами или использовать предоставленные пакетом. Обычно это означает, что при нескольких платежах вы храните одну модель для каждого провайдера с ForeignKey к Order
глобальной модели, которая собирает все данные. Вы также можете использовать abstract
модели для реализации нескольких моделей с одинаковыми полями, но это вызывает некоторые проблемы с запросами к базе данных для дополнительной обработки логики (вы не можете запрашивать абстрактные модели, поэтому вам нужно разбирать материал с помощью циклов forloops, когда вам это нужно, вместо использования фильтров).
Frontend также зависит от того, что вы будете использовать, но помните о том, что цена не должна быть скрытым входом :)
Нить намного больше, как кажется, но я надеюсь, что дал вам представление о теме.