Пример внедрения 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.xmlandroid: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