Схема
В схеме указаны обязательные поля для того или иного метода.
Тут небольшие пояснения (остальной функционал на откуп разработчика):
Объекты
Card — поле number сохраняется по шаблону /d/d/d/d-/d/d/d/d-/d/d/d/d-/d/d/d/d
Методы
Создать нового юзера
addUser:
Если телефон не передан, он пустой
Признак vip по умолчанию false (если не передан)
Карточек нет
Создать нового юзера с карточками
addUserWithCards — то же самое, что и addUser, но можно передать карточки сразу в массиве.
Создать новую карточку юзеру
Юзера указываем через ID, баланс у карты новой — 0
Методы модификации баланса:
Пополнить баланс — просто указываем сумму и она добавляется к балансу. Только положительное можно передать
Списание средств (купили что-то и оплатили карточкой) — указанная сумма отнимается. Если уходит ниже нуля, выдает ошибку “Не хватает денег”, ничего не списывает
Перевести деньги с карты на карту (по номеру или телефону):
Number_from — номер карты, откуда списываем средства
Number_to — или номер карты, куда зачисляем, или телефон пользователя, к которому относится карта:
Если у пользователя одна карта, то ок, переводим,
Если несколько карт, то надо указать bank (если не указали, ошибку выдаем).
Если несколько карт в одном банке, то начисляем на любую из них
Чистка за собой — операция удаления, карты по номеру, юзера по ID