- Swagger: https://wallet.doweb.online/docs
- ReDoc: https://wallet.doweb.online/redoc
- TestsLocal: https://wallet.doweb.online/run-tests-local
- TestsDomain: https://wallet.doweb.online/run-tests
Приложение для управления электронными кошельками, построенное на FastAPI и SQLAlchemy, и следующее принципам Domain-Driven Design (DDD).
POST /auth/register
: Регистрация нового пользователя. После регистрации создаются кошельки для всех валют.POST /auth/login
: Вход в систему. Возвращает JWT токен.GET /user/get/id
: Получение id пользователя.GET /user/get/token
: Получение информации о пользователе по токену.
GET /user/wallets
: Получение списка всех кошельков текущего пользователя.GET /user/wallet
: Получение деталей конкретного кошелька.POST /user/create/external_wallet
: Создание внешнего счета-кошелька к которому может быть создана и привязана карта эмитента в системе для вывода средств.
GET /user/transactions
: Получение истории транзакций текущего пользователя.GET /wallet/transactions
: Получение истории транзакций конкретного кошелька.POST /wallet/deposit
: Внесение средств на кошелек через создание транзакции со статусомpending
, ожидающей смены статуса наpaid
илиreject
со стороны внешнего сервиса.POST /wallet/exchange
: Обмен валют с учетом текущего курса. Разрядность 10 знаков после точки.POST /wallet/transfer
: Перевод средств между кошельками. Возможен перевод на кошелек другого пользователя.POST /wallet/withdraw
: Вывод средств. (не активно)
GET /service/auth/login
: Вход в систему через сервис. Возвращает JWT токен.POST /auth/register_service
: Регистрация сервисного пользователя.PUT/service/transaction/deposit
: Update Service Deposit Transaction Status. Обновление статуса pending транзакций пользователя. Проведение операций двиджения денежных средств. Cоздание сервисной транзакцииdeposit
для пополнения сервисного кошелька, создание транзакцииtransfer
для перемещения средств с сервисного кошелька на кошелек пользователя, и создание тразакцииcomission
для перемещения суммы комиссии с кошеька пользователя на сервисный кошелек.PUT/service/transaction/withdraw
: Update Service Withdraw Transaction Status. Обновление статуса pending транзакций пользователя. Проведение операций двиджения денежных средств. Cоздание транзакцииwithdraw
для вывода средств с кошелька пользователя, и создание тразакцииcomission
для перемещения суммы комиссии с кошеька пользователя на сервисный кошелек.
**Updated new methods for exchange currencies services
POST /service/exchange-rates/update
: Update exchange rates in the database to current ratesGET /service/exchange-rates/last-update
: Get the date and time of the last update of rates in the database.POST /service/exchange-rates/get-conversion
: Conversion between currencies.
- Доступ к операциям с кошельками и транзакциями возможен только после аутентификации.
- Все транзакции являются атомарными: в случае ошибки все изменения откатываются.
- Требуется обновление статуса pending транзакции для проведения операции депозита на кошельки пользователя и сервисного пользователя.
- Логика вывода через платежные шлюзы.
- Логика перевода средств между пользователями (P2P).
- gunicorn (
-w N
-количество воркеров = ядер cpu)
gunicorn -w 4 -k uvicorn.workers.UvicornWorker -t 120 main:app --bind 0.0.0.0:8010 - uvicorn uvicorn main:app --host 0.0.0.0 --port 8010
- docker network create wallet_network
- docker build --no-cache -t wallet .
- docker run --name psql --network=wallet_network --env-file .env -p 5432:5432 -d --restart=always postgres:14
- docker run --name wallet --network=wallet_network --env-file .env -p 8010:8010 -d --restart=always wallet
**Updated new way to build app
- docker compose built --no-cache
- docker compose up -d or
- docker-compose up --build -d