Пример внедрения SDK платежей RuStore
Документация SDK платежей
English version of README.md
Оглавление
- Условия работы платежей
- Подготовка требуемых параметров
- Настройка примера приложения
- Сценарий использования
- Обработка deeplink
- Условия распространения
- Техническая поддержка
Условия работы платежей
Для работы проведения платежей необходимо соблюдение следующих условий.
-
На устройстве пользователя установлено приложение RuStore.
-
Пользователь и приложение не должны быть заблокированы в RuStore.
-
Для приложения включена возможность покупок в системе RuStore Консоль.
Сервис имеет некоторые ограничения на работу за пределами РФ.
Подготовка требуемых параметров
Для корректной настройки примера приложения вам следует подготовить:
-
consoleApplicationId
- код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/123456), тутconsoleApplicationId
= 123456 -
applicationId
- из приложения, которое вы публиковали в консоль RuStore, находится в файле build.gradle вашего проектаandroid { defaultConfig { applicationId = "ru.rustore.sdk.billingexample" } }
-
availableProductIds
- подписки и разовые покупки доступные в вашем приложении -
release.keystore
- подпись, которой было подписано приложение, опубликованное в консоль RuStore. -
release.properties
- в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов
Настройка примера приложения
Для проверки работы приложения вы можете воспользоваться функционалом тестовых платежей.
-
Указать
consoleApplicationId
своего приложения вRuStoreBillingClientFactory.INSTANCE.create()
:private static RuStoreBillingClient ruStoreBillingClient = RuStoreBillingClientFactory.INSTANCE.create( app, "2063535084", // consoleApplicationId "ru.edudin.rustoreqrscanner", // deeplinkScheme null, null, true );
-
Замените
applicationId
, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:android { defaultConfig { applicationId = "ru.rustore.sdk.billingexample" } }
-
В директории
cert
замените сертификатrelease.keystore
- сертификатом своего приложения, так же вrelease.properties
выполните настройку параметровkey_alias
,key_password
,store_password
. Подписьrelease.keystore
должна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемыйbuildType
(пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release). -
В
StartFragment
в методеgetProducts
перечислите подписки и разовые продукты доступные в вашем приложении:Arrays.asList( "productId1", "productId2", "productId3" )
-
Запустите проект и проверьте работу приложения
Сценарий использования
Проверка доступности работы с платежами
При открытия приложения в методе onViewCreated
в StartFragment
выполняется проверка доступности платежей,
Получение списка продуктов
Нажатие на кнопку ‘getProducts()’ выполняет получение и отображение списка продуктов
Получение списка покупок
Нажатие на кнопку ‘getPurchases()’ выполняет получение и отображение списка покупок
Покупка продукта
Нажатие на айтем с названием продукта выполняет запуск сценария покупки продукта с отображением шторки выбора метода оплаты. Далее если приходит ответ PaymentResult.Success -> выполняется подтверждение покупки, если приходит ответ PaymentResult.Failure -> выполняется отмена покупки.
Обработка deeplink
Данный пункт не относится к настройке примера тестового приложения. Он информирует о том, как правильно настроить deeplink
в вашем приложении
deeplinkScheme
— схема deeplink, необходимая для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП). SDK генерирует свой хост к данной схеме.
Для корректной работы оплаты через сторонние приложения (СБП или SberPay), вам необходимо правильно реализовать обработку deeplink. Для этого необходимо указать в AndroidManifest.xml
intent-filter с scheme вашего проекта.
-
В файле
AndroidManifest.xml
в параметре data android:scheme укажите URL-адрес для использования deeplink (должен совпадать с параметромdeeplinkScheme
из пункта 1)<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:scheme="rustoresdkexamplescheme" /> // Заменить на свой deeplink </intent-filter> </activity>
-
Указать
deeplinkScheme
своего приложения вRuStoreBillingClientFactory.INSTANCE.create
:private static RuStoreBillingClient ruStoreBillingClient = RuStoreBillingClientFactory.INSTANCE.create( app, "184050", "rustoresdkexamplescheme", null, null, null, true );
-
Далее в Activity, в которую необходимо вернуться после совершения оплаты (ваша страница магазина), нужно добавить:
public class MainActivity extends AppCompatActivity { private static final RuStoreBillingClient billingClient = YourDependencyInjection.provideRuStorebillingClient(); public MainActivity() { super(R.layout.activity_main); } @Override protected void onCreate(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=".MainActivity" android:launchMode="singleTask" android:exported="true" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize">
Условия распространения
Данное программное обеспечение, включая исходные коды, бинарные библиотеки и другие файлы распространяется под лицензией MIT. Информация о лицензировании доступна в документе MIT-LICENSE.txt
Техническая поддержка
Если появились вопросы по интеграции SDK платежей, обратитесь по ссылке.
Описание
Пример внедрения SDK платежей RuStore