Содержание
Биллинг API: Баланс
Получение баланса пользователя
Баланс каждого пользователя хранится в поле balance
стандартной таблицы users
.
Поэтому получить баланс текущего авторизованного пользователя можно с помощью объекта $user
:
$user = cmsUser::getInstance(); echo $user->balance;
либо с помощью статичного метода get()
класса cmsUser
:
cmsUser::get('balance');
Получить баланс другого пользователя можно двумя способами.
1. Получив пользователя из модели контроллера users
:
$user = cmsCore::getModel('users')->getUser( $user_id ); echo $user['balance'];
2. Получив баланс из модели биллинга:
$balance = cmsCore::getModel('billing')->getUserBalance( $user_id );
Пополнение и списание с баланса
Баланс можно изменять как одному пользователю за раз, так и целой группе:
$billing->changeBalance($mode, $subject_id, $amount, $description, $action_id);
Параметры метода changeBalance()
:
Параметр | Обязателен | Возможные значения | Описание |
---|---|---|---|
$mode | Да | user или group | Определяет чей баланс изменяется - пользователя или группы |
$subject_id | Да | число (int) | ID пользователя или группы (получателя) |
$amount | Да | число (float) | Сумма во внутренней валюте, зачисляемая на баланс. Может быть отрицательной |
$description | Да | строка или массив | Содержит описание операции, которое будет отображаться в истории операций каждого пользователя, затронутого данным изменением баланса. Вместо строки можно передать массив с элементами text (описание операции) и url (ссылка на страницу, связанную с операцией). |
$action_id | Нет | число (int) | ID действия в Биллинге (id нужной записи из таблицы cms_billing_actions) |
Для изменения баланса одному пользователю существуют сокращенные варианты этого метода.
Пополнение баланса:
$billing->incrementUserBalance($user_id, $amount, $description, $action_id);
Списание с баланса:
$billing->decrementUserBalance($user_id, $amount, $description, $action_id);
где $user_id
– ID целевого пользователя. Значение $amount
в обоих случаях указывается положительным.
Начисление реферального вознаграждения
При пополнении баланса методами, описанными выше, не происходит автоматическое начисление реферальных вознаграждений.
Для их начисления используется метод:
$billing->payRefBonus($amount, $is_deposit, $user_id, $max_level);
Параметры метода payRefBonus()
:
Параметр | Обязателен | Возможные значения | Описание |
---|---|---|---|
$amount | Да | число (float) | Исходная сумма дохода, из которой будут начисляться реферальные вознаграждения |
$is_deposit | Нет | true или false | Флаг, показывающий является ли данная сумма зачисленной за реальные деньги. Если false, то реферальное вознаграждение будет начислено только если опция «Выплачивать вознаграждения за» в настройках биллинга содержит значение «Любой доход реферала». |
$user_id | Нет | число (int) или false | ID реферала. Если false, будет использован ID текущего авторизованного пользователя |
$max_level | Нет | число (int) или false | Максимальный уровень выплаты. Позволяет ограничить выплату вознаграждений по удаленности пригласивших от реферала. Например, если указать 1, то выплату получит только пользователь непосредственно пригласивший данного реферала на сайт |