Содержание
Биллинг 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, то выплату получит только пользователь непосредственно пригласивший данного реферала на сайт |
