Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quaddarv1ne/fastpay_connect
fastpay_connect — это проект для демонстрации интеграции различных платёжных систем через FastAPI В проекте реализованы интеграции с популярными платёжными шлюзами, такими как: ЮKassa (бывшая Яндекс.Касса), Tinkoff Касса, CloudPayments, UnitPay, Робокасса
https://github.com/quaddarv1ne/fastpay_connect
2024 cloudpayments fastapi fastapi-crud fastapi-framework fastapi-sqlalchemy maximdupley paypal python quadd4rv1n7 robokassa unitpay yandex youkassa
Last synced: about 1 month ago
JSON representation
fastpay_connect — это проект для демонстрации интеграции различных платёжных систем через FastAPI В проекте реализованы интеграции с популярными платёжными шлюзами, такими как: ЮKassa (бывшая Яндекс.Касса), Tinkoff Касса, CloudPayments, UnitPay, Робокасса
- Host: GitHub
- URL: https://github.com/quaddarv1ne/fastpay_connect
- Owner: QuadDarv1ne
- Created: 2024-11-12T19:36:14.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-21T17:25:53.000Z (about 1 month ago)
- Last Synced: 2024-11-21T18:24:40.336Z (about 1 month ago)
- Topics: 2024, cloudpayments, fastapi, fastapi-crud, fastapi-framework, fastapi-sqlalchemy, maximdupley, paypal, python, quadd4rv1n7, robokassa, unitpay, yandex, youkassa
- Language: Python
- Homepage:
- Size: 1.15 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# FastPay Connect
![FastPay Connect](fastpay_connect.png)
**FastPay Connect** — это проект для демонстрации интеграции различных платёжных систем с использованием `FastAPI`.
## 🔗 Интеграции
Проект поддерживает следующие платёжные системы:
- **ЮKassa** (бывшая Яндекс.Касса)
- **Tinkoff Касса**
- **CloudPayments**
- **UnitPay**
- **Робокасса**### 📚 О проекте
FastPay Connect служит учебным материалом и демонстрационным примером того, как подключить и настроить различные платёжные системы для обработки онлайн-платежей.
---
## 📁 Структура проекта
```plaintext
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-ключей и секретных ключей).**Для установки зависимостей выполните команду:**
```bash
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):**
```json
{
"amount": 1000,
"currency": "RUB",
"description": "Оплата за курс по Python"
}
```#### Создание платежа через Tinkoff
- **URL:** `/payments/tinkoff`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"amount": 2000,
"currency": "RUB",
"description": "Оплата за курс по C++"
}
```#### Создание платежа через CloudPayments
- **URL:** `/payments/cloudpayments`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"amount": 1500,
"currency": "RUB",
"description": "Оплата за курс по JavaScript"
}
```#### Создание платежа через UnitPay
- **URL:** `/payments/unitpay`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"amount": 500,
"currency": "RUB",
"description": "Оплата за курс по PHP"
}
```#### Создание платежа через Робокасса
- **URL:** `/payments/robokassa`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"amount": 1200,
"currency": "RUB",
"description": "Оплата за курс по Go"
}
```---
### 2. Обработка Webhook уведомлений
Для каждой платёжной системы предусмотрены маршруты для обработки уведомлений о статусе транзакций (webhook).
#### Обработка webhook уведомлений от ЮKassa
- **URL:** `/webhooks/yookassa`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"payment_id": "123456789",
"status": "success",
"amount": 1000,
"currency": "RUB",
"transaction_id": "TX123456789"
}
```#### Обработка webhook уведомлений от Tinkoff
- **URL:** `/webhooks/tinkoff`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"order_id": "123456789",
"status": "success",
"amount": 2000,
"currency": "RUB",
"transaction_id": "TX987654321"
}
```#### Обработка webhook уведомлений от CloudPayments
- **URL:** `/webhooks/cloudpayments`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"payment_id": "123456789",
"status": "success",
"amount": 1500,
"currency": "RUB",
"transaction_id": "TX543210987"
}
```#### Обработка webhook уведомлений от UnitPay
- **URL:** `/webhooks/unitpay`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"payment_id": "987654321",
"status": "success",
"amount": 500,
"currency": "RUB",
"transaction_id": "TX135792468"
}
```#### Обработка webhook уведомлений от Робокасса
- **URL:** `/webhooks/robokassa`
- **Метод:** `POST`
- **Тело запроса (JSON):**
```json
{
"order_id": "987654321",
"status": "success",
"amount": 1200,
"currency": "RUB",
"transaction_id": "TX246813579"
}
```---
### Ответы на запросы
Каждый из маршрутов возвратит стандартный ответ в формате JSON:
- **Успех (200 OK)**:
```json
{
"status": "success",
"message": "Платёж успешно создан"
}
```- **Ошибка (400 Bad Request)**:
```json
{
"status": "error",
"message": "Неверные данные в запросе"
}
```- **Ошибка (500 Internal Server Error)**:
```json
{
"status": "error",
"message": "Ошибка сервера"
}
```---
### Примечание
Для выполнения запросов к API необходимо настроить и указать API-ключи для каждой платёжной системы в файле `.env`, как указано в [секции настройки проекта](###настройка-проекта).
---
### ⚙️ Конфигурация
`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` — параметры для настройки почтового сервера, если приложение будет отправлять письма.
Эти маршруты предназначены для обработки уведомлений от платёжных систем о статусе транзакций.---
**Автор:** Дуплей Максим Игоревич
**Дата:** 12.11.2024