{"id":21457831,"url":"https://github.com/quaddarv1ne/fastpay_connect","last_synced_at":"2025-04-22T13:39:11.582Z","repository":{"id":262589215,"uuid":"887462648","full_name":"QuadDarv1ne/fastpay_connect","owner":"QuadDarv1ne","description":"fastpay_connect — это проект для демонстрации интеграции различных платёжных систем через FastAPI. В проекте реализованы интеграции с популярными платёжными шлюзами, такими как:  ЮKassa (бывшая Яндекс.Касса), Tinkoff Касса, CloudPayments, UnitPay, Робокасса","archived":false,"fork":false,"pushed_at":"2024-12-28T12:23:46.000Z","size":1261,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T15:34:40.771Z","etag":null,"topics":["2024","cloudpayments","fastapi","fastapi-crud","fastapi-framework","fastapi-sqlalchemy","maximdupley","paypal","python","quadd4rv1n7","robokassa","unitpay","yandex","youkassa"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QuadDarv1ne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-12T19:36:14.000Z","updated_at":"2025-03-23T22:00:05.000Z","dependencies_parsed_at":"2024-12-19T20:33:33.668Z","dependency_job_id":null,"html_url":"https://github.com/QuadDarv1ne/fastpay_connect","commit_stats":null,"previous_names":["quaddarv1ne/fastpay_connect"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuadDarv1ne%2Ffastpay_connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuadDarv1ne%2Ffastpay_connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuadDarv1ne%2Ffastpay_connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuadDarv1ne%2Ffastpay_connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QuadDarv1ne","download_url":"https://codeload.github.com/QuadDarv1ne/fastpay_connect/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250249936,"owners_count":21399551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2024","cloudpayments","fastapi","fastapi-crud","fastapi-framework","fastapi-sqlalchemy","maximdupley","paypal","python","quadd4rv1n7","robokassa","unitpay","yandex","youkassa"],"created_at":"2024-11-23T06:07:17.706Z","updated_at":"2025-04-22T13:39:11.560Z","avatar_url":"https://github.com/QuadDarv1ne.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FastPay Connect\n\n![FastPay Connect](fastpay_connect.png)\n\n**FastPay Connect** — это проект для демонстрации интеграции различных платёжных систем с использованием `FastAPI`.\n\n## 🔗 Интеграции\n\nПроект поддерживает следующие платёжные системы:\n\n- **ЮKassa** (бывшая Яндекс.Касса)\n- **Tinkoff Касса**\n- **CloudPayments**\n- **UnitPay**\n- **Робокасса**\n\n### 📚 О проекте\n\nFastPay Connect служит учебным материалом и демонстрационным примером того, как подключить и настроить различные платёжные системы для обработки онлайн-платежей.\n\n---\n\n## 📁 Структура проекта\n\n```plaintext\nfastpay_connect/\n│\n├── app/\n│   ├── __init__.py               # Инициализация приложения\n│   ├── main.py                   # Главный файл для запуска FastAPI\n│   ├── payment_gateways/         # Интеграции платёжных систем\n│   │   ├── yookassa.py           # ЮKassa\n│   │   ├── tinkoff.py            # Tinkoff Касса\n│   │   ├── cloudpayments.py      # CloudPayments\n│   │   ├── unitpay.py            # UnitPay\n│   │   └── robokassa.py          # Робокасса\n│   ├── routes/                   # Маршруты\n│   │   ├── payment_routes.py     # Работа с платёжными системами\n│   │   └── webhook_routes.py     # Обработка webhook-уведомлений\n│   ├── utils/                    # Вспомогательные функции\n│   ├── config.py                 # Конфигурации платёжных систем\n│   └── database.py               # Подключение к базе данных\n│\n├── .env                          # Конфиденциальные данные\n├── requirements.txt              # Зависимости проекта\n├── README.md                     # Описание проекта\n└── run.py                        # Точка входа для запуска приложения\n```\n\n---\n\n### Описание изменений\n\n1. `fastpay_connect` — это теперь основная папка проекта.\n2. `main.py` — запускает FastAPI-приложение и подключает все маршруты для платёжных систем.\n3. `payment_gateways/` — папка, где находятся интеграции с различными платёжными системами (`ЮKassa`, `Tinkoff`, `CloudPayments`, `UnitPay`, `Робокасса`).\n4. Маршруты `payment_routes.py` и `webhook_routes.py` — определяют все взаимодействия с платёжными системами и обработку webhook-уведомлений.\n5. `config.py` — хранит конфигурации для всех платёжных систем, которые будут использоваться в проекте.\n6. `models/` — если будет нужна база данных, в этом каталоге будут храниться модели для хранения информации о платежах.\n7. `helpers.py` — вспомогательные функции, такие как создание подписи, обработка ошибок и другие утилиты.\n8. `.env` — файл для хранения всех конфиденциальных данных (например, API-ключей и секретных ключей).\n\n**Для установки зависимостей выполните команду:**\n\n```bash\npip install -r requirements.txt\n```\n\n---\n\n### Настройка проекта\n\n**Создание файла `.env`:**\n\n```\nYOOKASSA_API_KEY=your_yookassa_api_key\nTINKOFF_API_KEY=your_tinkoff_api_key\nCLOUDPAYMENTS_API_KEY=your_cloudpayments_api_key\nUNITPAY_API_KEY=your_unitpay_api_key\nROBKASSA_API_KEY=your_robokassa_api_key\n```\n\n---\n\n### Запуск приложения\n\n**Для запуска приложения используйте команду:**\n\n```\nuvicorn app.main:app --reload\n```\n\nПосле этого вы сможете получить доступ к API, например, по адресу `http://127.0.0.1:8000`\n\n---\n\n### API Маршруты\n\n### 1. Создание платежа\n\nКаждый платёжный шлюз имеет свой собственный маршрут для создания платежа. Для создания платежа необходимо отправить POST-запрос с необходимыми параметрами.\n\n#### Создание платежа через ЮKassa\n\n- **URL:** `/payments/yookassa`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"amount\": 1000,\n      \"currency\": \"RUB\",\n      \"description\": \"Оплата за курс по Python\"\n    }\n    ```\n\n#### Создание платежа через Tinkoff\n\n- **URL:** `/payments/tinkoff`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"amount\": 2000,\n      \"currency\": \"RUB\",\n      \"description\": \"Оплата за курс по C++\"\n    }\n    ```\n\n#### Создание платежа через CloudPayments\n\n- **URL:** `/payments/cloudpayments`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"amount\": 1500,\n      \"currency\": \"RUB\",\n      \"description\": \"Оплата за курс по JavaScript\"\n    }\n    ```\n\n#### Создание платежа через UnitPay\n\n- **URL:** `/payments/unitpay`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"amount\": 500,\n      \"currency\": \"RUB\",\n      \"description\": \"Оплата за курс по PHP\"\n    }\n    ```\n\n#### Создание платежа через Робокасса\n\n- **URL:** `/payments/robokassa`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"amount\": 1200,\n      \"currency\": \"RUB\",\n      \"description\": \"Оплата за курс по Go\"\n    }\n    ```\n\n---\n\n### 2. Обработка Webhook уведомлений\n\nДля каждой платёжной системы предусмотрены маршруты для обработки уведомлений о статусе транзакций (webhook).\n\n#### Обработка webhook уведомлений от ЮKassa\n\n- **URL:** `/webhooks/yookassa`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"payment_id\": \"123456789\",\n      \"status\": \"success\",\n      \"amount\": 1000,\n      \"currency\": \"RUB\",\n      \"transaction_id\": \"TX123456789\"\n    }\n    ```\n\n#### Обработка webhook уведомлений от Tinkoff\n\n- **URL:** `/webhooks/tinkoff`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"order_id\": \"123456789\",\n      \"status\": \"success\",\n      \"amount\": 2000,\n      \"currency\": \"RUB\",\n      \"transaction_id\": \"TX987654321\"\n    }\n    ```\n\n#### Обработка webhook уведомлений от CloudPayments\n\n- **URL:** `/webhooks/cloudpayments`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"payment_id\": \"123456789\",\n      \"status\": \"success\",\n      \"amount\": 1500,\n      \"currency\": \"RUB\",\n      \"transaction_id\": \"TX543210987\"\n    }\n    ```\n\n#### Обработка webhook уведомлений от UnitPay\n\n- **URL:** `/webhooks/unitpay`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"payment_id\": \"987654321\",\n      \"status\": \"success\",\n      \"amount\": 500,\n      \"currency\": \"RUB\",\n      \"transaction_id\": \"TX135792468\"\n    }\n    ```\n\n#### Обработка webhook уведомлений от Робокасса\n\n- **URL:** `/webhooks/robokassa`\n- **Метод:** `POST`\n- **Тело запроса (JSON):**\n    ```json\n    {\n      \"order_id\": \"987654321\",\n      \"status\": \"success\",\n      \"amount\": 1200,\n      \"currency\": \"RUB\",\n      \"transaction_id\": \"TX246813579\"\n    }\n    ```\n\n---\n\n### Ответы на запросы\n\nКаждый из маршрутов возвратит стандартный ответ в формате JSON:\n\n- **Успех (200 OK)**:\n    ```json\n    {\n      \"status\": \"success\",\n      \"message\": \"Платёж успешно создан\"\n    }\n    ```\n\n- **Ошибка (400 Bad Request)**:\n    ```json\n    {\n      \"status\": \"error\",\n      \"message\": \"Неверные данные в запросе\"\n    }\n    ```\n\n- **Ошибка (500 Internal Server Error)**:\n    ```json\n    {\n      \"status\": \"error\",\n      \"message\": \"Ошибка сервера\"\n    }\n    ```\n\n---\n\n### Примечание\n\nДля выполнения запросов к API необходимо настроить и указать API-ключи для каждой платёжной системы в файле `.env`, как указано в [секции настройки проекта](###настройка-проекта).\n\n---\n\n## Инструкция по получению API-ключей\n\n### ЮKassa (бывшая Яндекс.Касса) 🏦\n1. Перейдите на сайт [ЮKassa](https://kassa.yandex.ru/).\n2. Зарегистрируйтесь или войдите в личный кабинет.\n3. В разделе \"Интеграции\" выберите \"API\" и создайте новый API-ключ.\n4. Сохраните ключ в безопасном месте 🔒.\n\n### Tinkoff Касса 💳\n1. Перейдите на сайт [Tinkoff API](https://www.tinkoff.ru/business/payments/api/).\n2. Зарегистрируйтесь в личном кабинете.\n3. В разделе \"Настройки\" получите публичный и секретный API-ключи.\n\n### CloudPayments ☁️💳\n1. Перейдите на сайт [CloudPayments](https://www.cloudpayments.ru/).\n2. Зарегистрируйтесь и войдите в личный кабинет.\n3. В разделе \"Настройки\" получите API-ключи.\n\n### UnitPay 📱\n1. Перейдите на сайт [UnitPay](https://unitpay.ru/).\n2. Зарегистрируйтесь и создайте аккаунт.\n3. В разделе \"Настройки\" найдите свой API-ключ.\n\n### Робокасса 💰\n1. Перейдите на сайт [Робокасса](https://www.robokassa.ru/).\n2. Зарегистрируйтесь и войдите в личный кабинет.\n3. В разделе \"Настройки\" получите API-ключи.\n\n### Советы по безопасности 🔐\n- Храните ключи в безопасном месте, например, в переменных окружения или секретных хранилищах.\n- Никогда не размещайте ключи в публичных репозиториях 🚫.\n\n---\n\n### ⚙️ Конфигурация\n\n`YOOKASSA_API_KEY`, `TINKOFF_API_KEY`, `CLOUDPAYMENTS_API_KEY`, `UNITPAY_API_KEY`, `ROBOKASSA_API_KEY` — ключи для авторизации и взаимодействия с платёжными системами. Замените эти значения на реальные ключи, полученные при регистрации в платёжных системах.\n\n`DATABASE_URL` — строка подключения к базе данных. Пример с SQLite для локальной разработки и с PostgreSQL для продакшн окружения. Вы можете использовать любую другую базу данных по мере необходимости.\n\n`SECRET_KEY` — секретный ключ для безопасности, например, для подписи сессий или JWT токенов.\n\n`ALLOWED_HOSTS` — список хостов, которые могут подключаться к вашему серверу. Используйте это в целях безопасности, чтобы ограничить доступ только с определённых адресов.\n\n`DEBUG` — флаг для включения/выключения режима отладки. Включайте его только в локальной разработке. На продакшн сервере должно быть установлено значение False.\n\n`MAIL_USERNAME`, `MAIL_PASSWORD`, `MAIL_SERVER`, `MAIL_PORT` — параметры для настройки почтового сервера, если приложение будет отправлять письма.\nЭти маршруты предназначены для обработки уведомлений от платёжных систем о статусе транзакций.\n\n---\n\n### 📄 Лицензия\n\n[Этот проект лицензирован под лицензией MIT](LICENSE)\n\nДля получения дополнительной информации ознакомьтесь с файлом `LICENSE`\n\n---\n\n### Автор\n\n**Дуплей Максим Игоревич**\n\n**Дата:** 15.10.2024 - 30.10.2024\n\n**Версия:** 1.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquaddarv1ne%2Ffastpay_connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquaddarv1ne%2Ffastpay_connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquaddarv1ne%2Ffastpay_connect/lists"}