Общая информация

Для работы платежей необходимо соблюдение следующих условий:

  1. На устройстве пользователя должен быть установлен RuStore. 
  2. RuStore должен поддерживать функциональность платежей.  
  3. Пользователь должен быть авторизован в RuStore. 
  4. Пользователь и приложение не должны быть заблокированы в RuStore. 
  5. Для приложения должна быть включена возможность покупок в системе RuStore Консоль

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

Для подключения платежей необходимо скачать Unreal Engine плагины «RuStoreCore» и «RuStoreBilling» из официального репозитория RuStore на gitflic, и поместить в папку «Plugins» внутри проекта. В списке плагинов (Edit → Plugins → Project → Mobile) появятся плагины «RuStore Core» и «RuStore Billing». В файле *YourProject*.Build.cs в списке PublicDependencyModuleNames подключить модули «RuStoreCore» и «RuStoreBilling».

При сборке Android приложения Minimum API level должен быть установлен не ниже 24. Минификация приложения (ProGuard/R8) в данный момент не поддерживается. Все необходимые настройки gradle и зависимости проекта прописаны в файлах «RuStoreCore_UPL_Android.xml» и «RuStoreBilling_UPL_Android.xml».

При оплате пользователем через SberPay происходит переход в приложение Сбер. После завершения оплаты, должен быть переход обратно в приложение с помощью deeplink. Для обработки deeplink плагин RuStore Billing автоматически добавит в AndroidManifest.xml атрибут android:exported="true" для главной activity и следующий intent-filter: 

AndroidManifest.xml
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data android:scheme="yourscheme" />
</intent-filter>

где «yourscheme»  схема вашего deeplink может быть изменена на другую, и должна совпадать со значением deeplinkSheme указываемым при инициализации библиотеки billing-клиента.

Изменить «yourscheme» на вашу схема можно в файле «RuStoreCore_UPL_Android.xml».

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

Перед вызовом методов библиотеки необходимо выполнить ее инициализацию. Параметры, с которыми будет выполняться инициализация, настраиваются с помощью структуры FURuStoreBillingClientConfig.

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

FURuStoreBillingClientConfig config;
config.consoleApplicationId = "111111";
config.deeplinkScheme = "yourscheme";
URuStoreBillingClient::Instance()->Init(config);

Все операции с клиентом также доступны из Blueprints. Пример инициализации:

image

  • consoleApplicationId — код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/111111). 
  • deeplinkSheme — url для использования deeplink. В качестве названия может быть использовано любое уникальное имя (пример: yourappscheme).
  • allowNativeErrorHandling — разрешить обработку ошибок в нативном SDK (см. подробнее в разделе Обработка ошибок)
  • enableLogs — включить логгирование событий.

Важно:

  1. Схема deeplink, передаваемая в deeplinkPrefix, совпадала с схемой, указанной в AndroidManifest.xml (подробнее в разделе «Обработка deeplink»).
  2. Вызов Init() привязывает объект к корню сцены, и, если дальнейшая работа с объектом больше не планируется, для освобождения памяти необходимо выполнить метод Dispose().

Вызов метода Dispose() отвяжет объект от корня и безопасно завершит все отправленные запросы.

Деинициализация
URuStoreBillingClient::Instance()->Dispose();

image

Если вам нужно проверить факт инициализации библиотеки, используйте свойство URuStoreBillingClient::Instance()->getIsInitialized(), его значение true, если библиотека инициализирована, и false, если Init еще не был вызван.

Проверка инициализации
bool isInitialized = URuStoreBillingClient::Instance()->IsIninialized();

image

Обновлено 17 июля 2023 г.
Was this information helpful?