Construct 3 - Покупки
Пример совершения и обработки платежей в игре.
Перед началом работы
Для того, чтобы понимать алгоритм работы с покупками рекомендуется ознакомиться с актуальными правилами работы в документации.
Важные моменты:
- Поддерживаемые площадки
- Правила проведения одноразовых покупок
- Правила проведения постоянных покупок
Добавляем покупки в личный кабинет
Предположим в игре планируется реализовать следующие покупки:
- Тысяча монет (одноразовая покупка)
- Десять ключей (одноразовая покупка)
- VIP статус (постоянная покупка)
- Скин для игрока (постоянная покупка)
В личном кабинете переходим в раздел покупок и нажимаем кнопку «Добавить» (покупки -> добавить покупку).
Рассмотрим интерфейс добавления покупки (по умолчанию):
Полей может быть большие в зависимости от выбранных платформ.
Для того, чтобы добавить покупку мы указываем:
- Тег для обращения в программе
- Отображаемое название
- Отображаемое описание
- Дополнительная информация в зависимости от платформы (см. следующий скриншот)
- Иконку
Если какой-то язык перевода не доступен, то проверьте, что вы указали данный язык как поддерживаемый в настройках проекта.
Если вы уже добавили платформы, то у вас появятся дополнительные поля (если это необходимо). Например, ID покупки в яндексе. Вы сначала создаете информацию здесь, а потом копируете в яндекс. Мы к этому вернемся, когда будем добавлять платформы.
Пример заполнения:
После заполнения информации о покупках нажимаем «Добавить» (система подписок будет рассмотрена в отдельном туториале).
Заполняем все наши планируемые покупки (можно добавлять и те, которые еще не реализованы или только планируются в дальнейшем).
Пример заполнения:
Добавляем на платформы
В первую очередь добавляем платформы в GamePush (если вы этого еще не сделали).
Яндекс
Добавляем любую покупку с указанием ID из личного кабинета GamePush. На примере можно видеть какие параметры должны быть одинаковыми.
Копируем secret key из консоли ЯИ в консоль GamePush.
Остальные платформы
Посмотрите актуальную информацию по заполнению информации на стороне платформы в документации платежей в разделе «Настройки платформ».
Реализация покупки
Подготовительный этап мы закончили, теперь можем перейти к реализации на стороне игры. В первую очередь мы обработаем событие покупки.
Рассмотрим шаблон работы с покупками (скачать).
У нас есть несколько одинаковых кнопок, по которым игрок может осуществить покупку. У каждой из них есть переменная со своим значением тега (который мы подключали ранее):
Асинхронный метод
Рассмотрим следующий код для одноразовой покупки:
Когда игрок кликает по кнопке, отправляем запрос на осуществление покупки по тегу, указанный в переменной кнопки.
Когда происходит успешная покупка, то запускаем ассинхронную функцию, которая обрабатывает покупку. Обновляем переменные, синхроизируемся и ждем завершения. Далее тратим покупку, так как покупка одноразовая.
Функция начисления ключей аналогична.
Рассмотрим следующий код для постоянной покупки:
Можно заметить, что кода стало меньше.
Мы также при клике по кнопке активируем покупку. Если произошла успешная покупку, то мы активируем только функционал випа внутри игры.
Дополнительные переменные в облаке не требуются, так как мы при старте будем проверять наличие покупки.
Пример результата далее. Функция активация скина аналогична.
Синхронный метод
Вместо обработки события у нас все действия будут происходить в событии нажатия на кнопку покупки. Рассмотрим на примере следующего кода:
Во время нажатия на кнопку мы также запускаем процесс покупки, но в этот раз дожидаемся её завершения. Если покупка была проведена успешно, то проверяем тег и запускаем соответствующую функцию активации с предыдущей реализации.
Проверка покупок
При старте игры важно провести следующие процедуры:
- Потратить покупки, которые не были потрачены
- Проверить наличие постоянных покупок
Синхронный вариант
Рассмотрим сначала следующие стартовые действия:
Сначала у нас проверяются постоянные покупки, следом по очереди проверяются одноразовые покупки (ассинхронные функции) и после каждой из них ждем сигнала о том, что все покупки доначислены игроку. Так для каждой одноразовой покупки.
Обновляем интерфейс и можем играть.
Рассмотрим функции немного подробнее:
Проверяем приобретена ли покупка и запускаем активацию функционала. Функция активация та же, что и во время покупки.
Простой вариант
Рассмотрим доначисление одноразовых покупок.
Если у нас в наличии одноразовая покупка, то начисляем, ожидаем и сообщаем о завершении. Иначе только сообщаем.
Продвинутый вариант
Следующий вариант отличается тем, что после начисления бонусов мы запускаем эту же функцию еще раз. Процесс происходит циклично до тех пор, пока условие наличия покупка не будет ложным.
Тестирование доначислений
В консоли игрока вы можете назначить игроку (себе) несколько одноразовых покупок и запустить игру.
После запуска у вас должно быть следующее:
Дополнительно
В исходнике вы можете посмотреть на обе реализации, а также дополнительный функционал:
- Обновления интерфейса
- Обновления магазина
- Переключение режимов проведения покупки
Автор: @aventy
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!