Skip to content

fastpay_connect — это проект для демонстрации интеграции различных платёжных систем через FastAPI. В проекте реализованы интеграции с популярными платёжными шлюзами, такими как: ЮKassa (бывшая Яндекс.Касса), Tinkoff Касса, CloudPayments, UnitPay, Робокасса

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.md
Notifications You must be signed in to change notification settings

QuadDarv1ne/fastpay_connect

Repository files navigation

FastPay Connect

FastPay Connect

FastPay Connect — это проект для демонстрации интеграции различных платёжных систем с использованием FastAPI.

🔗 Интеграции

Проект поддерживает следующие платёжные системы:

  • ЮKassa (бывшая Яндекс.Касса)
  • Tinkoff Касса
  • CloudPayments
  • UnitPay
  • Робокасса

📚 О проекте

FastPay Connect служит учебным материалом и демонстрационным примером того, как подключить и настроить различные платёжные системы для обработки онлайн-платежей.


📁 Структура проекта

fastpay_connect/
│
├── app/
│   ├── __init__.py               # Инициализация приложения
│   ├── main.py                   # Главный файл для запуска FastAPI
│   ├── payment_gateways/         # Интеграции платёжных систем
│   │   ├── yookassa.py           # ЮKassa
│   │   ├── tinkoff.py            # Tinkoff Касса
│   │   ├── cloudpayments.py      # CloudPayments
│   │   ├── unitpay.py            # UnitPay
│   │   └── robokassa.py          # Робокасса
│   ├── routes/                   # Маршруты
│   │   ├── payment_routes.py     # Работа с платёжными системами
│   │   └── webhook_routes.py     # Обработка webhook-уведомлений
│   ├── utils/                    # Вспомогательные функции
│   ├── config.py                 # Конфигурации платёжных систем
│   └── database.py               # Подключение к базе данных
│
├── .env                          # Конфиденциальные данные
├── requirements.txt              # Зависимости проекта
├── README.md                     # Описание проекта
└── run.py                        # Точка входа для запуска приложения

Описание изменений

  1. fastpay_connect — это теперь основная папка проекта.
  2. main.py — запускает FastAPI-приложение и подключает все маршруты для платёжных систем.
  3. payment_gateways/ — папка, где находятся интеграции с различными платёжными системами (ЮKassa, Tinkoff, CloudPayments, UnitPay, Робокасса).
  4. Маршруты payment_routes.py и webhook_routes.py — определяют все взаимодействия с платёжными системами и обработку webhook-уведомлений.
  5. config.py — хранит конфигурации для всех платёжных систем, которые будут использоваться в проекте.
  6. models/ — если будет нужна база данных, в этом каталоге будут храниться модели для хранения информации о платежах.
  7. helpers.py — вспомогательные функции, такие как создание подписи, обработка ошибок и другие утилиты.
  8. .env — файл для хранения всех конфиденциальных данных (например, API-ключей и секретных ключей).

Для установки зависимостей выполните команду:

pip install -r requirements.txt

Настройка проекта

Создание файла .env:

YOOKASSA_API_KEY=your_yookassa_api_key
TINKOFF_API_KEY=your_tinkoff_api_key
CLOUDPAYMENTS_API_KEY=your_cloudpayments_api_key
UNITPAY_API_KEY=your_unitpay_api_key
ROBKASSA_API_KEY=your_robokassa_api_key

Запуск приложения

Для запуска приложения используйте команду:

uvicorn app.main:app --reload

После этого вы сможете получить доступ к API, например, по адресу http://127.0.0.1:8000


API Маршруты

1. Создание платежа

Каждый платёжный шлюз имеет свой собственный маршрут для создания платежа. Для создания платежа необходимо отправить POST-запрос с необходимыми параметрами.

Создание платежа через ЮKassa

  • URL: /payments/yookassa
  • Метод: POST
  • Тело запроса (JSON):
    {
      "amount": 1000,
      "currency": "RUB",
      "description": "Оплата за курс по Python"
    }

Создание платежа через Tinkoff

  • URL: /payments/tinkoff
  • Метод: POST
  • Тело запроса (JSON):
    {
      "amount": 2000,
      "currency": "RUB",
      "description": "Оплата за курс по C++"
    }

Создание платежа через CloudPayments

  • URL: /payments/cloudpayments
  • Метод: POST
  • Тело запроса (JSON):
    {
      "amount": 1500,
      "currency": "RUB",
      "description": "Оплата за курс по JavaScript"
    }

Создание платежа через UnitPay

  • URL: /payments/unitpay
  • Метод: POST
  • Тело запроса (JSON):
    {
      "amount": 500,
      "currency": "RUB",
      "description": "Оплата за курс по PHP"
    }

Создание платежа через Робокасса

  • URL: /payments/robokassa
  • Метод: POST
  • Тело запроса (JSON):
    {
      "amount": 1200,
      "currency": "RUB",
      "description": "Оплата за курс по Go"
    }

2. Обработка Webhook уведомлений

Для каждой платёжной системы предусмотрены маршруты для обработки уведомлений о статусе транзакций (webhook).

