Онлайн-дистрибуция Иксолла

О решении

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

Партнеры-дистрибьюторы — цифровые платформы или экосистемы, обладающие своей витриной и биллингом, через которые могут распространяться игры и внутриигровые товары. Примеры партнеров-дистрибьюторов Иксоллы:

  • суперприложения, которые объединяют множество сервисов;
  • банковские приложения;
  • телекоммуникационные и интернет-провайдеры;
  • платежные терминалы;
  • поставщики программ кешбэка и вознаграждений;
  • торговые площадки электронной коммерции.

Преимущества для разработчика игр:

  • Расширение аудитории игр за счет прямого подключения к быстрорастущим партнерам-дистрибьюторам.
  • Увеличение доходов за счет добавления игры в новые каналы дистрибуции с уникальной пользовательской базой.
  • Увеличение органического трафика за счет рекламы и баннеров на сторонних платформах.

Преимущества для партнера-дистрибьютора:

  • Повышение лояльности ваших пользователей за счет расширения доступа к игровому контенту. Пользователи смогут приобретать игровые ключи, виртуальные предметы, виртуальную валюту и бандлы напрямую из приложения или сервиса.
  • Удержание текущих и привлечение новых пользователей за счет растущей популярности игровой индустрии.
  • Увеличение доходов за счет комиссии от продажи игровых ключей, виртуальных предметов и виртуальной валюты крупнейших участников рынка игровой индустрии.

Как это работает

Сценарий пользователя при покупке игровых ключей

Сценарий пользователя при покупке внутриигровых предметов и виртуальной валюты

Сценарий взаимодействия

  1. Разработчик игр создает проект в Личном кабинете и загружает игровые ключи, виртуальные предметы, виртуальную валюту, бандлы.
  2. Партнер-дистрибьютор запрашивает данные пользователя:
    • при продаже игр — email-адрес пользователя, на который будут отправлены ключи и чек;
    • при продаже внутриигровых товаров — ID пользователя в игре, которому будут добавлены товары, и email-адрес пользователя, на который будет отправлен чек.
  3. Пользователь вводит в интерфейсе партнера-дистрибьютора следующие данные:
    • при покупке игр — email-адрес, на который будут отправлены ключи и чек;
    • при покупке внутриигровых товаров — ID в игре для добавления товаров в инвентарь и email-адрес для получения чека.
  4. Партнер-дистрибьютор вызывает метод Создание токена пользователя и передает в параметрах email-адрес (обязательно) и ID пользователя (при продаже виртуальных предметов, виртуальной валюты и бандлов).
  5. Иксолла проверяет существование пользователя в игре, если у разработчика игр настроены вебхуки. Настройка вебхуков для продажи игровых ключей опциональна, для продажи внутриигровых товаров обязательна.
  6. Иксолла создает токен с данными пользователя и отправляет токен партнеру-дистрибьютору.
  7. Партнер-дистрибьютор запрашивает каталог товаров или каталог игр.
  8. Иксолла возвращает в ответе запрашиваемый каталог товаров или каталог игр.
  9. Партнер-дистрибьютор получает каталог и отображает его пользователю.
  10. Пользователь совершает покупку. Партнер-дистрибьютор формирует корзину.
  11. Партнер-дистрибьютор отправляет корзину пользователя для оформления заказа.
  12. Иксолла возвращает идентификатор заказа и стоимость корзины с учетом скидок и налогов.
  13. Партнер-дистрибьютор отображает пользователю итоговую стоимость корзины.
  14. Если пользователь продолжает оплату, партнер-дистрибьютор списывает денежные средства пользователя и отображает страницу со статусом платежа.
  15. Партнер-дистрибьютор оповещает Иксоллу, что заказ оплачен, и передает информацию о платеже.
  16. Иксолла уведомляет разработчика игры о покупке.
  17. Пользователь, купивший игру, получает письмо с деталями покупки на указанный email-адрес и может активировать игровые ключи. Если пользователь купил внутриигровые товары, они будут добавлены в его инвентарь.

Интеграция на стороне разработчика игр

Как подключить Онлайн-дистрибуцию

Чтобы продвигать вашу игру с помощью каналов дистрибуции:

  1. Подключите продукт Магазин в Личном кабинете и загрузите:
  2. Настройте вебхуки.
  3. Обратитесь к вашему персональному менеджеру или напишите на csm@xsolla.com, чтобы активировать Онлайн-дистрибуцию для выбранного вами проекта.

Примечание
Если вы еще не являетесь партнером Иксоллы, но заинтересованы в сотрудничестве и подключении Онлайн-дистрибуции, напишите на business@xsolla.com.

Как настроить вебхуки

Настройка вебхуков необходима:

Для настройки вебхуков:

  1. Откройте ваш проект в Личном кабинете.
  2. Нажмите Настройки проекта в боковом меню и перейдите в раздел Вебхуки.
  3. Установите переключатель Вебхуки в положение Вкл.
  4. Укажите URL-адрес, на который вы хотите получать вебхуки.
  5. Секретный ключ проекта для подписи вебхуков генерируется по умолчанию. Если вы хотите изменить его, нажмите значок обновления.
  6. Нажмите Сохранить настройки.

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

