Общая информация
Для работы платежей необходимо соблюдение следующих условий:
- На устройстве пользователя должен быть установлен RuStore.
- RuStore должен поддерживать функциональность платежей.
- Пользователь должен быть авторизован в RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- Для приложения должна быть включена возможность покупок в системе 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».
Обработка deeplink
При оплате пользователем через SberPay происходит переход в приложение Сбер. После завершения оплаты, должен быть переход обратно в приложение с помощью deeplink. Для обработки deeplink плагин RuStore Billing автоматически добавит в AndroidManifest.xml атрибут android:exported="true" для главной activity и следующий intent-filter:
< 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. Пример инициализации:
- consoleApplicationId — код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/111111).
- deeplinkSheme — url для использования deeplink. В качестве названия может быть использовано любое уникальное имя (пример: yourappscheme).
- allowNativeErrorHandling — разрешить обработку ошибок в нативном SDK (см. подробнее в разделе Обработка ошибок)
- enableLogs — включить логгирование событий.
Важно:
- Схема deeplink, передаваемая в deeplinkPrefix, совпадала с схемой, указанной в AndroidManifest.xml (подробнее в разделе «Обработка deeplink»).
- Вызов Init() привязывает объект к корню сцены, и, если дальнейшая работа с объектом больше не планируется, для освобождения памяти необходимо выполнить метод Dispose().
Вызов метода Dispose() отвяжет объект от корня и безопасно завершит все отправленные запросы.
URuStoreBillingClient::Instance()->Dispose(); |
Если вам нужно проверить факт инициализации библиотеки, используйте свойство URuStoreBillingClient::Instance()->getIsInitialized(), его значение true, если библиотека инициализирована, и false, если Init еще не был вызван.
bool isInitialized = URuStoreBillingClient::Instance()->IsIninialized(); |