Как подключить RuStore Pay SDK к проекту на Unity

Как подключить RuStore Pay SDK к проекту на Unity

Платёжное решение RuStore Pay SDK позволяет добавить в Android-приложение оплату разовых покупок и подписок. Для проектов на Unity SDK доступен в виде плагина, который связывает C#-код проекта с нативной Android-библиотекой RuStore.

В этой статье разберём весь процесс подключения Pay SDK к Unity-проекту: выберем совместимые версии Unity и плагина, подключим необходимые пакеты и зависимости, настроим проект и запустим готовый пример. В конце проверим основные сценарии работы с платежами.

Требования к версии Unity

Начиная с версии 10.2.0 RuStore Pay SDK использует Java 17. Проще всего работать с SDK на Unity 6: необходимая версия JDK уже входит в комплект движка. Примеры в этой статье подготовлены на Unity 6000.0.66f2.

Pay SDK также можно использовать с Unity 2022.3.37f1 и выше: в этих версиях доступен Gradle 7.3 с поддержкой Java 17.

При выборе версии Unity учитывайте исправления безопасности. Не используйте версии ниже 6000.0.58f2 для Unity 6 и 2022.3.62f2 для Unity 2022.3 LTS: более ранние версии содержат уязвимость CVE-2025-59489. Для Unity 2022.3 xLTS исправление доступно начиная с версии 2022.3.67f2.

Подготовка окружения

Для сборки проекта под Android установите модуль Android Build Support для вашей версии Unity вместе с Android SDK, NDK и OpenJDK. Сделать это можно через Unity Hub при установке Unity или позже, добавив необходимые модули к уже установленной версии.

Android Studio для подключения Pay SDK не требуется. Она понадобится, если вы захотите изменить и самостоятельно пересобрать нативную Android-часть плагина или использовать дополнительные инструменты Android-разработки.

Где найти плагины

Исходный код и готовые пакеты плагинов RuStore для Unity опубликованы на GitFlic. Для каждого плагина доступен отдельный репозиторий с исходным кодом, готовыми пакетами и примером проекта.

Для работы Pay SDK понадобятся два пакета:

  • ru.rustore.pay — плагин для работы с платежами;
  • ru.rustore.core — общая часть, необходимая для работы плагинов RuStore.

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

Начиная с версии 11.0.0 плагин можно установить через npm-registry, при этом скачивать и подключать пакет вручную не нужно.

Чтобы добавить реестр в Unity:

  1. Откройте настройки: Edit → Project Settings → Package Manager.
  2. В разделе Scoped Registries нажмите + и укажите:
    1. Name: RuStore Nexus
    2. URL: https://nexus-external.vkteam.ru/repository/npm-unity-rustore-exposed/
    3. Scopes: ru.rustore
  3. Откройте Window → Package Manager и выберите RuStore Nexus в списке источников.
  4. Найдите пакет ru.rustore.pay и нажмите Install. Зависимость ru.rustore.core для работы плагина установится автоматически.

Выбор версии плагина

Рекомендуем использовать последнюю стабильную версию плагина RuStore Pay: новые релизы содержат исправления и обновления API.

Версия Unity-плагина и версия нативного Pay SDK могут отличаться. Плагин включает C#-код, настройки Unity и Android-библиотеку SDK. Проверить, какая версия нативного SDK используется в конкретном релизе плагина, можно в CHANGELOG.md.

Также учитывайте совместимость ru.rustore.pay и ru.rustore.core. Начиная с версии 10.5.0 плагины RuStore обновляются независимо, поэтому номера их версий могут не совпадать. Совместимые версии pay и core указаны в соответствующем релизе.

Для Pay SDK используйте версию не ниже 10.2.0. В более ранних версиях применяется SSL-пиннинг, поэтому после смены сертификата платежная форма может перестать открываться. Начиная с версии 10.2.0 SDK использует системную проверку сертификата, а в версии 11.1 сертификат Минцифры уже встроен в SDK и не требует отдельной установки на устройство.

Подключение плагина

Подключение пакетов

Для подключения Pay SDK используйте Unity Package Manager. Скачайте пакеты ru.rustore.core.tgz и ru.rustore.pay.tgz из раздела релизов, затем поочерёдно добавьте их в проект:

Window → Package Manager → + → Add package from tarball...

Начиная с версии 10.0.0 вместе с пакетами публикуются файлы для проверки их целостности и подлинности: контрольная сумма .sha256 и цифровые подписи .sig. Такая проверка не обязательна для обычного подключения, но позволяет убедиться, что скачанный пакет не был повреждён или подменён.

При необходимости пакет можно подключить и в распакованном виде. Для этого клонируйте репозиторий или распакуйте архив и в Package Manager выберите + → Add package from disk..., затем укажите файл package.json.

Настройка проекта

