6.1.0 (Beta)
RuStore позволяет интегрировать платежи в мобильное приложение.
-
Если не знаете с чего начать, прочтите инструкцию в сценариях использования.
-
Если вы переходите на Pay SDK с billingClient SDK, ознакомьтесь с инструкцией по переходу. Подробности о Pay SDK можно узнать тут.
Условия работы платежей
-
Для приложения включена возможность покупок в RuStore Консоли.
- Приложение не должно быть заблокировано в RuStore.
- На устройстве пользователя установлена актуальная версия RuStore.
- Пользователь авторизован в RuStore.
- Пользователь не должен быть заблокирован в RuStore.
Подключение в проект
Добавление репозитория
Подключите репозиторий, как показано в примере ниже.
repositories {
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
Подключение зависимости
Добавьте следующий код в свой конфигурационный файл для подключения зависимости.
dependencies {
implementation(platform("ru.rustore.sdk:bom:6.1.0"))
implementation("ru.rustore.sdk:pay")
}
Инициализация
Перед вызовом методов библиотеки необходимо выполнить её инициализацию.
Сама инициализация происходит автоматически, но для работы SDK в вашем файле manifest.xml
необходимо прописать console_app_id_key
.
Сделать это можно следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="your.app.package.name">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.App"
tools:targetApi="n">
...
<meta-data
android:name="console_app_id_key"
android:value="@string/CONSOLE_APPLICATION_ID" />
</application>
</manifest>
-
Пример:CONSOLE_APPLICATION_ID
— идентификатор приложения из RuStore консоли.https://console.rustore.ru/apps/111111
.
Где в RuStore Консоль отображаются идентификаторы приложений?
- Перейдите на вкладку Приложения и выберите нужное приложение.
- Скопируйте идентификатор из URL-адреса страницы приложения — это набор цифр между
apps/
и/versions
. Например, для URL-адресаhttps://console.rustore.ru/apps/123456/versions
ID приложения —123456
.
ApplicationId
, указанный вbuild.gradle
, должен совпадать сapplicationId
APK-файла, который вы публиковали в RuStore Консоль.-
Подпись
keystore
должна совпадать с подписью, которой было подписано приложение, опубликованное в RuStore Консоль. Убедитесь, что используемыйbuildType
(пр.debug
) использует такую же подпись, что и опубликованное приложение (пр.release
).
Рабо та с SDK
Доступные публичные интеракторы:
PurchaseInteractor
— интерактор, который позволяет работать с платежами и имеет несколько публичных методов:getPurchase(purchaseId: PurchaseId): Task<Purchase>
— позволяет получить информацию о покупке по её идентификатору.getPurchases(): Task<List<Purchase>>
— позволяет получить покупки пользователя. В списке возвращаются покупки в статусеCONFIRMED
для непотребляемых товаров иPAID
для потребляемых товаров.PAID
— статус, означающий успешное холдирование средств. Такая покупка ожидает подтверждения со стороны разработчика.getPurchaseAvailability(): Task<PurchaseAvailabilityResult>
— возвращает результат доступности работы с платежами.consumePurchase(purchaseId: PurchaseId, developerPayload: DeveloperPayload? = null)
— позволяет совершить подтверждение (потребление) покупки. Подходит только для потребляемых товаров.
ProductInteractor
— интерактор, который позволяет работать с продуктами и имеет несколько публичных методов:getProducts(productsId: List<ProductId>): Task<List<Product>>
— позволяет получить информацию о продуктах по их ID. В списке продуктов можно указать до 1000 элементов.purchase(params: ProductPurchaseParams): Task<ProductPurchaseResult>
— позволяет совершить покупку продукта.
- Блок
RuStoreUtils
— набор публичных методов, таких как:isRuStoreInstalled
— проверка наличия мобильного приложения RuStore на устройстве пользователя.openRuStoreDownloadInstruction
— открывает страницу скачивания мобильного приложения RuStore.openRuStore
— запускает мобильное приложение RuStore.openRuStoreAuthorization
— запускает мобильное приложение RuStore для авторизации. После успешной авторизации пользователя RuStore автоматически закроется.
Проверка доступности работы с платежами
- Kotlin
- Java
Для проверки доступности платежей, вызовите метод getPurchaseAvailability
у PurchaseInteractor
. При его вызове проверяются следующие условия:
- На устройстве пользователя установлена актуальная версия RuStore.
- Пользователь авторизован в RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- У компании подключена монетизация через консоль разработчика RuStore.
Если все условия выполняются, возвращается PurchaseAvailabilityResult.Available
.
Иначе возвращается PurchaseAvailabilityResult.Unavailable(val cause: Throwable)
, где cause
— ошибка о невыполненном условии.
Чтобы понять причину ошибки, проверьте её тип на RuStoreException
.
См. Обработка ошибок.
Например, если вы получили RuStoreUserUnauthorizedException
, это означает, что пользователь не авторизован в RuStore.
В этом случае вы можете вызвать метод openRuStoreAuthorization
, который запускает мобильное приложение RuStore для авторизации.
Другие доступные методы см. в разделе Работа с SDK.
RuStorePayClient.getPurchaseInteractor().getPurchaseAvailability()
.addOnSuccessListener { result ->
when (result) {
is PurchaseAvailabilityResult.Available -> {
// Process purchases available
}
is PurchaseAvailabilityResult.Unavailable -> {
// Process purchases unavailable
}
}
}.addOnFailureListener { throwable ->
// Process unknown error
}
Для проверки доступности платежей, вызовите метод getPurchaseAvailability
у PurchaseInteractor
. При его вызове проверяются следующие условия:
- На устройстве пользователя установлена актуальная версия RuStore.
- Пользователь авторизован в RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- У компании подключена монетизация через консоль разработчика RuStore.
Если все условия выполняются, возвращается PurchaseAvailabilityResult.Available
.
Иначе возвращается PurchaseAvailabilityResult.Unavailable(val cause: Throwable)
, где cause
— ошибка о невыполненном условии.
Чтобы понять причину ошибки, проверьте её тип на RuStoreException
.
См. Обработка ошибок.
Например, если вы получили RuStoreUserUnauthorizedException
, это означает, что пользователь не авторизован в RuStore.
В этом случае вы можете вызвать метод openRuStoreAuthorization
, который запускает мобильное приложение RuStore для авторизации.
Другие дос тупные методы см. в разделе Работа с SDK.
PurchaseInteractor purchaseInteractor = RuStorePayClient.Companion.getInstance().getPurchaseInteractor();
purchaseInteractor.getPurchaseAvailability()
.addOnSuccessListener(result -> {
if (result instanceof PurchaseAvailabilityResult.Available) {
// Process purchases available
} else if (result instanceof PurchaseAvailabilityResult.Unavailable) {
// Process purchases unavailable
}
})
.addOnFailureListener(throwable -> {
// Process unknown error
});