Unetway
Как реализовать личный счет или баланс пользователя на сайте

Как реализовать личный счет или баланс пользователя на сайте

При создании сайта, а в особенности интернет-магазина, у многих возникает вопрос: как создать личный счет или баланс пользователя? Чтобы при регистрации на сайте, пользователь автоматически имел в своем аккаунте личный счет, который он может пополнять для оплаты каких-либо товаров или услуг.

Давайте рассмотрим, как сделать такую возможность на своем сайте.

Итак, дана задача, добавить на сайт:

  • функцию баланса в личный кабинет пользователя
  • изменение баланса пользователя администратором сайта
  • возможность пополнения пользователем баланса
  • оплату товаров или услуг через баланс
  • запись списка оплаченных счетов в личный кабинет пользователя.

Для начала определим, на какой платформе у вас сайт или интернет-магазин.

Сайт на конструкторе сайтов

Создать баланс пользователя на сайте построенном в конструкторе сайтов возможно, но все зависит от используемой платформы. Если в конструкторе сайтов, который вы используете, уже есть какое-нибудь готовое приложение или модуль баланса и счетов, которые можно установить, то это очень хорошо. Если готовых решений нет, то вам придется их создавать самостоятельно - писать специальный компонент или простой скрипт, если конечно же, конструктор сайтов позволяет их установить и использовать.

Система управления контентом (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 со следующими полями:
Таблица пополнения баланса
Наименование Описание
billing_id порядковый id записи
date_create дата оплаты/добавления счета
amount сумма пополнения
user_id id пользователя выполнившего пополнение баланса

Оплата товаров или услуг через баланс

Прием оплат за товары или услуги через баланс строить по следующему принципу:

  • пользователь переходит на страницу товара, где нужно проверять, авторизован он или гость.
  • если пользователь авторизован, то можно выводить количество средств баланса, и проверять, хватает ли этого баланса, чтобы оплатить товар. Если баланса не хватает, то нужно отображать пользователю сообщение об этом и можно даже показывать ссылку для перехода на страницу пополнения баланса.
  • нужно создать какую-то кнопку оплаты, ведущую на страницу или отправляющую ajax запрос на эту страницу, где будет происходить процесс покупки товара и списания потраченной суммы с баланса пользователя.

Запись списка оплаченных счетов

Если товар успешно оплачен через баланс, то нужно записывать об этом информацию в базу данных, например, создать таблицу invoice, если аналогичной таблицы еще нет.

Таблица счетов
Наименование Описание
invoice_id порядковый id записи
date_pay дата оплаты товара
amount сумма оплаты
user_id id пользователя выполнившего покупку товара
product_id id купленного товара

 

Понравился материал? Поделитесь с друзьями!

Автор

Программист с образованием в области IT и опытом разработки на разных языках. Автор статей по программированию. Общий опыт работы в сфере IT и интернета более 5 лет.

Полезные рекомендации

Комментарии

  1. Александр 6 месяцев назад
    Илья, здравствуйте! У меня свой сайт, продаю видео, делал в Dreamweaver. Хочу сделать баланс пользователя, нажал на кнопку и файл скачал, нужно ещё, пополнил баланс и.т.д. Хотел перейти на CMS, но там шаблон, а у меня видео с разных сайтов, я хочу пользователю показать, как выглядел сайт раньше, у них у всех разный дизайн. Что можете посоветовать? Мой сайт - [link] (буду делать апгрейт сайта, но хочу уже учесть все нюансы, нужен профи!)
    • condor 6 месяцев назад
      Александр, здравствуйте. Подобный механизм можно реализовать на любой платформе, на многих есть готовые модули и плагины, например, на WordPress.
      Технически реализация получения файла на скачивание после оплаты, может быть следующей: в базе храним табличку с нужными данными о файлах (в данном случае о видео) и адресами на их скачивание. Допустим: таблица video: id, name, url. Физически файлы хранить в каком-нибудь каталоге /uploads/video. Каждый файл должен быть с уникальным названием, чтобы пользователи не могли догадываться, где физически расположены файлы. На страницах сайта после оплаты с баланса и проверки, что оплата успешно прошла, на кнопках "скачать" делаем ссылку на специальный url, например, /video/download/ID. При переходе на него брать из таблички video адрес к файлу и отдавать на скачивание на уровне скрипта, чтобы пользователь не узнал реальное местоположение файла. Либо можно для каждого пользователя после оплаты генерировать одноразовый уникальный url на скачивание.
  2. Егор 4 месяца назад
    Здравствуйте!
    Подскажите пожалуйста, хочу создать мотивационную платформу для сотрудников. Ставить им задания, за каждое задание они будут получать монетки, которые можно будет тратить на подарки в этом же сервисе. Каким образом это можно осуществить? Дайте пожалуйста вектор, в какую сторону копать, буду разбираться! Спасибо.
    • condor 4 месяца назад
      Егор, здравствуйте!

      Если кратко, то есть несколько вариантов:

      - Поискать готовые мотивационные онлайн-сервисы. Бегло взглянув в поиске, можно найти Work&Play, SailPlay, Motivity. Позволяют устраивать различные конкурсы и задачи, следить за их выполнением и назначать вознаграждение. Возможно есть еще аналогичные. В любом случае, нужно пробовать, чтобы понять, подойдут ли они.

      - Если ни один онлайн-сервис не подошел, то в этом случае заняться разработкой подобной платформы самостоятельно или заказать на фрилансе. В качестве инструмента для быстрой разработки, чтобы сэкономить время, можно использовать какой-нибудь фреймворк, например: Laravel, Yii, Symfony. Подробней в обзоре: http://unetway.com/blog/php-framework-review/ Для внешнего вида также подобрать готовую админку, например, на Bootstrap, Semantic-UI, UIKit, Material UI. Добавить динамичности элементам и разных эффектов, можно также с помощью библиотек: jQuery, ReactJS. Затем по мере необходимости допиливать весь функционал.
  3. Александр 18 дней назад
    Какие есть ограничения на использование данной схемы? Может законодательные ограничения о максимальной хранимой сумме на балансе?
    И с точки зрения безопасности возникают вопросы. Чтобы добавить денег на баланс достаточно добавить запись в таблицу. В случае взлома можно нарисовать какой угодно балан для любого пользователя, который никак не подтвердить
    • condor 17 дней назад
      Александр, ограничения на лимиты хранимой суммы возможно реализовать какие угодно. Допустим, для каждой группы пользователей свои лимиты на пополнение/вывод средств. Законодательные ограничения, тут все как в обычных платежных системах. Для безопасности - логирование операций, все фильтровать, валидировать чтобы извне не могли накрутить. Возможно, опишу в статье про это.
  4. Андрей 10 дней назад
    Илья, как с вами можно связаться?
    • condor 9 дней назад
      Андрей, можете написать на support@unetway,com
Нажмите здесь, чтобы отменить ответ