Перейти к основному содержимому

Общие сведения

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

примечание

Соответствующие разделы для других языков скоро появятся на сайте.

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

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

Изучить код приложения на Kotlin >>

к сведению

Методы SDK вызывают асинхронную задачу Task, которая возвращает ошибку или значение в соответствующих callback. Учитывайте это при вызове callback для синхронного получения результата, их необходимо использовать из фонового потока.

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

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

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

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

Подготовка к работе

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

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

Подключите репозиторий, как показано в примере ниже.

build.gradle
repositories {
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}

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

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

build.gradle
dependencies {
implementation("ru.rustore.sdk:billingclient:5.0.0")
}

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

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

Создайте RuStoreBillingClient, используя RuStoreBillingClientFactory.create().

Создание RuStoreBillingClient
val billingClient: RuStoreBillingClient = RuStoreBillingClientFactory.create(
context = app,
consoleApplicationId = "111111",
deeplinkScheme = "yourappscheme",
// Опциональные параметры
themeProvider = null,
debugLogs = false,
externalPaymentLoggerFactory = null,
)
  • context — контекст Android. Может быть любым, в примере используется applicationContext.
  • consoleApplicationId — код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/111111).
  • deeplinkScheme — схема deeplink, необходимая для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП). SDK генерирует свой хост к данной схеме.
  • themeProvider — интерфейс, который предоставляет тему BillingClientTheme. Возможны 2 реализации темы BillingClientTheme: светлая (Light) и тёмная (Dark). Данный интерфейс необязательный, по умолчанию будет применяться светлая тема.
  • externalPaymentLoggerFactory — интерфейс, который предоставляет доступ ко внешней системе ведения журнала событий.
  • debugLogs — флаг регулирующий ведение журнала событий (логи будут автоматически отключены для Release-сборок).
примечание
  • ApplicationId, указанный в build.gradle, должен совпадать с applicationId APK-файла, который вы публиковали в системе RuStore Консоль.
  • Схема deeplink, передаваемая в deeplinkScheme, должна совпадать со схемой, указанной в AndroidManifest.xml в разделе Обработка deeplink.
  • Подпись keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в системе Консоль RuStore. Убедитесь, что используемый buildType (пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release).

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

AndroidManifest.xml
<activity
android:name=".YourBillingActivity">

<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, передаваемым в create().

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

Activity
class YourBillingActivity: AppCompatActivity() {

// Previously created with RuStoreBillingClientFactory.create()
private val billingClient: RuStoreBillingClient = YourDependencyInjection.getBillingClient()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
billingClient.onNewIntent(intent)
}
}

override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
billingClient.onNewIntent(intent)
}
}

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

AndroidManifest.xml
<activity
android:name=".YourBillingActivity"
android:launchMode="singleTask"
android:exported="true"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">

Пример работы платежей

примечание

В схеме приведён пример реализации. Учитывайте свои внутренние процессы при работе с платежами.