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

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. Для его настройки необходимо:
- Предупредить коллег из
Market MY.GAMESпри настройке проекта на маркете что вы хотите работать через MRGS, передать имmrgs appId - Поддержать модуль MRGSBank (как минимум серверную часть).
- Добавить на сайт MRGS товары, заведенные вами на market.my.games.
Работа с приемом платежей из мобильного приложения🔗
Поддерживаются на iOS и Android. В любом из случаев используется стандартный подход для мобильных платежей в MRGSBank - загрузка товаров(загружаются с сайта market.my.games), отображение(средствами приложения), вызов метода покупки при нажатии, получение колбека.
Вы можете работать с платежами с помощью нового класса, или выставления типа биллинга на старте приложения:
Работа через класс MRGSMyGamesBank🔗
Для работы с платежами вам необходимо использовать новый класс в MRGSBank модуле:
Данный класс реализует интерфейс 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
// ...
}
}
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р. чтобы на них проверить работу платежной системы и убедиться в правильности интеграции.
Внимание!
Некоторые банки не поддерживают платежи ниже 3р, и вы можете видеть ошибку при попытке купить подобные товары.
Работа с приемом платежей из web (Top-Up)🔗
Схема работы🔗
Данный механизм работает по схеме:
- Пользователь (авторизованный под учетной записью MyGames (на текущий момент это необходимо, в будущем планируется это убрать)) заходит на сайт market.my.games
- Выбирает интересующий его проект и товар из списка
- Указывает аккаунт в проекте и платформу, на которую хочет купить (iOS/Android и тд.)
- В случае, если проект размещен в Игровом центре MyGames, то данный шаг не нужен, и выдача товара будет происходить по MyGamesUserId пользователя. Это настраивается на
Market MY.GAMES. - В случае, если проект мобильный, пользователь должен выбрать платформу и вручную ввести свой игровой userId (который он должен иметь возможность увидеть в интерфейсе игры, также на
Market MY.GAMESможно добавить подсказку того, где искать данный идентификатор в интерфейсе), затем введенный userId валидируется (либо через MRGS, либо напрямую от проекта по API) - В случае, если проект мобильный, но поддерживает авторизацию MyGames, то пользователю будет автоматически предложен список его аккаунтов в игре (игровой userId по MyGamesUserId получается либо из MRGS, либо напрямую от проекта по API), или возможность ввести его вручную (пункт выше)
- В случае, если проект размещен в Игровом центре MyGames, то данный шаг не нужен, и выдача товара будет происходить по MyGamesUserId пользователя. Это настраивается на
- Производит оплату товара
- Проект получает 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 можно найти здесь
Дата создания: 2022-03-10