Оплата размещения из личного кабинета

Друзья всем доброго дня!
Я рассмотрю общий пример, а не конкретно свой проект.
Допустим у нас сайт с досками объявлений. В личном кабинете зарегистрированный пользователь может добавить объявления.
— Задачи -
У каждого пользователя есть свой баланс.
Каждый пользователь может сделать какое то объявление ВИП допустим 10 руб в день.
Каждое обычное объявление съедает с общего баланса допустим 5 рублей в день.
Когда баланс кончается, объявления снимаются с публикации (пишем условие)
Каждый зарегистрированный пользователь может пополнить общий баланс сбербанк, киви, wmr, смс и т.д
Каждый пользователь из личного кабинета может активировать или деактивировать объявление на какой то срок (планировщик?)

Проект не коммерческий и не имеет ничего общего с досками объявлений, я описал функционал который требуется. Аналогия похожа на доски. Дайте совет как реализовать подобные вещи. Возможно есть готовые решения?
Слава
31 января 2017, 12:22
1
857
0

Комментарии: 4

Слава
31 января 2017, 22:39
-3
вобщем никто ничего не знает…
Слава
01 февраля 2017, 16:48
0
Друзья дайте совет неужели нет мыслей?
    Максим Кузнецов
    01 февраля 2017, 16:59
    +2
    Так никто ничего не знает..)

    По факту — внутренний баланс можно реализовать через msProfile, а на событие создания объявления (OnDocFormSave + проверка шаблона/родителя) в плагине проверять сумму на счете, и, при наличии соответствующей суммы, снимать с него. Примерно так:

    //проверки нужного события, шаблона, статуса объявления и тд...
    $user = $modx->getAuthenticatedUser('web');
    $user_id = $user->get('id');
    
    $user_money_profile = $modx->getObject('msCustomerProfile', $user_id);
    $balance = $user_money_profile->get('account');
    $balance = float($balance); 
    
    if ($balance > 5) {
    	$new_balance = $balance - 5;
    	$user_money_profile->set('account', $new_balance);
    	$user_money_profile->save();
    }
    else {
    	//отклоняем объявление и выводим соответствующее сообщение
    }

    Пополнение счета и тд, соответственно, из коробки msProfile.
Игорь
15 марта 2019, 21:13
0
Подскажите нашли решение?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.