/api/v2/server-side-api/vc/transactions/ Создать транзакцию виртуальной валюты
Начисляет или списывает одну или несколько виртуальных валют для профиля в рамках одной атомарной транзакции. Используйте положительное значение amount для начисления (зачисления) и отрицательное — для списания (расходования). Все позиции применяются вместе — если какая-либо позиция не проходит, ни одна из них не применяется.
Каждый код валюты может встречаться в запросе только один раз. Начисление через этот эндпоинт всегда создаёт бессрочный баланс.
Header parameters
Уникальный ID пользователя в вашей системе. Необходимо указать либо adapty-customer-user-id, либо adapty-profile-id.
Уникальный ID профиля в вашей системе. Лучший вариант при работе с анонимными профилями. Необходимо указать либо adapty-customer-user-id, либо adapty-profile-id.
UUID v4, обеспечивающий идемпотентность запроса. При повторном запросе с тем же ключом Adapty возвращает результат исходной транзакции, не изменяя балансы повторно. Должен быть валидным UUID v4.
Ключи хранятся до одного часа в рамках одного профиля. По истечении этого времени запрос с тем же ключом применяется как новая транзакция — используйте ключ для безопасного повтора вызова, а не для дедупликации начислений в долгосрочной перспективе.
Request body
Тело запроса для создания транзакции виртуальной валюты.
Корректировки баланса, применяемые атомарно. Каждый код валюты может встречаться только один раз.
Код виртуальной валюты для корректировки.
Сумма для применения. Положительное значение зачисляет (начисляет) валюту; отрицательное значение списывает (тратит) её. Не может быть равно нулю.
Необязательные пары ключ-значение, сохраняемые вместе с транзакцией. Не более 5 ключей. Каждый ключ соответствует шаблону ^[a-z0-9_]{1,30}$, а каждое значение содержит не более 200 символов.
Responses
Транзакция успешно применена
Schema
Результат транзакции виртуальной валюты.
Уникальный идентификатор созданной транзакции.
Баланс после транзакции для каждой валюты, затронутой этим запросом (по одной записи на каждый элемент в items). Чтобы получить полный список балансов для профиля, используйте GET /api/v2/server-side-api/vc/balances/.
Код виртуальной валюты.
Отображаемое название виртуальной валюты.
Общий баланс, включая суммы, находящиеся в удержании.
Сумма всех активных удержаний (зарезервированные суммы). В настоящее время всегда равна 0.
Баланс, доступный для списания, вычисляется как balance - held.
Example
{
"transaction_id": "0190e8a4-1c2b-7def-8abc-2c1a4b6d8e90",
"balances": [
{
"code": "COINS",
"name": "Gold Coins",
"balance": 12950,
"held": 0,
"available": 12950
}
]
} Некорректный запрос. Поле error_code указывает на причину: insufficient_balance, unknown_currency, duplicate_currency, amount_zero, balance_overflow, empty_items или idempotency_key_invalid.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Example
{
"errors": [
{
"source": "currency_code",
"errors": [
"Insufficient balance for currency COINS"
]
}
],
"error_code": "insufficient_balance",
"status_code": 400
} Не авторизован. API-ключ отсутствует или недействителен.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Доступ запрещён. Server API для виртуальных валют не включён для этого приложения. Обратитесь в службу поддержки Adapty для получения доступа.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Example
{
"errors": [
{
"source": null,
"errors": [
"Server API for virtual currencies is not enabled for this app. Contact Adapty support to request access."
]
}
],
"error_code": "feature_not_enabled",
"status_code": 403
} Профиль не найден.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Конфликт. Поле error_code указывает на причину:
idempotency_in_flight— запрос с тем жеIdempotency-Keyвсё ещё обрабатывается. Повторите попытку после интервала, указанного в заголовке ответаRetry-After.duplicate_source_transaction— базовая транзакция стора уже была зачислена, поэтому повторно не применяется.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Example
{
"errors": [
{
"source": null,
"errors": [
"A similar request is being processed."
]
}
],
"error_code": "idempotency_in_flight",
"status_code": 409
} Необрабатываемая сущность. Тело запроса не прошло валидацию схемы — например, items содержит более 20 записей, или ключ либо значение metadata нарушает установленные ограничения.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Слишком много запросов. Превышен лимит запросов для приложения или глобальный лимит (error_code равен rate_limited). Лимиты по умолчанию: 600 запросов в минуту на приложение и 6000 запросов в минуту глобально.
Schema
Источник ошибки
Массив сообщений об ошибках
Краткое название ошибки
HTTP-код статуса
Внутренняя ошибка сервера