EWallet разработано для обработки транзакций платёжной системы. Приложение реализовано в виде HTTP сервера, реализующее REST API.
- Язык реализации – Go 1.21
- База данных – PostgreSQL
- Клонирование репозитория
git clone https://github.com/Pumpkin-A/EWallet.git
- Установка зависимости проекта
go mod download
- Установка собственных данных "user" и "password" в файле connection.go
В приложении реализованы следующие методы
Создает новый кошелек с уникальным ID. Идентификатор генерируется сервером. Созданный кошелек должен иметь сумму 100.0 у.е. на балансе
Эндпоинт:
POST /api/v1/wallet
Параметры запроса отсутствуют
Ответ содержит в теле JSON-объект с текущим состоянием кошелька
Ответ с статусом 200 если кошелек найден
{
"id": "5b53700ed469fa6a09ea72bb78f36fd9",
"balance": 100
}
Эндпоинт:
POST /api/v1/wallet/{walletId}/send
Параметры запроса:
- walletId – строковый ID кошелька, указан в пути запроса
- JSON-объект в теле запроса с параметрами:
- to – ID кошелька, куда нужно перевести деньги
- amount – сумма перевода
Пример запроса:
http://localhost:8080/api/v1/wallet/94c0e247-5e9a-4360-9035-cf895677b57e/send
Тело запроса: application/json
{
"to": "5ceea3fb-31fe-46b3-aad4-9d85080353dd",
"amount": 5.6
}
Ответ:
- cтатус ответа 200, если перевод успешен
- Статус ответа 404 если исходящий кошелек не найден
- Статус ответа 400 если целевой кошелек не найден или на исходящем нет нужной суммы
Пример ответа:
{
"server response: ": "The transfer was successfully completed"
}
Эндпоинт:
GET /api/v1/wallet/{walletId}/history
Параметры запроса:
- walletId – строковый ID кошелька, указан в пути запроса
Пример запроса:
http://localhost:8080/api/v1/wallet/94c0e247-5e9a-4360-9035-cf895677b57e/history
Ответ:
- Ответ с статусом 200 если кошелек найден. Ответ должен содержать в теле массив JSON-объектов с входящими и исходящими транзакциями кошелька. Каждый объект содержит параметры:
- time – дата и время перевода в формате RFC 3339
- from – ID исходящего кошелька
- to – ID входящего кошелька
- amount – сумма перевода. Дробное число
- Статус ответа 404 если указанный кошелек не найден
Пример ответа:
[
{
"id": "9f472903-fd09-4e29-b9eb-298fa9112e68",
"time": "2024-02-08T14:37:49+03:00",
"from": "94c0e247-5e9a-4360-9035-cf895677b57e",
"to": "5ceea3fb-31fe-46b3-aad4-9d85080353dd",
"amount": 5.6
},
{
"id": "dd6b3e94-b2ff-43ec-bcc7-79267bb89d74",
"time": "2024-02-08T14:37:48+03:00",
"from": "94c0e247-5e9a-4360-9035-cf895677b57e",
"to": "5ceea3fb-31fe-46b3-aad4-9d85080353dd",
"amount": 5.6
}
]
Эндпоинт:
GET /api/v1/wallet/{walletId}
Параметры запроса:
- walletId – строковый ID кошелька, указан в пути запроса
Пример запроса:
http://localhost:8080/api/v1/wallet/94c0e247-5e9a-4360-9035-cf895677b57e
Ответ:
- Ответ с статусом 200 если кошелек найден. Ответ должен содержать в теле JSON-объект с текущим состоянием кошелька. Объект содержит параметры:
- id – строковый ID кошелька. Генерируется сервером
- balance – дробное число, баланс кошелька
- Статус ответа 404 если кошелек не найден
Пример ответа:
{
"id": "94c0e247-5e9a-4360-9035-cf895677b57e",
"balance": 87.1
}