Как реализовать личный счет или баланс пользователя на сайте
При создании сайта, а в особенности интернет-магазина, у многих возникает вопрос: как создать личный счет или баланс пользователя? Чтобы при регистрации на сайте, пользователь автоматически имел в своем аккаунте личный счет, который он может пополнять для оплаты каких-либо товаров или услуг.
Давайте рассмотрим, как сделать такую возможность на своем сайте.
Итак, дана задача, добавить на сайт:
- функцию баланса в личный кабинет пользователя
- изменение баланса пользователя администратором сайта
- возможность пополнения пользователем баланса
- оплату товаров или услуг через баланс
- запись списка оплаченных счетов в личный кабинет пользователя.
Для начала определим, на какой платформе у вас сайт или интернет-магазин.
Сайт на конструкторе сайтов
Создать баланс пользователя на сайте построенном в конструкторе сайтов возможно, но все зависит от используемой платформы. Если в конструкторе сайтов, который вы используете, уже есть какое-нибудь готовое приложение или модуль баланса и счетов, которые можно установить, то это очень хорошо. Если готовых решений нет, то вам придется их создавать самостоятельно - писать специальный компонент или простой скрипт, если конечно же, конструктор сайтов позволяет их установить и использовать.
Система управления контентом (CMS)
Как и в случае с конструктором сайтов, в системе управления контентом вы можете использовать уже готовые модули или плагины. Если готовых нет, то их можно написать. В отличие от конструкторов сайтов, создать свой плагин или компонент можно практически в любой CMS.
Фреймворк или самописный сайт
Для сайтов построенных на базе фреймворков можно поискать готовые модули на Github и установить через Composer или подключить самому вручную. Фреймворк ничем не ограничивает вас для создания модуля баланса пользователя. Самописный сайт - созданный вами без всяких вспомогательных инструментов, библиотек, фреймворков также не налагает ограничений по созданию баланса в личном кабинете.
Вот мы и рассмотрели, на какой платформе может быть построен сайт. Теперь перейдем непосредственно к рассмотрению создания баланса в личном кабинете.
Создание баланса в личном кабинете
Пользователи сайта или клиенты интернет-магазина обычно хранятся в какой-нибудь таблице базы данных с названием users, user, clients и т.п.
Баланс - представляет собой ячейку, в которой хранится числовое значение количества денежных средств пользователя.
Для хранения баланса в таблице users можно добавить поле balance с типом integer или float.
Таблица пользователей Наименование Описание user_id id пользователя login логин пользователя email email пользователя password захэшированный пароль balance баланс пользователя
Это достаточно просто. Теперь у каждого пользователя есть свой баланс. В форму редактирования аккаунта пользователя можно добавить input и позволить его редактировать только администратору сайта, чтобы в случае необходимости можно было изменить баланс любого пользователя.
Использование нескольких валют
А что, если нужно, чтобы баланс был в нескольких валютах? Для этого следует сохранять стоимость в какой-нибудь одной, универсальной валюте, которой естественно является доллар. Затем просто на лету конвертировать баланс в нужную валюту. Например, баланс хранится в долларах ($), а с помощью какого-нибудь API вы можете конвертировать баланс и вывести его на в личном кабинете пользователя в рублях, евро, тенге и т.п. В том числе использовать конвертацию при оплате или пополнении. Например, пользователь хочет произвести оплату товара с баланса через рубли и вы конвертируете долларовый баланс в нужную валюту.
Пополнение баланса пользователя
Значение баланса можно выводить на странице просмотра личного кабинета пользователя. Из этого же кабинете организовать систему пополнения баланса по следующему принципу:
- выбрать подходящую для вас систему приема платежей, с API
- добавить на страницу личного кабинета кнопку или форму для перечисления пользователем денежных средств
- после этого проверять с помощью API, успешно ли совершена оплата или нет. Если успешно, то прибавлять к балансу пользователя сумму пополнения - записывать в поле balance в таблице users.
- создать в базе данных таблицу, в которую записывать данные о пополнении баланса, например, billing или transaction со следующими полями:
Оплата товаров или услуг через баланс
Прием оплат за товары или услуги через баланс строить по следующему принципу:
- пользователь переходит на страницу товара, где нужно проверять, авторизован он или гость.
- если пользователь авторизован, то можно выводить количество средств баланса, и проверять, хватает ли этого баланса, чтобы оплатить товар. Если баланса не хватает, то нужно отображать пользователю сообщение об этом и можно даже показывать ссылку для перехода на страницу пополнения баланса.
- нужно создать какую-то кнопку оплаты, ведущую на страницу или отправляющую ajax запрос на эту страницу, где будет происходить процесс покупки товара и списания потраченной суммы с баланса пользователя.
Запись списка оплаченных счетов
Если товар успешно оплачен через баланс, то нужно записывать об этом информацию в базу данных, например, создать таблицу invoice, если аналогичной таблицы еще нет.