8.0.0 (актуальная версия)
RuStore позволяет интегрировать платежи в мобильное приложение.
Если не знаете с чего начать, прочти те инструкцию в сценариях использования.
Подготовка к работе
- Скопируйте содержимое папки
Plugins
из официального репозитория RuStore на GitFlic в папкуPlugins
внутри своего проекта. - Перезапустите Unreal Engine.
- В списке плагинов (Edit > Plugins > Project > Mobile) отметьте плагины RuStoreBilling и RuStoreCore.
- Подключите модули модули
RuStoreCore
иRuStoreBilling
в файлеYourProject.Build.cs
в спискеPublicDependencyModuleNames
. - В настройках проекта (Edit > Project Settings > Android) установите параметр Minimum SDK Version на уровень не ниже 24 и параметр Target SDK Version не ниже 31.
Обработка deeplink
Для корректной работы оплаты через сторонние приложения (СБП, SberPay и др.) необходимо правильно реализовать обработку deeplink. Плагин RuStore Billing автоматически добавит в AndroidManifest.xml
дополнительную activity с необходимым intent-filter
(см. ниже). Изменить это поведение можно в файле RuStoreBilling_UPL_Android.xml
.
<activity android:name="com.Plugins.RuStoreBilling.RuStoreIntentFilterActivity" android:exported="true" android:launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Set your appscheme -->
<data android:scheme="@string/rustore_app_scheme" />
</intent-filter>
</activity>
Вашему проекту необходимо реализовать наличие строкового ресурса @string/rustore_app_scheme
.
@string/rustore_app_scheme
— схема вашего deeplink. Эта схема должна совпадать со схемой deeplink, указываемой при инициализации библиотеки billing-клиента.
Инициализация
Перед вызо вом методов библиотеки необходимо выполнить её инициализацию.
FURuStoreBillingClientConfig config;
config.consoleApplicationId = "123456";
config.deeplinkScheme = "yourscheme";
config.allowNativeErrorHandling = false;
config.enableLogs = false;
URuStoreBillingClient::Instance()->Init(config);
Все операции с клиентом также доступны из Blueprints. Ниже представлен пример инициализации.

-
consoleApplicationId
— идентификатор приложения из RuStore консоли.
Где в RuStore Консоль отображаются идентификаторы приложений?
- Перейдите на вкладку Приложения и выберите нужное приложение.
- Скопируйте идентификатор из URL-адреса страницы приложения — это набор цифр между
apps/
и/versions
. Например, для URL-адресаhttps://console.rustore.ru/apps/123456/versions
ID приложения —123456
.
-
deeplinkSheme
— URL-адрес для использования deeplink. В качестве названия может быть использовано любое уникальное имя (пример:yourappscheme
). -
allowNativeErrorHandling
— разрешить обработку ошибок в нативном SDK (см. подробнее в разделе Обработка ошибок).
Поле allowNativeErrorHandling
устарело и не рекомендуется к использованию.
-
enableLogs
— включить ведение журнала событий.
Вызов Init()
привязывает объект к корню сцены, и если дальнейшая работа с объектом больше не планируется, для освобождения памяти необходимо выполнить метод Dispose()
.
Деинициализация
URuStoreBillingClient::Instance()->Dispose();

Проверка инициализации
Если вам нужно проверить факт инициализации библиотеки, используйте метод GetIsInitialized()
. Метод вернет true
, если библиотека инициализирована, и false
, если Init
еще не был вызван.
bool isInitialized = URuStoreBillingClient::Instance()->GetIsIninialized();

Как работают платежи
Проверка доступности работы с платежами
Наличие RuStore | Процедура и результат проверки |
---|---|
Не установлен | Метод вернёт параметры:
Оплата возможна благодаря запуску приёма платежей без установки RuStore. |
Установлен | Выполняется проверка следующих условий.
Если все указанные выше условия выполняются, в событии В противном случае возвращается Прочие ошибки возвращаются в событии |
Метод устарел и не рекомендуется к использованию.
Для проверки доступности платежей используйте метод
CheckPurchasesAvailability
.
Каждый асинхронный запрос получает уникальный в рамках одного запуска приложения requestId
. Каждое событие возвращает requestId
запроса, породившего это событие.
long requestId = URuStoreBillingClient::Instance()->CheckPurchasesAvailability(
[]( long requestId, TSharedPtr<FURuStorePurchaseAvailabilityResult, ESPMode::ThreadSafe> response) {
// Process response
},
[]( long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) {
// Process error
}
);

Уведомление обратного вызова (callback) Success
возвращает структуру FURuStorePurchaseAvailabilityResult
в параметре Response
(см. ниже).
USTRUCT(BlueprintType)
struct RUSTORECORE_API FURuStorePurchaseAvailabilityResult
{
GENERATED_USTRUCT_BODY()
FURuStorePurchaseAvailabilityResult()
{
isAvailable = false;
}
UPROPERTY(BlueprintReadWrite)
bool isAvailable;
UPROPERTY(BlueprintReadWrite)
FURuStoreError cause;
};
-
isAvailable
— выполнение условий выполнения платежей (true
/false
). -
cause
— информация об ошибке.
Все возможные ошибки cause
описаны в разделе Обр аботка ошибок. Прочие ошибки возвращаются в Failure
.
Уведомление обратного вызова (callback) Failure
возвращает структуру FURuStoreError
с информацией об ошибке в параметре Error
. Структура ошибки FURuStoreError
описана в разделе Обработка ошибок.
Проверка установки приложения RuStore
Чтобы проверить установлен ли на устройстве пользователя RuStore необходимо вызвать метод IsRuStoreInstalled
.
bool bIsRuStoreInstalled = URuStoreBillingClient::Instance()->IsRuStoreInstalled();

-
true
– RuStore установлен. -
false
– RuStore не установлен.