Проверка существования пользователя

Иксолла отправляет вебхук Проверка существования пользователя, чтобы удостовериться, что данный пользователь существует в игре. Валидация пользователя позволяет:

  • отобразить персонализированный каталог товаров для пользователя, если в ответе вы передадите атрибуты пользователя;
  • добавить товары в инвентарь пользователя после покупки.

Чтобы подтвердить получение вебхука, ваш сервер должен вернуть:

  • 204 HTTP-код без тела сообщения в случае успешного ответа, если пользователь существует в игре;
  • 400 HTTP-код с описанием проблемы, если указанный пользователь не был найден или если передана недействительная подпись.

Полный список и механизм работы вебхуков с примерами обработки подробно описан в справочнике API.

В ответе вы можете передать дополнительные параметры транзакции в объекте custom_parameters.

Copy
Full screen
Small screen

    {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "user_attributes": {
        "type": "object",
        "required": false,
        "minProperties": 1,
        "maxProperties": 100,
        "patternProperties": {
          "^[\\w-_.]{1,255}$": {
            "oneOf": [
              {
                "type": "integer"
              },
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 255
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "maxLength": 255
                },
                "minItems": 1,
                "maxItems": 1000
              }
            ]
          }
        },
        "additionalProperties": false
      }
    }
    }

    Пример ответа:

    Copy
    Full screen
    Small screen

    {
      "user_attributes": {
        "age": 18,
        "level": 1,
        "game": "WoW",
        "is_baned": false,
        "registration_date": "2022-01-01"
      }
    }

    Связывание ID транзакций

    Если вы используете внешний ID (ID транзакции в вашей системе) и хотите связать его с ID транзакции на стороне Иксоллы или хотите передать дополнительные параметры пользователя, реализуйте обработку следующего вебхука:

    Copy
    Full screen
    Small screen

      {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notification_type": {
            "type": "string"
          },
          "order_id": {
            "type": "integer"
          },
          "project_id": {
            "type": "integer"
          },
          "user": {
            "type": "object",
            "properties": {
              "external_id": {
                "type": "string"
              },
              "email": {
                "type": "string"
              }
            }
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item_id": {
                  "type": "integer"
                },
                "sku":  {
                  "type": "string"
                },
                "quantity": {
                  "type": "integer"
                },
                "type": {
                  "type": "string"
                }
              }
            }
          }
        }
      }

      Пример запроса:

      Copy
      Full screen
      Small screen

      {
        "notification_type": "create_external_transaction",
        "order_id": 1,
        "project_id": 51336,
        "user": {
          "external_id": "user_id",
          "email": "public_email@test.com"
        },
        "items": [
          {
            "item_id": 101,
            "sku": "mithril_dagger",
            "quantity": 2,
            "type": "virtual_good"
          }
        ]
      }

      В ответе вы можете передать дополнительные параметры транзакции в объекте custom_parameters.

      Ожидаемый ответ:

      Copy
      Full screen
      Small screen

        {
          "id": "validation_transaction_info_response.json",
         "$schema": "http://json-schema.org/draft-07/schema#",
         "description": "DDH Project Transaction Info Response",
         "type": "object",
         "additionalProperties": true,
         "properties": {
           "id": {
             "type": "string",
             "minLength": 1
           },
          "custom_parameters": {
             "type": "object",
             "additionalProperties": true,
             "minProperties": 1,
             "maxProperties": 200
           }
         }
        }

        Пример ответа:

        Copy
        Full screen
        Small screen

        {
            "id":"123"
        }

        Список параметров вебхука для связывания ID транзакций:

        ПараметрТипОписание
        notification_type
        stringТип оповещения.
        order_id
        integerID заказа.
        project_id
        integerID проекта, в который загружены игровые ключи или бандлы с игровыми ключами, внутриигровые товары или бандлы с товарами.
        user.external_id
        stringID пользователя на стороне разработчика игр.
        items
        stringСписок предметов, которые купил пользователь.
        items.sku
        arrayУникальный ID предмета. Для предметов с типом game_key используется значение в формате sku_drm.
        items.type
        arrayТип предмета. Может принимать значения virtual_good, virtual_currency, game_key, physical_good.
        items.quantity
        integerКоличество предметов.

        Оповещение о совершении покупки

        После того как пользователь оплачивает покупку, вы получаете:

        Интеграция на стороне партнера-дистрибьютора

        Если вы заинтересованы в интеграции Онлайн-дистрибуции, напишите на psbusiness@xsolla.com для связи с менеджером и получения обязательных параметров для работы с методами Digital Distribution Hub API:

        Примечание
        Для партнеров-дистрибьюторов не требуется создавать аккаунт в Личном кабинете для работы с Digital Distribution Hub API. Создание аккаунта в Личном кабинете необходимо для разработчиков игр для работы с методами API для продажи игровых ключей и внутриигровых товаров.

        Чтобы распространять игры и внутриигровые товары в вашем приложении или сервисе, реализуйте следующую логику их покупки:

        1. Отобразите форму для ввода:
          • email-адреса пользователя — при продаже игр;
          • email-адреса и ID пользователя в игре — при продаже внутриигровых товаров.

        Примечание
        Поле ввода email-адреса должно быть обязательным при продаже игр и при продаже внутриигровых товаров. На указанный email-адрес Иксолла отправляет пользователю чек с информацией о платеже.

        1. ID пользователя в игре используется для проектов, которые продают виртуальные предметы, валюту и бандлы с предметами и валютой. В этом случае также необходимо отобразить подсказку для пользователя о необходимости ввода ID, который он получил при регистрации в игре.

        1. Пример:

        1. Передайте полученные данные пользователя:
          • Email-адрес пользователя. Обязателен всегда.
          • ID пользователя в игре. Обязателен при продаже внутриигровых товаров.

        1. Данные используются для проверки существования этого пользователя в игре и получения авторизационного токена.

        1. Используйте метод Создание токена пользователя. В запросе передайте параметры:

        ПараметрТипОписание
        project_id
        integerID проекта, в который загружены игровые ключи или бандлы с игровыми ключами, внутриигровые товары или бандлы с товарами.
        user.email
        stringEmail-адрес пользователя.
        user.id
        string or nullУникальный ID пользователя в игре.

        1. В ответе вернется авторизационный токен с данными пользователя.

        1. Импортируйте:

        1. В запросе передайте токен, полученный шаге 2, и следующий параметр:

        ПараметрТипОписание
        project_id
        integerID проекта, в который загружены игровые ключи или бандлы с игровыми ключами, внутриигровые товары или бандлы с товарами.

        1. Отобразите каталог игр и товаров на своей витрине. В интерфейсе реализуйте возможность для выбора:
          • количества игровых ключей и платформы публикации игры;
          • количества виртуальных предметов;
          • количества виртуальной валюты или пакетов виртуальной валюты с фиксированным количеством валюты;
          • количества бандлов.

        1. Если вы используете корзину, количество товара может быть указано в корзине пользователя. Если вы не используете корзину, выбор количества товара может быть реализован в каталоге.

        1. Пример для указания количества товаров в корзине:

        1. Пример для указания количества товаров в каталоге:

        1. Если вы не используете корзину, перейдите к шагу 6 и используйте метод Создание заказа с указанным предметом.

        1. Для наполнения корзины используйте метод Наполнение корзины предметами.

        1. Пользователь может добавлять и убирать товары, изменять их количество в одном заказе. Для обновления корзины вы можете использовать:

        1. В этом случае после обновления корзины воспользуйтесь методом Получение корзины текущего пользователя.

        1. В запросах методов наполнения и обновления корзины передайте следующие параметры:

        ПараметрТипОписание
        project_id
        integerID проекта, в который загружены игровые ключи или бандлы с игровыми ключами, внутриигровые товары или бандлы с товарами.
        items.sku
        stringУникальный ID предмета. Для предметов с типом game_key используется значение в формате sku_drm.
        items.quantity
        integerКоличество предметов.

        1. После вызова метода Наполнение корзины предметами или метода Получение корзины текущего пользователя в ответе вернется текущая информация о выбранных товарах — цены до и после применения скидок, бонусные товары.

        1. Для создания заказа и покупки корзины используйте метод Создание заказа со всеми предметами из текущей корзины. В запросе передайте следующие параметры:

        ПараметрТипОписание
        project_id
        integerID проекта, в который загружены игровые ключи или бандлы с игровыми ключами, внутриигровые товары или бандлы с товарами.
        geotype
        numberID партнера-дистрибьютора на стороне Иксоллы.
        currency
        stringВалюта платежа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

        1. В ответе вернется ID заказа и стоимость корзины с учетом налогов.

        Примечание
        Вы можете использовать метод Создание заказа с указанным предметом, который позволяет создать заказ без создания корзины. В этом случае пользователь может купить только один тип товара.

        1. Отобразите пользователю итоговую стоимость корзины.
        2. Осуществите списание денежных средств пользователя внутри вашей платформы. Отобразите пользователю статус платежа.
        3. Отправьте уведомление об успешной оплате и в запросе передайте следующие параметры:

        ПараметрТипОписание
        project_id
        integerID проекта, в который загружены игровые ключи или бандлы с игровыми ключами, внутриигровые товары или бандлы с товарами.
        payment.amount
        integerСумма платежа.
        order_id
        integerID заказа.
        ps_transaction_id
        stringID транзакции на стороне партнера-дистрибьютора.
        Примечание
        Если платеж не был выполнен или был оформлен возврат, отправьте уведомление об отмене платежа.
        Была ли статья полезна?
        Спасибо!
        Что может сделать страницу еще лучше? Сообщение
        Жаль, что так произошло
        Расскажите, почему статья не была полезна. Сообщение
        Спасибо за обратную связь!
        Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
        Оценить страницу
        Оценить страницу
        Что может сделать страницу еще лучше?

        В другой раз

        Спасибо за обратную связь!
        Последнее обновление: 30 августа 2023

        Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.