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

Скачайте Unity-плагин для подключения платежей по ссылке

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

  1. На устройстве пользователя установлено приложение RuStore. 
  2. Пользователь авторизован в RuStore. 
  3. Пользователь и приложение не должны быть заблокированы в RuStore. 
  4. Для приложения должна быть включена возможность покупок в системе 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).

При оплате пользователем через 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;
Обновлено 29 ноября 2023 г.
Was this information helpful?