10.3.1 (актуальная версия)
RuStore позволяет интегрировать платежи в мобильное приложение.
-
Если не знаете с чего начать, прочтите инструкцию в сценариях использования.
-
Если вы переходите на Pay SDK с billingClient SDK, ознакомьтесь с инструкцией по переходу. Подробности о Pay SDK можно узнать тут.
Пример реализации
Ознакомьтесь с проектом-примером, чтобы узнать, как правильно интегрировать SDK платежей.
Подключение в проект
Установка плагинов
-
Перейдите в раздел Релизы репозитория проекта на GitFlic.
-
Скачайте из выбранного релиза артефакт:
ru.rustore.pay.zip
-
Распакуйте скачанный архив.
Для сборки Android-приложения и работы с нативными функциями ОС Construct использует фреймворк Cordova.
- Убедитесь, что у вас установлен фреймворк Cordova версии не ниже 12.0.0.
cordova -v
- Перейдите в корневую папку вашего Cordova-проекта и выполните команду:
cordova plugin add /путь_к_папке_плагина/ru.rustore.pay
- После установки проверьте наличие плагина с помощью команды:
cordova plugin list
В списке должен появиться плагин ru.rustore.pay.
- Плагин требует, чтобы вы разместили свои данные для инициализации в файле
rustore_pay_strings.xmlрасположенном в папкеru.rustore.pay / src / android / res / values.
Создайте или отредактируйте этот файл, поместив туда необходимые параметры инициализации плагина.
- После установки плагин автоматически добавит теги
<meta-data>и дополнительную активитиRuStoreIntentFilterActivityвAndroidManifest.xmlв папке*your_cordova_project* / platforms / android / app / src / main.
Пример готового манифеста:
<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true">
<!-- Game activity -->
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation" android:exported="true" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@style/Theme.App.SplashScreen" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<provider android:authorities="${applicationId}.cdv.core.file.provider" android:exported="false" android:grantUriPermissions="true" android:name="androidx.core.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/cdv_core_file_provider_paths" />
</provider>
<!-- Deeplink Scheme -->
<meta-data android:name="sdk_pay_scheme_value" android:value="@string/rustore_PayClientSettings_deeplinkScheme" />
<!-- Initializing SDK -->
<meta-data android:name="console_app_id_value" android:value="@string/rustore_PayClientSettings_consoleApplicationId" />
<meta-data android:name="internal_config_key" android:value="@string/rustore_PayClientSettings_internalConfigKey" />
<!-- Deeplink Activity -->
<activity android:exported="true" android:name="ru.rustore.paybridge.RuStoreIntentFilterActivity" android:theme="@android:style/Theme.NoDisplay">
<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="@string/rustore_PayClientSettings_deeplinkScheme" />
</intent-filter>
</activity>
</application>
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
</manifest>
Инициализация
Перед вызовом методов библиотеки необходимо выполнить ее инициа лизацию. Сама инициализация происходит автоматически, но для работы SDK в вашем файле AndroidManifest.xml будут автоматически добавлены console_app_id_value, internal_config_key и sdk_pay_scheme_value. Все теги плагин добавит автоматически.
<!-- Initializing sdk -->
<meta-data android:name="console_app_id_value" android:value="@string/rustore_PayClientSettings_consoleApplicationId" />
<meta-data android:name="internal_config_key" android:value="@string/rustore_PayClientSettings_internalConfigKey" />
<!-- Deeplink Scheme -->
<meta-data android:name="sdk_pay_scheme_value" android:value="@string/rustore_PayClientSettings_deeplinkScheme" />
Значения тегов задаюся в файле rustore_pay_strings.xml расположенном в папке ru.rustore.pay / src / android / res / values.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="rustore_PayClientSettings_consoleApplicationId" translatable="false">1234567890</string>
<string name="rustore_PayClientSettings_internalConfigKey" translatable="false">construct</string>
<string name="rustore_PayClientSettings_deeplinkScheme" translatable="false">yourappscheme</string>
</resources>
consoleApplicationId — идентификатор приложения из RuStore консоли.
internalConfigKey — всегда должно иметь значение construct.
deeplinkScheme — уникальная схема deeplink.
Где в RuStore Консоль отображаются идентификаторы приложений?
- Перейдите на вкладку Приложения и выберите нужное приложение.
- Скопируйте идентификатор из URL-адреса страницы приложения — это набор цифр между
apps/и/versions. Например, для URL-адресаhttps://console.rustore.ru/apps/123456/versionsID приложения —123456.

Package Name и подпись Cordova-приложения, должены совпадать с Package Name и подписью приложения, которое вы публиковали в системе RuStore Консоль.
Не задавайте значения console_app_id_value и internal_config_key напрямую в манифесте. Строки должны располагаться в файле ресурсов.
Работа с SDK
Доступные публичные методы:
getPurchase— позволяет получить информацию о покупке по ее ID.getPurchases— позволяет получи ть покупки пользователя. Данный метод поддерживает опциональную фильтрацию по типу товаров (потребляемые или непотребляемые товары), а также по статусу покупки (поддерживаются статусыPAIDиCONFIRMED). По умолчанию фильтры отключены, и вернутся все покупки пользователя (независимо от типа товара) в статусахPAIDиCONFIRMED.getPurchaseAvailability— возвращает результат доступности работы с платежами.purchase— позволяет совершить покупку продукта с указанием желаемого типа оплаты - одностадийной (ONE_STEP) или двухстадийной (TWO_STEP). Для данного метода оплаты на платежной шторке доступны все способы оплаты. Если параметр не задан, по умолчанию запускается с оплатой в одну стадию.
Если указан тип оплаты TWO_STEP, будет произведена попытка запустить двухстадийную опла ту, но итоговый результат напрямую будет зависеть от того, какой способ оплаты (карта, СБП и др.) будет выбран пользователем. Двухстадийная оплата доступна только для определенного набора способов оплаты (на текущий момент — только для карт). Технологии СБП не поддерживают двухстадийную оплату. Если выбран способ оплаты, который не поддерживает холдирование, то покупка будет запущена по сценарию с одной стадией.
purchaseTwoStep— запускает сценарий гарантированной двухстадийной покупки товара. При использовании данного метода пользователю на платежной шторке доступен ограниченный набор способов оплаты — только те, которые поддерживают двухстадийную оплату. В процессе платежа сначала осуществляется холдирование денежных средств покупателя, которые списываются только после подтверждения покупки методомconfirmTwoStepPurchase.confirmTwoStepPurchase— подтверждение покупки, совершенной по двухстадийной оплате.cancelTwoStepPurchase— отмена покупки, совершенной по двухстадийной оплате.getProducts— позволяет получить информацию по активным продуктам, опубликов анным в RuStore консоль.
Данный метод возвращает не более 1000 продуктов и работает без авторизации и наличия установленного RuStore на устройстве пользователя.
getUserAuthorizationStatus— проверяет статус авторизации пользователя.isRuStoreInstalled— проверки наличия приложения RuStore на устройстве пользователя.openRuStoreDownloadInstruction— открывает веб-страницу для скачивания приложения RuStore.openRuStore— запускает приложение RuStore.openRuStoreAuthorization— запускает приложение RuStore для авторизации. После успешной авторизации пользователя приложение RuStore автоматически закроется.