Общая информация
Вы можете ознакомиться с разделом для быстрой интеграции платежей в приложение.
Пример реализации
Ознакомьтесь с приложением-примером чтобы узнать, как правильно интегрировать платежи.
Условия работы платежей
Для работы проведения платежей необходимо соблюдение всех условий:
- На устройстве пользователя установлено приложение RuStore.
- Приложение RuStore поддерживает функциональность платежей.
- Пользователь авторизован в приложении RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- Для приложения включена возможность покупок в системе RuStore Консоль.
Сервис имеет некоторые ограничения на работу за пределами РФ.
Добавление репозитория
Подключите репозиторий:
repositories { maven { url "https://artifactory-external.vkpartner.ru/artifactory/maven" } } |
Подключение зависимости
Добавьте следующий код в свой конфигурационный файл для подключения зависимости:
dependencies { implementation 'ru.rustore.sdk:billingclient:2.2.0' } |
Инициализация
Перед вызовом методов библиотеки необходимо выполнить ее инициализацию.
Создайте RuStoreBillingClient, используя RuStoreBillingClientFactory.create():
final Context context = getContext(); final String consoleApplicationId = "111111" ; final String deeplinkScheme = "yourappscheme" ; // Опциональные параметры final BillingClientThemeProvider themeProvider = null ; final boolean debugLogs = false ; final ExternalPaymentLoggerFactory externalPaymentLoggerFactory = null ; RuStoreBillingClient billingClient = RuStoreBillingClientFactory.INSTANCE.create( context, consoleApplicationId, deeplinkScheme, // Опциональные параметры themeProvider, debugLogs, externalPaymentLoggerFactory ); |
- context — контекст Android. Может быть любым, в реализации используется applicationContext.
- consoleApplicationId — код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/111111).
- deeplinkScheme — cхема 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).
Обработка deeplink
Для корректной работы оплаты через сторонние приложения (СБП, SberPay и другие) необходимо правильно реализовать обработку deeplink. Укажите в AndroidManifest.xml intent-filter с scheme вашего проекта:
< 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, передаваемым в init().
Далее в Activity, в которую необходимо вернуться после совершения оплаты (ваша страница магазина), нужно добавить:
public class YourBillingActivityextends AppCompatActivity { // Previously created with RuStoreBillingClientFactory.create(); RuStoreBillingClient billingClient = YourDependencyInjection.getBillingClient(); @Override public void onCreate( @Nullable Bundle savedInstanceState) { super .onCreate(savedInstanceState); if (savedInstanceState == null ) { billingClient.onNewIntent(getIntent()); } } @Override protected void onNewIntent(Intent intent) { super .onNewIntent(intent); billingClient.onNewIntent(intent); } } |
Для восстановления состояния вашего приложения при возврате с deeplink необходимо добавить в AndroidManifest.xml:
android:launchMode="singleTask"
<activity android:name= ".YourBillingActivity" android:launchMode= "singleTask" android:exported= "true" android:screenOrientation= "portrait" android:windowSoftInputMode= "adjustResize" > |