Общая информация
Скачайте Unity-плагин для подключения платежей по ссылке.
Для работы проведения платежей необходимо соблюдение всех условий:
- На устройстве пользователя установлено приложение RuStore.
- Пользователь авторизован в RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- Для приложения должна быть включена возможность покупок в системе RuStore Консоль.
Сервис имеет некоторые ограничения на работу за пределами РФ.
Подключение в проект
Для подключения необходимо скачать RuStore Billing SDK и импортировать его в проект (Assets → Import Package → Custom Package). Зависимости подключаются автоматически с помощью External Dependency Manager (включен в SDK).
Для корректной обработки зависимостей SDK необходимо установить следующие настройки:
- Edit -> Project Settings -> Player Settings -> Publishing Settings включить Custom Main Gradle Template и Custom Gradle Properties Template
- Assets -> External Dependencies Manager -> Android Resolver -> Settings включить Use Jetifier, Patch mainTemplate.gradle, Patch gradleTemplate.properties
После настройки обязательно сделать Assets -> External Dependencies Manager -> Android Resolver -> Force Resolve.
Minimum API level должен быть установлен не ниже 24. Минификация приложения (ProGuard/R8) в данный момент не поддерживается, необходимо её отключить в настройках проекта (File → Build Settings → Player Settings → Publishing Settings → Minify).
Обработка deeplink
При оплате пользователем через SberPay происходит переход в приложение Сбербанк. После завершения оплаты должен быть переход обратно в приложение с помощью deeplink. Для обработки deeplink необходимо указать в AndroidManifest.xml intent-filter со scheme вашего проекта:
< activity android:name = "ru.rustore.unitysdk.RuStoreUnityActivity" android:theme = "@style/UnityThemeSelector" android:exported = "true" > < intent-filter > < action android:name = "android.intent.action.MAIN" /> < category android:name = "android.intent.category.LAUNCHER" /> </ 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 = "yourappscheme" /> </ intent-filter > </ activity > |
где «yourappscheme» — схема вашего deeplink, может быть изменена на другую.
Далее расширить класс UnityPlayerActivity и добавить обработку входящего intent в onNewIntent:
package ru.rustore.unitysdk; import android.os.Bundle; import android.content.Intent; import ru.rustore.unitysdk.billingclient.RuStoreUnityBillingClient; import com.unity3d.player.UnityPlayerActivity; public class RuStoreUnityActivity extends UnityPlayerActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); if (savedInstanceState == null ) { RuStoreUnityBillingClient.onNewIntent(getIntent()); } } @Override protected void onNewIntent(Intent intent) { super .onNewIntent(intent); RuStoreUnityBillingClient.onNewIntent(intent); } |
Java файл с кодом расширения UnityPlayerActivity нужно разместить в папке Assets проекта. Если у вас уже есть свое расширение UnityPlayerActivity, необходимо перенести в него код функций onCreate и onNewIntent.
Инициализация
Перед вызовом методов библиотеки необходимо выполнить ее инициализацию. Параметры, с которыми будет инициализироваться библиотека, настраиваются в редакторе Unity. Выберите в меню редактора пункт Window → RuStoreSDK → Settings → Billing Client.
RuStoreBillingClient.Instance.Init(); |
Если требуется инициализация с другими настройками, есть возможность передать их непосредственно из кода:
var config = new RuStoreBillingClientConfig() { consoleApplicationId = "11111" , deeplinkPrefix = "yourappscheme" , allowNativeErrorHandling = true, enableLogs = true }; RuStoreBillingClient.Instance.Init(config); |
- consoleApplicationId — код приложения из системы RuStore Консоль. (пример: https://console.rustore.ru/apps/111111);
- deeplinkPrefix — url для использования deeplink. В качестве названия может быть использовано любое уникальное имя (пример: yourappscheme);
- allowNativeErrorHandling — разрешить обработку ошибок в нативном SDK (см. подробнее в разделе Обработка ошибок);
- enableLogs — включить логи.
Важно, чтобы схема deeplink, передаваемая в deeplinkPrefix, совпадала со схемой, указанной в AndroidManifest.xml.
Если вам нужно проверить факт инициализации библиотеки, используйте свойство RuStoreBillingClient.Instance.isInitialized, его значение true, если библиотека инициализирована, и false, если Init еще не был вызван.
var isInitialized = RuStoreBillingClient.Instance.IsIninialized; |