Обработка webhook уведомлений от ЮKassa

  • URL: /webhooks/yookassa
  • Метод: POST
  • Тело запроса (JSON):
    {
      "payment_id": "123456789",
      "status": "success",
      "amount": 1000,
      "currency": "RUB",
      "transaction_id": "TX123456789"
    }

Обработка webhook уведомлений от Tinkoff

  • URL: /webhooks/tinkoff
  • Метод: POST
  • Тело запроса (JSON):
    {
      "order_id": "123456789",
      "status": "success",
      "amount": 2000,
      "currency": "RUB",
      "transaction_id": "TX987654321"
    }

Обработка webhook уведомлений от CloudPayments

  • URL: /webhooks/cloudpayments
  • Метод: POST
  • Тело запроса (JSON):
    {
      "payment_id": "123456789",
      "status": "success",
      "amount": 1500,
      "currency": "RUB",
      "transaction_id": "TX543210987"
    }

Обработка webhook уведомлений от UnitPay

  • URL: /webhooks/unitpay
  • Метод: POST
  • Тело запроса (JSON):
    {
      "payment_id": "987654321",
      "status": "success",
      "amount": 500,
      "currency": "RUB",
      "transaction_id": "TX135792468"
    }

Обработка webhook уведомлений от Робокасса

  • URL: /webhooks/robokassa
  • Метод: POST
  • Тело запроса (JSON):
    {
      "order_id": "987654321",
      "status": "success",
      "amount": 1200,
      "currency": "RUB",
      "transaction_id": "TX246813579"
    }

Ответы на запросы

Каждый из маршрутов возвратит стандартный ответ в формате JSON:

  • Успех (200 OK):

    {
      "status": "success",
      "message": "Платёж успешно создан"
    }
  • Ошибка (400 Bad Request):

    {
      "status": "error",
      "message": "Неверные данные в запросе"
    }
  • Ошибка (500 Internal Server Error):

    {
      "status": "error",
      "message": "Ошибка сервера"
    }

Примечание

Для выполнения запросов к API необходимо настроить и указать API-ключи для каждой платёжной системы в файле .env, как указано в секции настройки проекта.


Инструкция по получению API-ключей

ЮKassa (бывшая Яндекс.Касса) 🏦

  1. Перейдите на сайт ЮKassa.
  2. Зарегистрируйтесь или войдите в личный кабинет.
  3. В разделе "Интеграции" выберите "API" и создайте новый API-ключ.
  4. Сохраните ключ в безопасном месте 🔒.

Tinkoff Касса 💳

  1. Перейдите на сайт Tinkoff API.
  2. Зарегистрируйтесь в личном кабинете.
  3. В разделе "Настройки" получите публичный и секретный API-ключи.

CloudPayments ☁️💳

  1. Перейдите на сайт CloudPayments.
  2. Зарегистрируйтесь и войдите в личный кабинет.
  3. В разделе "Настройки" получите API-ключи.

UnitPay 📱

  1. Перейдите на сайт UnitPay.
  2. Зарегистрируйтесь и создайте аккаунт.
  3. В разделе "Настройки" найдите свой API-ключ.

Робокасса 💰

  1. Перейдите на сайт Робокасса.
  2. Зарегистрируйтесь и войдите в личный кабинет.
  3. В разделе "Настройки" получите API-ключи.

Советы по безопасности 🔐

  • Храните ключи в безопасном месте, например, в переменных окружения или секретных хранилищах.
  • Никогда не размещайте ключи в публичных репозиториях 🚫.

⚙️ Конфигурация

YOOKASSA_API_KEY, TINKOFF_API_KEY, CLOUDPAYMENTS_API_KEY, UNITPAY_API_KEY, ROBOKASSA_API_KEY — ключи для авторизации и взаимодействия с платёжными системами. Замените эти значения на реальные ключи, полученные при регистрации в платёжных системах.

DATABASE_URL — строка подключения к базе данных. Пример с SQLite для локальной разработки и с PostgreSQL для продакшн окружения. Вы можете использовать любую другую базу данных по мере необходимости.

SECRET_KEY — секретный ключ для безопасности, например, для подписи сессий или JWT токенов.

ALLOWED_HOSTS — список хостов, которые могут подключаться к вашему серверу. Используйте это в целях безопасности, чтобы ограничить доступ только с определённых адресов.

DEBUG — флаг для включения/выключения режима отладки. Включайте его только в локальной разработке. На продакшн сервере должно быть установлено значение False.

MAIL_USERNAME, MAIL_PASSWORD, MAIL_SERVER, MAIL_PORT — параметры для настройки почтового сервера, если приложение будет отправлять письма. Эти маршруты предназначены для обработки уведомлений от платёжных систем о статусе транзакций.


📄 Лицензия

Этот проект лицензирован под лицензией MIT

Для получения дополнительной информации ознакомьтесь с файлом LICENSE


Автор

Дуплей Максим Игоревич

Дата: 15.10.2024 - 30.10.2024

Версия: 1.0

About

fastpay_connect — это проект для демонстрации интеграции различных платёжных систем через FastAPI. В проекте реализованы интеграции с популярными платёжными шлюзами, такими как: ЮKassa (бывшая Яндекс.Касса), Tinkoff Касса, CloudPayments, UnitPay, Робокасса

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.md

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published