При создании сайта, а в особенности интернет-магазина, у многих возникает вопрос: как создать личный счет или баланс пользователя? Чтобы при регистрации на сайте, пользователь автоматически имел в своем аккаунте личный счет, который он может пополнять для оплаты каких-либо товаров или услуг.
Давайте рассмотрим, как сделать такую возможность на своем сайте.
Итак, дана задача, добавить на сайт:
- функцию баланса в личный кабинет пользователя
- изменение баланса пользователя администратором сайта
- возможность пополнения пользователем баланса
- оплату товаров или услуг через баланс
- запись списка оплаченных счетов в личный кабинет пользователя.
Для начала определим, на какой платформе у вас сайт или интернет-магазин.
Сайт на конструкторе сайтов
Создать баланс пользователя на сайте построенном в конструкторе сайтов возможно, но все зависит от используемой платформы. Если в конструкторе сайтов, который вы используете, уже есть какое-нибудь готовое приложение или модуль баланса и счетов, которые можно установить, то это очень хорошо. Если готовых решений нет, то вам придется их создавать самостоятельно - писать специальный компонент или простой скрипт, если конечно же, конструктор сайтов позволяет их установить и использовать.
Система управления контентом (CMS)
Как и в случае с конструктором сайтов, в системе управления контентом вы можете использовать уже готовые модули или плагины. Если готовых нет, то их можно написать. В отличие от конструкторов сайтов, создать свой плагин или компонент можно практически в любой CMS.
Фреймворк или самописный сайт
Для сайтов построенных на базе фреймворков можно поискать готовые модули на Github и установить через Composer или подключить самому вручную. Фреймворк ничем не ограничивает вас для создания модуля баланса пользователя. Самописный сайт - созданный вами без всяких вспомогательных инструментов, библиотек, фреймворков также не налагает ограничений по созданию баланса в личном кабинете.
Вот мы и рассмотрели, на какой платформе может быть построен сайт. Теперь перейдем непосредственно к рассмотрению создания баланса в личном кабинете.
Создание баланса в личном кабинете
Пользователи сайта или клиенты интернет-магазина обычно хранятся в какой-нибудь таблице базы данных с названием users, user, clients и т.п.
Баланс - представляет собой ячейку, в которой хранится числовое значение количества денежных средств пользователя.
Для хранения баланса в таблице users можно добавить поле balance с типом integer или float.
Наименование | Описание |
user_id | id пользователя |
login | логин пользователя |
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 купленного товара |
Спасибо, сделал личный кабинет с балансом как описано в статье. Все работает нормально)
Здравствуйте! Помогите реализовать эту идею на моём сайте, пожалуйста! Я только учусь.. Буду очень благодарен..
На любой cms, на том же вордпрессе, куча плагинов, но они какие-то недоделанные. Самому писать сложно очень. Поэтому приходится пользоваться тем что есть и костыли разные.
Готовых решений личного счета или баланса очень мало. Поэтому приходится самому писать личный кабинет. А многие плагины просто фигня что находил.
Илья, как с вами можно связаться?
Андрей, можете написать на support@unetway,com
Какие есть ограничения на использование данной схемы? Может законодательные ограничения о максимальной хранимой сумме на балансе? И с точки зрения безопасности возникают вопросы. Чтобы добавить денег на баланс достаточно добавить запись в таблицу. В случае взлома можно нарисовать какой угодно балан для любого пользователя, который никак не подтвердить
Александр, ограничения на лимиты хранимой суммы возможно реализовать какие угодно. Допустим, для каждой группы пользователей свои лимиты на пополнение/вывод средств. Законодательные ограничения, тут все как в обычных платежных системах. Для безопасности - логирование операций, все фильтровать, валидировать чтобы извне не могли накрутить. Возможно, опишу в статье про это.
Здравствуйте! Подскажите пожалуйста, хочу создать мотивационную платформу для сотрудников. Ставить им задания, за каждое задание они будут получать монетки, которые можно будет тратить на подарки в этом же сервисе. Каким образом это можно осуществить? Дайте пожалуйста вектор, в какую сторону копать, буду разбираться! Спасибо.
Егор, здравствуйте! Если кратко, то есть несколько вариантов: - Поискать готовые мотивационные онлайн-сервисы. Бегло взглянув в поиске, можно найти Work&Play, SailPlay, Motivity. Позволяют устраивать различные конкурсы и задачи, следить за их выполнением и назначать вознаграждение. Возможно есть еще аналогичные. В любом случае, нужно пробовать, чтобы понять, подойдут ли они. - Если ни один онлайн-сервис не подошел, то в этом случае заняться разработкой подобной платформы самостоятельно или заказать на фрилансе. В качестве инструмента для быстрой разработки, чтобы сэкономить время, можно использовать какой-нибудь фреймворк, например: Laravel, Yii, Symfony. Подробней в обзоре: http://unetway.com/blog/php-framework-review/ Для внешнего вида также подобрать готовую админку, например, на Bootstrap, Semantic-UI, UIKit, Material UI. Добавить динамичности элементам и разных эффектов, можно также с помощью библиотек: jQuery, ReactJS. Затем по мере необходимости допиливать весь функционал.
Илья, здравствуйте! У меня свой сайт, продаю видео, делал в Dreamweaver. Хочу сделать баланс пользователя, нажал на кнопку и файл скачал, нужно ещё, пополнил баланс и.т.д. Хотел перейти на CMS, но там шаблон, а у меня видео с разных сайтов, я хочу пользователю показать, как выглядел сайт раньше, у них у всех разный дизайн. Что можете посоветовать? Мой сайт - [link] (буду делать апгрейт сайта, но хочу уже учесть все нюансы, нужен профи!)
Александр, здравствуйте. Подобный механизм можно реализовать на любой платформе, на многих есть готовые модули и плагины, например, на WordPress. Технически реализация получения файла на скачивание после оплаты, может быть следующей: в базе храним табличку с нужными данными о файлах (в данном случае о видео) и адресами на их скачивание. Допустим: таблица video: id, name, url. Физически файлы хранить в каком-нибудь каталоге /uploads/video. Каждый файл должен быть с уникальным названием, чтобы пользователи не могли догадываться, где физически расположены файлы. На страницах сайта после оплаты с баланса и проверки, что оплата успешно прошла, на кнопках "скачать" делаем ссылку на специальный url, например, /video/download/ID. При переходе на него брать из таблички video адрес к файлу и отдавать на скачивание на уровне скрипта, чтобы пользователь не узнал реальное местоположение файла. Либо можно для каждого пользователя после оплаты генерировать одноразовый уникальный url на скачивание.