Categorygithub.com/JamshedJ/WalletAPI
module
0.0.0-20241121095751-ac3e653f01f3
Repository: https://github.com/jamshedj/walletapi.git
Documentation: pkg.go.dev

# README

WalletAPI

Этот проект представляет собой REST API «Электронного кошелька» для финансового учреждения.

Описание задачи:

Внедрите Rest API для финансового учреждения, где он предоставляет своим партнёрам услуги 
электронного кошелька. У него есть два типа учетных записей электронного кошелька: 
идентифицированные и неидентифицированные.

API может поддерживать несколько клиентов, и следует использовать только методы http, 
post с json в качестве формата данных. Клиенты должны быть аутентифицированы через http 
параметр заголовок X-UserId и X-Digest.

X-Digest — это hmac-sha1, хэш-сумма тела запроса. Должны быть предварительно записанные 
электронные кошельки, с разными балансами, а максимальный баланс составляет 10.000 сомони 
для неидентифицированных счетов и 100.000 сомони для идентифицированных счетов. 
Для хранения данных можете использовать по вашему выбору.

API методы сервиса:

  1. Проверить существует ли аккаунт электронного кошелька.
  2. Пополнение электронного кошелька.
  3. Получить общее количество и суммы операций пополнения за текущий месяц.
  4. Получить баланс электронного кошелька.

Используемые технологии

  • Go
  • Gin
  • Gorm postgres
  • Zerolog
  • Viper
  • Mockery
  • Swagger api docs

Запуск проекта

  1. Клонируйте репозиторий: git clone https://github.com/JamshedJ/WalletAPI.git
  2. Создайте файл config.yaml внутри папки config с слкедующим содержимым:
    app:
     port: 8080
     environment: "development" # or "production"
     database:
         dsn: "host=localhost port=5432 user=postgres password=postgres dbname=wallet sslmode=disable"
    
    
  3. Поднимите базу данных PostgreSQL:
  4. Запустите приложение:
    go run cmd/main.go
    
  5. Перед использованием API необходимо вводить тестовые данные в таблицу wallets.

Тесты

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

    go test ./...

Примеры запросов в Postman

Проверка баланса электронного кошелька

URL: http://localhost:8080/v1/wallet/balance Метод: POST Тело запроса (raw, JSON):

{
  "account": "992900100299",
}

Headers: X-UserId: (id партнера). X-Digest: (вычисляется с помощью HMAC-SHA1).

Проверка существует ли аккаунт электронного кошелька

URL: http://localhost:8080/v1/wallet/exists Метод: POST Тело запроса (raw, JSON):

{
  "account": "992900100299",
}

Headers: X-UserId: X-Digest:

Пополнение электронного кошелька

URL: http://localhost:8080/v1/wallet/topup Метод: POST Тело запроса (raw, JSON):

{
  "account": "992900100299",
  "amount": 100.0
}

Headers: X-UserId: X-Digest:

Получение общего количества и суммы операций пополнения за текущий месяц

Метод: POST URL: http://localhost:8080/v1/wallet/summary Headers: X-UserId: X-Digest:

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author