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 и опытом программирования на разных языках. Автор многочисленных статей по программированию.

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

Комментарии

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

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

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

      - Если ни один онлайн-сервис не подошел, то в этом случае заняться разработкой подобной платформы самостоятельно или заказать на фрилансе. В качестве инструмента для быстрой разработки, чтобы сэкономить время, можно использовать какой-нибудь фреймворк, например: Laravel, Yii, Symfony. Подробней в обзоре: http://unetway.com/blog/php-framework-review/ Для внешнего вида также подобрать готовую админку, например, на Bootstrap, Semantic-UI, UIKit, Material UI. Добавить динамичности элементам и разных эффектов, можно также с помощью библиотек: jQuery, ReactJS. Затем по мере необходимости допиливать весь функционал.
Нажмите здесь, чтобы отменить ответ