Skip to content

Latest commit

 

History

History
190 lines (132 loc) · 10.9 KB

README.MD

File metadata and controls

190 lines (132 loc) · 10.9 KB

Пример внедрения SDK платежей RuStore

Оглавление

Условия работы платежей

Для работы проведения платежей необходимо соблюдение следующих условий.

  1. На устройстве пользователя установлено приложение RuStore.

  2. Пользователь и приложение не должны быть заблокированы в RuStore.

  3. Для приложения включена возможность покупок в системе RuStore Консоль.

Сервис имеет некоторые ограничения на работу за пределами РФ.

Подготовка требуемых параметров

Для корректной настройки примера приложения вам следует подготовить:

  1. consoleApplicationId - код приложения из консоли разработчика RuStore (пример: https://console.rustore.ru/apps/123456), тут consoleApplicationId = 123456

  2. applicationId - из приложения, которое вы публиковали в консоль RuStore, находится в файле build.gradle вашего проекта

     android {
        defaultConfig {
        applicationId = "ru.rustore.sdk.billingexample" 
        }
     }
    
  3. availableProductIds - подписки и разовые покупки доступные в вашем приложении

  4. release.keystore - подпись, которой было подписано приложение, опубликованное в консоль RuStore.

  5. release.properties - в этом файле должны быть указаны параметры подписи, которой было подписано приложение, опубликованное в консоль RuStore. Как работать с ключами подписи APK-файлов

Настройка примера приложения

Для проверки работы приложения вы можете воспользоваться функционалом тестовых платежей.

  1. Указать consoleApplicationId своего приложения в RuStoreBillingClientFactory.INSTANCE.create():

    private static RuStoreBillingClient ruStoreBillingClient = RuStoreBillingClientFactory.INSTANCE.create(
                   app,
                  "2063535084", // consoleApplicationId
                  "ru.edudin.rustoreqrscanner", // deeplinkScheme
                  null,
                  null,
                  true
           );
    
  2. Замените applicationId, в файле build.gradle, на applicationId apk-файла, который вы публиковали в консоль RuStore:

    android {
        defaultConfig {
           applicationId = "ru.rustore.sdk.billingexample"
        }
    }
    
  3. В директории cert замените сертификат release.keystore - сертификатом своего приложения, так же в release.properties выполните настройку параметров key_alias, key_password, store_password. Подпись release.keystore должна совпадать с подписью, которой было подписано приложение, опубликованное в консоль RuStore. Убедитесь, что используемый buildType (пр. debug) использует такую же подпись, что и опубликованное приложение (пр. release).

  4. В StartFragment в методе getProducts перечислите подписки и разовые продукты доступные в вашем приложении:

    Arrays.asList(
       "productId1",
       "productId2",
       "productId3"
    )
    
  5. Запустите проект и проверьте работу приложения

Сценарий использования

Проверка доступности работы с платежами

При открытия приложения в методе onViewCreated в StartFragment выполняется проверка доступности платежей,

Получение списка продуктов

Нажатие на кнопку 'getProducts()' выполняет получение и отображение списка продуктов

Получение списка покупок

Нажатие на кнопку 'getPurchases()' выполняет получение и отображение списка покупок

Покупка продукта

Нажатие на айтем с названием продукта выполняет запуск сценария покупки продукта с отображением шторки выбора метода оплаты. Далее если приходит ответ PaymentResult.Success -> выполняется подтверждение покупки, если приходит ответ PaymentResult.Failure -> выполняется отмена покупки.

Обработка deeplink

Данный пункт не относится к настройке примера тестового приложения. Он информирует о том, как правильно настроить deeplink в вашем приложении

deeplinkScheme — схема deeplink, необходимая для возврата в ваше приложение после оплаты через стороннее приложение (например, SberPay или СБП). SDK генерирует свой хост к данной схеме.

Для корректной работы оплаты через сторонние приложения (СБП или SberPay), вам необходимо правильно реализовать обработку deeplink. Для этого необходимо указать в AndroidManifest.xml intent-filter с scheme вашего проекта.

  1. В файле 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>
    
  2. Указать deeplinkScheme своего приложения в RuStoreBillingClientFactory.INSTANCE.create:

     private static RuStoreBillingClient ruStoreBillingClient = RuStoreBillingClientFactory.INSTANCE.create(
                    app,
                    "184050",
                    "rustoresdkexamplescheme",
                    null,
                    null,
                    null,
                    true
            );
    
  3. Далее в 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);
       }
    } 
    
  4. Для восстановления состояния вашего приложения при возврате с 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 платежей, обратитесь по ссылке.