После подключения пакетов настройте Android-параметры проекта.

Откройте Edit → Project Settings → Player → Android Settings и на вкладке Publishing Settings включите:

  • Custom Main Manifest;
  • Custom Main Gradle Template;
  • Custom Gradle Properties Template.

Затем в разделе Other Settings укажите значения API Level, рекомендованные для вашей версии плагина. Для Pay SDK:

  • Minimum API Level — 24;
  • Target API Level — 34.

Решение зависимостей

Android-зависимости, необходимые для работы плагинов RuStore, подключаются с помощью External Dependency Manager for Unity.

Его можно установить из официального репозитория Google или использовать версию, которая поставляется вместе с плагинами RuStore. В UPM-пакетах она доступна как сэмпл External Dependency Manager в составе ru.rustore.core.

После установки или обновления пакетов RuStore обновите зависимости проекта:

Assets → External Dependency Manager → Android Resolver → Force Resolve.

Инициализация Pay SDK

Для работы Pay SDK укажите данные приложения:

  • consoleApplicationId — ID приложения в RuStore Консоли;
  • deeplinkScheme — уникальную схему диплинка.

Откройте Window → RuStoreSDK → Settings → PayClient, заполните поля Console Application Id и Deeplink Scheme, выберите Entry Point Activity и Deeplink Activity, затем нажмите Patch Manifest.

Начиная с версии 10.2.0 в PayClientSettings.asset доступна автоматическая настройка манифеста. При нажатии Patch Manifest плагин добавляет необходимые параметры в AndroidManifest.xml и создаёт values.xml со значениями, которые SDK использует при запуске приложения.

Чтобы проверить настройки, нажмите Verify Manifest. Если манифест настроен правильно, в консоли появится сообщение [RuStore] AndroidManifest.xml verified. Если каких-либо параметров не хватает, плагин выведет их список.

При обновлении плагина может измениться формат PayClientSettings.asset. Если текущая версия файла устарела, плагин предложит перенести настройки в новый формат. Выберите Migrate, чтобы обновить файл и сохранить существующие параметры.

Запуск примера проекта

В репозитории Pay SDK есть готовый пример проекта, на котором можно проверить подключение плагина и основные сценарии работы с платежами. Он находится в папке pay_example.

Перед запуском подготовьте:

  1. applicationId — уникальный идентификатор Android-приложения;
  2. keystore — файл ключа для подписи приложения;
  3. consoleApplicationId — ID приложения в RuStore Консоли;
  4. productIds — ID разовых покупок и подписок, созданных для приложения;
  5. deeplinkScheme — уникальную схему диплинка.

Подготовка данных

Если приложения ещё нет в RuStore Консоли, создайте его и загрузите подписанную сборку. applicationId должен совпадать с идентификатором приложения в Консоли, а сборка — быть подписана тем же ключом.

consoleApplicationId можно найти в URL страницы приложения в RuStore Консоли — это числовой ID после apps/.

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

Настройка примера приложения

Откройте в Unity проект из папки pay_example и укажите подготовленные данные:

  1. Откройте Window → RuStoreSDK → Settings → PayClient. В поле Console Application Id укажите consoleApplicationId, а в поле Deeplink Scheme — deeplinkScheme.
  2. Откройте сцену PayClientSampleScene, выберите объект ExampleController и в массиве Product Ids укажите ID созданных разовых покупок и подписок.
  3. Перейдите в Edit → Project Settings → Player → Android Settings → Publishing Settings, включите Custom Keystore и укажите файл keystore, пароли и Alias.
  4. В разделе Other Settings → Identification включите Override Default Package Name и укажите applicationId в поле Package Name.

После настройки соберите проект через File → Build Settings → Build и запустите приложение на Android-устройстве.

Проверка работы платежей

После запуска примера можно проверить основные сценарии работы Pay SDK:

  • Availability — проверяет, доступны ли платежи.
  • Products — загружает и отображает список созданных продуктов.
  • Buy — запускает покупку выбранного продукта и открывает экран выбора способа оплаты.

Проверка диплинка

Проверить работу диплинка можно через браузер. Создайте файл index.html со следующим кодом:

screenshot

В адресе example://www.ru замените example на значение deeplinkScheme вашего приложения. Хост в данном случае может быть произвольным.

Откройте index.html в браузере на Android-устройстве и перейдите по ссылке Launch. Если диплинк настроен правильно, приложение запустится. Если оно уже открыто, ссылка вернёт пользователя в приложение.

Что дальше

Готовый пример можно использовать как основу для интеграции Pay SDK в собственный проект. В нём реализованы основные сценарии работы с платежами, а описание остальных возможностей SDK и примеры вызова методов можно найти в документации RuStore Pay SDK для Unity.

💙 Мы в MAX

Похожие статьи