Перейти к основному содержимому

История покупок

Для обеих операций необходима авторизованная сессия игрока. Операции охватывают магазин, игровую валюту и игровые услуги, включая бесплатные покупки и оплату с баланса. История платежей запрашивается отдельно.

playerPurchases​

QuerydocumentId: playerPurchasesauth: Bearer session

playerPurchases​

Описание​

Возвращает покупки от новых к старым. Чтобы продолжить список, передайте pageInfo.endCursor в after, сохранив фильтры. После изменения фильтра начинайте с after: null. hasNextPage: false означает конец списка.

Входные данные​

ПолеТипОписание
firstIntОт 1 до 100, по умолчанию 20.
afterIDКурсор предыдущей страницы или null.
kindPlayerPurchaseKindSHOP, GAME_CURRENCY, GAME_SERVICE; null = все типы.
gameServerIdIntID игрового сервера; null = все серверы в истории.

Пример обмена​

Запрос
documentId: playerPurchases
{
"documentId": "playerPurchases",
"variables": {
"first": 20,
"after": null,
"kind": "SHOP",
"gameServerId": 1
}
}
Ответ
200 OK
{
"data": {
"playerPurchases": {
"items": [
{
"id": "d9b29e6b-ce50-4c3b-9de6-a2b2ea2d839d",
"gameServerId": 1,
"kind": "SHOP",
"total": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
},
"createdAt": "2026-09-11 10:15:00",
"status": "PAID",
"recovery": {
"status": "REQUIRES_REVIEW",
"paid": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "USD",
"currencyScale": 2
},
"recovered": {
"units": "2500",
"decimal": "25.00",
"currencyCode": "USD",
"currencyScale": 2
}
}
}
],
"pageInfo": {
"endCursor": null,
"hasNextPage": false
}
}
}
}

playerPurchase​

QuerydocumentId: playerPurchaseauth: Bearer session

playerPurchase​

Описание​

Возвращает карточку покупки: общие сведения, позиции с ценами и состояние каждой награды. Используйте ID заказа из результата оформления или playerPurchases.items[].id.

Входные данные​

ПолеТипОписание
idID!Обязательный ID покупки. Это не ID платежа.

Пример обмена​

Запрос
documentId: playerPurchase
{
"documentId": "playerPurchase",
"variables": {
"id": "d9b29e6b-ce50-4c3b-9de6-a2b2ea2d839d"
}
}
Ответ
200 OK
{
"data": {
"playerPurchase": {
"purchase": {
"id": "d9b29e6b-ce50-4c3b-9de6-a2b2ea2d839d",
"gameServerId": 1,
"kind": "SHOP",
"total": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
},
"createdAt": "2026-09-11 10:15:00",
"status": "PAID",
"recovery": {
"status": "REQUIRES_REVIEW",
"paid": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "USD",
"currencyScale": 2
},
"recovered": {
"units": "2500",
"decimal": "25.00",
"currencyCode": "USD",
"currencyScale": 2
}
}
},
"lines": [
{
"id": "01941f29-7c00-7000-8000-000000000003",
"quantity": "1",
"unitPrice": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
},
"total": {
"units": "10000",
"decimal": "100.00",
"currencyCode": "ELX",
"currencyScale": 2
}
}
],
"rewards": [
{
"id": "01941f29-7c00-7000-8000-000000000004",
"deliveryStatus": "PENDING",
"recovery": "RESTRICTED",
"target": {
"kind": "WAREHOUSE",
"account": null,
"character": null
},
"content": {
"__typename": "PlayerPurchaseItems",
"items": [
{
"itemId": "57",
"quantity": "120",
"enchantLevel": 0
},
{
"itemId": "4037",
"quantity": "2",
"enchantLevel": 0
}
]
}
}
]
}
}
}

Состав ответа​

ПолеСодержание
purchase.idНомер покупки.
purchase.gameServerIdСервер покупки.
purchase.kindSHOP, GAME_CURRENCY, GAME_SERVICE.
purchase.totalИтоговая сумма покупки.
purchase.createdAtДата оформления в UTC.
purchase.statusPENDING_PAYMENT, CONFIRMED, PAID, FULFILLING, FULFILLED, CANCELLED.
purchase.recoveryСведения об обработке возврата; null, если их нет.
lines[]ID позиции, количество, цена единицы и сумма позиции.
rewards[]ID награды, получатель, состав и два отдельных состояния: выдачи и возврата.

Денежные значения передаются без округления: units и decimal являются строками, currencyCode указывает валюту, currencyScale задаёт число знаков после запятой. Количества также передаются строками. Не преобразуйте их в числа с плавающей точкой. Исходный платёж и сумма заказа могут иметь разные валюты.

Возврат покупки​

recovery.statusЗначение
PENDINGВозврат обрабатывается.
REQUIRES_REVIEWПокупка на рассмотрении.
RECOVEREDВозврат обработан; итог указан у наград.
RELEASINGОграничения снимаются.
KEPTПокупка сохранена.
MANUALLY_RESOLVEDРассмотрение завершено вручную.

paid содержит сумму исходного платежа. recovered содержит текущую сумму возврата или проигранного спора в той же валюте. Эти поля не заменяют purchase.total.

Выдача и состояние награды​

deliveryStatus принимает PENDING, DELIVERING, DELIVERED, RETRY_SCHEDULED, REQUIRES_REVIEW, CANCELLED.

rewards[].recoveryЗначение
NONEНет отдельного состояния возврата.
PROCESSINGРезультат обрабатывается.
RESTRICTEDНаграда временно ограничена.
DELIVERY_STOPPEDДальнейшая выдача остановлена.
RECALLEDРанее выданная награда отозвана.
RELEASEDОграничение снято.
NEEDS_REVIEWНеобходимо рассмотрение.

target.kind: WAREHOUSE (склад), GAME_ACCOUNT (игровой аккаунт), CHARACTER (персонаж). account и character равны null, когда для выбранного получателя они не нужны.

Типы содержимого​

В persisted-ответе content.__typename определяет доступные поля:

__typenameПоля
PlayerPurchaseItemsitems[]: itemId: ID!, quantity: String!, enchantLevel: Int!.
PlayerPurchaseCurrencyquantity: String!, itemId: ID, deliveryType: CHARACTER_ITEM | ACCOUNT_POINTS.
PlayerPurchaseGameServicefeatureCode: String!.

При ACCOUNT_POINTS поле itemId равно null. featureCode обозначает заказанную игровую услугу.

Ошибки​

extensions.codeДействие
PLAYER_PURCHASE_NOT_FOUNDОбновите список и проверьте номер покупки.
PLAYER_PURCHASE_INVALID_REQUESTПроверьте параметры; при смене фильтров сбросьте курсор.
PLAYER_PURCHASE_UNAVAILABLEПовторите чтение позже.

Ошибки полей возвращаются в стандартном ответе валидации. Эти операции только читают историю и не оформляют возврат.

Примеры интерфейса.