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

Вы можете ознакомиться с разделом для быстрой интеграции платежей в приложение.

Пример реализации

Ознакомьтесь с приложением-примером чтобы узнать, как правильно интегрировать платежи.

Условия работы платежей

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

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

Сервис имеет некоторые ограничения на работу за пределами РФ.

Добавление репозитория

Подключите репозиторий:

repositories {
    maven {
    }
}

Подключение зависимости

Добавьте следующий код в свой конфигурационный файл для подключения зависимости:

dependencies {
    implementation 'ru.rustore.sdk:billingclient:0.1.8'
}

Для корректной работы оплаты через сторонние приложения (СБП, SberPay и другие) необходимо правильно реализовать обработку deeplink. Укажите в AndroidManifest.xml intent-filter с scheme вашего проекта: 

<activity
    android:name=".sample.MainActivity">
 
    <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, может быть изменена на другую.

Эта схема должна совпадать с параметром deeplinkScheme, передаваемым в init().

Далее в Activity, в которую необходимо вернуться после совершения оплаты (ваша страница магазина), нужно добавить:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState == null) {
        RuStoreBillingClient.INSTANCE.onNewIntent(getIntent());
    }
}
 
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    RuStoreBillingClient.INSTANCE.onNewIntent(intent);
}

Для восстановления состояния вашего приложения при возврате с deeplink необходимо добавить в AndroidManifest.xml: android:launchMode="singleTask".

<activity
         android:name=".sample.main.MainActivity"
         android:launchMode="singleTask"
         android:exported="true"
         android:screenOrientation="portrait"
         android:windowSoftInputMode="adjustResize">

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

Перед вызовом методов библиотеки необходимо выполнить ее инициализацию.

Добавьте следующий код в Application вашего проекта:

public class App extends Application {
     
    @Override
    public void onCreate() {
        super.onCreate();
        Application application = this;
        String consoleApplicationId = "111111";
        String deeplinkScheme = "yourappscheme";
        RuStoreBillingClient.INSTANCE.init(application, consoleApplicationId, deeplinkScheme);
    }
}
  • application — экземпляр класса application приложения. 
  • consoleApplicationId — код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/111111). 
  • deeplinkScheme — cхема deeplink, необходимая для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП). SDK генерирует свой хост к данной схеме.

Важно, чтобы схема deeplink, передаваемая в deeplinkScheme, совпадала со схемой, указанной в AndroidManifest.xml в разделе Обработка deeplink.

Если вам нужно проверить факт инициализации библиотеки, используйте RuStoreBillingClient.isInitialized, возвращающий true, если библиотека инициализирована, и false, если init еще не был вызван.

Boolean isInitialized = RuStoreBillingClient.INSTANCE.isInitialized();

Библиотека поддерживает логирование событий, которое подключается отдельно при инициализации библиотеки.

Was this information helpful?