Перейти к содержанию

Подключение Market MY.GAMES🔗

overall-view

Market MY.GAMES - платежная система, которая позволяет принимать платежи через веб-интерфейс (банковские карты, СБП, терминалы оплаты, и др). Проект может подключить данную систему:

  • через веб-сайт (Top-Up) - тогда пользователь сможет заплатить через сайт, и получить товар в клиенте игры. Начисление происходит либо по MyGamesUserId (В случае, если проект может синхронизировать прогресс между мобильной и десктоп игрой через MyGames аккаунт, то, получается, пользователь мобильного проекта может купить внутриигровые товары через market.my.games), либо по игровому userId. Плюсы для проекта: Дополнительная точка, где пользователь может купить товары и Уменьшенная комиссия на покупку, выгода для пользователя и бОльшая прибыль для проекта.
  • через мобильный интерфейс - в случае, если вы распространяете приложение вне магазинов приложений (AppStore/GooglePlay/Huawei AppTouch и др.), Market MY.GAMES может служить способом оплаты товаров в мобильном приложении по стандартной схеме - загружается список продуктов через API, приложение отображает их пользователю, и по нажатию на продукт открывается окно оплаты.

Внимание!

Не стоит использовать мобильный Market MY.GAMES в магазинах которые явно запрещают использовать дополнительный платежные системы (все магазины приложений на текущий момент) так как это может привести к блокировке аккаунта и удалению приложения из магазина.

При использовании Top-Up желательно, чтобы продукт был кроссплатформенным (имеет сборку для PC/Web/etc.). Размещать информацию о Top-Up в интерфейсе приложения или в социальных сетях рекомендуется после консультации с компетентными лицами, так как существуют некоторые ограничения.

Warning

При использовании мобильного Market MY.GAMES в GooglePlay необходимо убедиться, что регион пользователя - РФ. Для этого можно получить список продуктов из GooglePlay, и проверить, что валюта равна рублям.

Начало работы🔗

Для того, чтобы начать пользоваться Market MY.GAMES на вебе или на мобильном клиенте, на market.my.games необходимо по аналогии с другими магазинами:

  • Создать проект
  • Завести список товаров, добавить описания и цены для разных регионов
  • Добавить платежную информацию (merchantId - идентификатор получателя в платежной системе)
  • При заведении проекта добавить mrgs appId к проекту на маркете

По поводу создания проекта, добавления товаров, merchantId и настройке - необходимо обратиться к Антону Астафурову или к Toan Tran

Настройка MRGS🔗

Механизм работает аналогично покупкам в любом мобильном магазине через модуль MRGSBank. Для его настройки необходимо:

  1. Предупредить коллег из Market MY.GAMES при настройке проекта на маркете что вы хотите работать через MRGS, передать им mrgs appId
  2. Поддержать модуль MRGSBank (как минимум серверную часть).
  3. Добавить на сайт MRGS товары, заведенные вами на market.my.games.

Работа с приемом платежей из мобильного приложения🔗

Поддерживаются на iOS и Android. В любом из случаев используется стандартный подход для мобильных платежей в MRGSBank - загрузка товаров(загружаются с сайта market.my.games), отображение(средствами приложения), вызов метода покупки при нажатии, получение колбека.

Вы можете работать с платежами с помощью нового класса, или выставления типа биллинга на старте приложения:

Работа через класс MRGSMyGamesBank🔗

Для работы с платежами вам необходимо использовать новый класс в MRGSBank модуле:

MRGSMyGamesBank.getInstance()
[MRGSMyGamesBank sharedInstance];
MRGSMyGamesBilling.getInstance()

Данный класс реализует интерфейс MRGSBilling/MRGSBank а следовательно они работают точно так же, поэтому можно обратиться к документации по работе MRGSBank API.

Указание биллинга на старте приложения🔗

Также, поддерживается выставление типа биллинга при старте:

using MRGS;

public class MasterController : MonoBehaviour
{
    void Awake()
    {
        MRGServiceParams serviceParams = MRGServiceParams.initWithAppId(appId: APP_ID, appSecret: APP_SECRET);
        //Настройка параметров MRGS
        // ...

        //Включение работы с MyGamesBank через класс MRGSBank
        serviceParams.BankSubstitution = BankSubstitution.MyGames;

        //Настройка Внешних SDK и инициализация MRGS
        // ...
    }
}
// MRGService settings
MRGServiceParams *mrgsParams = [[MRGServiceParams alloc] initWithAppId: <MRGS_APP_ID> secret: <CLIENT_SECRET>];
mrgsParams.forceMyGamesBankOnly = YES; // Включение работы с MyGamesBank через класс MRGSBank

// Дальнейшая настройка и инициализация MRGS
// ...
public class YourApplicationClass extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        //Укажите основные настройки MRGS
        Bundle settings = new Bundle();
        //Укажите тип магазина. 
        //возможны варианты: google, amazon, samsung, huawei, facebook-cloud
        settings.putString("useMyGamesBillingOnly", "true");

        //Укажите дополнительные параметры
        Bundle externalSdk = new Bundle();
        //...

        MRGService.service(context, null, MRGS_APP_ID, CLIENT_SECRET, settings, externalSdk);
    }
}

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

Нюансы по работе с платежами🔗

На текущий момент поддерживаются только consumable платежи, подписки будут поддержаны в следующей итерации на сервере.

