Баланс виртуальной валюты

Основная статья: Виртуальные валюты

В каждом профиле пользователя в Profiles/CRM отображается баланс виртуальной валюты и история всех изменений.

Просмотр балансов в профиле пользователя

Страница профиля пользователя с карточкой виртуальной валюты, где перечислены балансы пользователя

Откройте профиль пользователя. Карточка Virtual currency отображает все валюты, которыми владеет пользователь.

Каждая строка содержит:

  • Код валюты, например COINS.
  • Текущий баланс в виде целого числа.

Балансы обновляются по мере того, как пользователь зарабатывает, тратит или получает кредиты. Баланс не может опуститься ниже 0: транзакция, пытающаяся потратить больше, чем есть у пользователя, завершается ошибкой insufficient_balance и ничего не меняет. У профиля без балансов отображается пустая карточка.

Чтобы считать баланс из собственного кода, вызовите List virtual currency balances в серверном API.

Просмотр изменений баланса в истории событий

Каждое изменение баланса отображается в истории событий профиля, начиная с самого последнего. Каждая запись содержит название изменения и перечень затронутых валют.

В истории отображается три типа событий виртуальной валюты:

  • Virtual currency credited: покупка, продление или начало пробного периода начислили кредиты.
  • Virtual currency transaction: серверный вызов API пополнил или списал баланс.
  • Virtual currency expired: срочные кредиты обнулились в конце расчётного периода или после окончания подписки.

Для каждой изменённой валюты в записи указывается:

  • Virtual currency: Название и код валюты, например Gold Coins (COINS).
  • Amount: Изменение со знаком — положительное для пополнения, отрицательное для списания.
  • Balance after: Баланс валюты после применения изменения.

Одно событие может изменить несколько валют одновременно — например, одна транзакция списывает одну валюту и пополняет другую для конвертации между ними.

Балансы, профили и устройства

Баланс всегда принадлежит ровно одному профилю и никогда не переходит к другому. Adapty не делится балансами между профилями и не переносит их — в отличие от возможности делиться уровнями доступа между аккаунтами.

На практике это означает:

  • Идентифицированные пользователи: идентификатор пользователя всегда указывает на один и тот же профиль, поэтому пользователь видит одинаковый баланс на каждом устройстве, где выполнен вход.
  • Анонимные пользователи: анонимный профиль может накапливать и тратить кредиты, но существует только на одном устройстве. Когда тот же пользователь открывает приложение на другом устройстве без входа в систему, Adapty создаёт новый анонимный профиль с нулевым балансом.

Чтобы запустить систему виртуальной валюты на разных устройствах, идентифицируйте пользователей. Это можно сделать в коде приложения через SDK (см. Идентификация пользователей в быстром старте) или на стороне бэкенда через серверный API.

Позднее определение пользователя имеет свою особенность: если пользователь получает кредиты анонимно, а затем входит с customer user ID, который уже принадлежит другому профилю, устройство переключится на тот профиль с его балансом. Кредиты, накопленные анонимно, останутся на старом профиле и станут недоступны. Если customer user ID новый, он привязывается к текущему профилю, и пользователь сохраняет баланс. Для надёжности идентифицируйте пользователей до того, как они смогут зарабатывать или покупать кредиты.

В вызовах server-side API идентифицируйте профиль с помощью заголовка adapty-profile-id или adapty-customer-user-id — оба указывают на один профиль. Для анонимных профилей используйте adapty-profile-id.