Установка делегата и проверка доступности🔗

Данный пункт ни чем не отличается от Установка делегата и проверка доступности. Разница лишь в там, что на клиенте нет возможности определить, действительно ли Market MY.GAMES был настроен и доступен для совершения платежей. Потому в делегат всегда будет приходить true.

Получение информации о доступных продуктах🔗

Данный пункт ни чем не отличается от Получение информации о доступных продуктах.

Продукты будут загружены с сайта market.my.games, то есть те, которые вы заводили при настройке проекта на маркете.

Проведение платежа🔗

Данный пункт ни чем не отличается от Проведение платежа, делегаты поддержаны.

Восстановление покупок🔗

Данный механизм отсутствует в Market MY.GAMES на текущий момент.

Проведение тестовых платежей🔗

Тестовые платежи временно не поддерживаются. Можно временно завести товары стоимостью 1р.-3р. чтобы на них проверить работу платежной системы и убедиться в правильности интеграции.

Внимание!

Некоторые банки не поддерживают платежи ниже , и вы можете видеть ошибку при попытке купить подобные товары.

Работа с приемом платежей из web (Top-Up)🔗

Схема работы🔗

Данный механизм работает по схеме:

  1. Пользователь (авторизованный под учетной записью MyGames (на текущий момент это необходимо, в будущем планируется это убрать)) заходит на сайт market.my.games
  2. Выбирает интересующий его проект и товар из списка
  3. Указывает аккаунт в проекте и платформу, на которую хочет купить (iOS/Android и тд.)
    1. В случае, если проект размещен в Игровом центре MyGames, то данный шаг не нужен, и выдача товара будет происходить по MyGamesUserId пользователя. Это настраивается на Market MY.GAMES.
    2. В случае, если проект мобильный, пользователь должен выбрать платформу и вручную ввести свой игровой userId (который он должен иметь возможность увидеть в интерфейсе игры, также на Market MY.GAMES можно добавить подсказку того, где искать данный идентификатор в интерфейсе), затем введенный userId валидируется (либо через MRGS, либо напрямую от проекта по API)
    3. В случае, если проект мобильный, но поддерживает авторизацию MyGames, то пользователю будет автоматически предложен список его аккаунтов в игре (игровой userId по MyGamesUserId получается либо из MRGS, либо напрямую от проекта по API), или возможность ввести его вручную (пункт выше)
  4. Производит оплату товара
  5. Проект получает S2S уведомление о покупке и начисляет товар

Выдача товара пользователю может осуществляться как по MyGamesUserId (например, в случае, если приложение выкладывается в Игровой центр MyGames, у пользователя всегда будет связка с аккаунтом MyGames), так и по игровому userId.

Техническая схема интеграции🔗

Существует два вида интеграции:

  • Через MRGS
  • Напрямую с API Market MY.GAMES

Через MRGS🔗

Данный механизм работает через платежи MRGSBank - после того, как пользователь покупает товар с определенным идентификатором, Market MY.GAMES отправляет событие покупки в MRGS, а MRGS сообщает об этом проекту по стандартному S2S API для получения пингбеков о платежах. Так как механизм работает только для S2s, то для реализации платежей через market.my.games не обязателен модуль MRGSBank на клиенте, а также неважно, в каком магазине выпускается игра, работает игра через эмуляцию Steam на десктопе или нет.

В случае работы через MRGS, проект должен поддержать на сервере проекта механизм платежей MRGSBank и настроить MRGS в соответствии с инструкцией выше.

Идентификаторы товаров в MRGS и Market MY.GAMES

Важно, чтобы идентификаторы товаров (sku/productId) в MRGS совпадали с идентификаторами товаров на Market MY.GAMES.

При работе MRGS автоматически:

  • Провалидирует аккаунт пользователя (введенный userId действительно существует) на основе данных переданных в MRGSUsers.SetUserId
  • Передаст список аккаунтов пользователя по его MyGamesId (в случае, если проект использует модуль авторизации MRGS для MyGames)
  • Передаст проекту информацию о купленном товаре в виде платежа на сервер проекта (если проект не имеет сервера, данные о платеже придут в ServerData, подробнее смотрите в документации по MRGSBank)

Что делать, если у проекта сложный/длинный userId, или идентификаторы разделены на публичные и приватные, и в MRGS проект передает приватные?

В случае, если проект хочет работать через MRGS, но сделать так, чтобы пользователь вводил на сайте Market MY.GAMES userId отличный от передаваемого в MRGS через MRGSUsers.SetUserId (например, показать пользователю сокращенный "красивый" идентификатор, или публичный идентификатор) - необходимо поддержать API Market MY.GAMES для трансляции введенного userId во внутренний userId. В таком случае необходимо отдать маркету внутренний id пользователя по его введенному внешнему id.

Данный механизм опционален, и при желании его использования необходимо сообщить об этом команде Market MY.GAMES при настройке проекта.

Напрямую с API Market MY.GAMES🔗

В таком случае проект должен подержать API Market MY.GAMES:

  • Метод валидации (проверки наличия) аккаунта пользователя (введенный userId действительно существует)
  • Метод получения списка аккаунтов пользователя по его MyGamesId (опционально, если авторизация поддерживается проектом)
  • Метод выдачи товара пользователю после оплаты

Документацию по API Market MY.GAMES можно найти здесь


Последнее обновление: 2025-01-21
Дата создания: 2022-03-10