跳到主要内容
未列出页
此页面未列出。搜索引擎不会对其索引,只有拥有直接链接的用户才能访问。

Как перейти на Pay SDK

В принципах функционирования Pay SDK есть отличия от billingClient SDK.

В этом разделе собран список ключевых изменений по сравнению с billingClient SDK, на которые важно обратить внимание. Все подробности с примерами кода вы можете найти в документации для конкретной версии Pay SDK.

Список зависимостей

У Pay SDK сократился список зависимостей.

Подключение в проект

При подключения зависимости учитывайте отличие в названии SDK (pay вместо billingclient):

  • BillingClient SDK: implementation("ru.rustore.sdk:billingclient").
  • Pay SDK: implementation("ru.rustore.sdk:pay").

Инициализация

Изменился способ указания consoleApplicationId при инициализации:

  • BillingClient SDK: в файле build.gradle необходимо вызывать метод RuStoreBillingClientFactory.create() и внутрь данного метода передать consoleApplicationId.
  • Pay SDK: в файле manifest.xml необходимо прописать meta-data с указанием console_app_id_key. Параметры deeplinkScheme, themeProvider, externalPaymentLoggerFactory и debugLogs не указываются.

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

  • Изменился метод проверки доступности работы с платежами:

    • BillingClient SDK: RuStoreBillingClient.Companion.checkPurchasesAvailability().
    • Pay SDK: RuStorePayClient.getPurchaseInteractor().getPurchaseAvailability().
  • Поменялись ответы метода:

    • BillingClient SDK: FeatureAvailabilityResult.Available и FeatureAvailabilityResult.Unavailable(val cause: RuStoreException).
    • Pay SDK: PurchaseAvailabilityResult.Available и PurchaseAvailabilityResult.Unavailable(val cause: Throwable).

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

  • В Pay SDK получение списка продуктов не требует авторизации пользователя.

  • Вы можете запрашивать до 1000 элементов за один запрос, в то время как в billingClient SDK — до 100.

  • Изменился метод получения списка продуктов:

    • BillingClient SDK: billingClient.products productsUseCase.getProducts().
    • Pay SDK: RuStorePayClient.getProductInteractor().getProducts().
  • В возвращаемой модели продукта поменялась структура. В следующей таблице приведены списки полей, которые возвращают оба SDK. Описание полей см. в документации billingClient SDK и Pay SDK.

BillingClient SDKPay SDK
productIdproductId
productTypetype
productStatus
priceLableamountLabel
priceprice
currencycurrency
language
titletitle
descriptiondescription
imageUrlimageUrl
promoImageUrl
subscription

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

Изменился метод получения списка покупок:

  • BillingClient SDK: billingClient.purchases purchasesUseCase.getPurchases().
  • Pay SDK: RuStorePayClient.getPurchaseInteractor().getPurchases().

Получение сведений о покупке

  • Изменился метод получения сведений о покупке:

    • BillingClient SDK: billingClient.purchases purchasesUseCase.getPurchaseInfo().
    • Pay SDK: RuStorePayClient.getPurchaseInteractor().getPurchase().
  • В возвращаемой модели покупки поменялась структура. В следующей таблице приведены списки полей, которые возвращают оба SDK. Описание полей см. в документации billingClient SDK и Pay SDK.

BillingClient SDKPay SDK
purchaseIdpurchaseId
productIdproductId
invoiceIdinvoiceId
language
purchaseTimepurchaseTime
orderIdorderId
purchaseType
productType
description
amountLableamountLable
amountprice
currencycurrency
quantityquantity
purchaseStateStatus
developerPayloaddeveloperPayload
subscriptionTokensubscriptionToken
  • Изменилась статусная модель покупки (Status) и список возможных статусов.

    Теперь нет отдельных статусных моделей для потребляемых или непотребляемых продуктов. Вместо них используются модели покупки по одностадийной и двухстадийной оплате.

    В следующей таблице приведены возможные статусы для каждого SDK. Описание статусной модели и значения статусов см. в документации billingClient SDK и Pay SDK.

BillingClient SDKPay SDK
CREATED
INVOICE_CREATEDINVOICE_CREATED
PAIDPAID
CONFIRMEDCONFIRMED
CONSUMED
CANCELLEDCANCELLED
PAUSED
TERMINATED
PROCESSING
EXPIRED
REJECTED
REVERSED
REFUNDED

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

  • Метод покупки продукта заменён на два новых метода:

    • BillingClient SDK: billingClient.purchases purchasesUseCase.purchaseProduct().

    • Pay SDK:

      RuStorePayClient.instance.getPurchaseInteractor().purchase(params, preferredPurchaseType: PreferredPurchaseType = PreferredPurchaseType.ONE_STEP) — Универсальный метод для запуска покупки. Позволяет выбрать тип оплаты — одностадийную или двухстадийную.

      • Одностадийная оплата (PreferredPurchaseType.ONE_STEP): Средства за покупку списываются сразу.

      • Двухстадийная оплата (PreferredPurchaseType.TWO_STEP): Выполняется попытка двухстадийной оплаты. Если выбранный покупателем способ оплаты не поддерживает холдирование, покупка выполняется по сценарию одностадийной оплаты.

      RuStorePayClient.instance.getPurchaseInteractor().purchaseTwoStep() — метод для гарантированного запуска двухстадийной оплаты. На платёжной шторке отображаются только те способы оплаты, которые поддерживают холдирование.

  • Поменялись ответы метода:

    • BillingClient SDK: Success, Failure, Cancelled и InvalidPaymentState.
    • Pay SDK: SuccessProductPurchaseResult, FailureProductPurchaseResult и CancelProductPurchaseResult.

Серверная валидация

Для серверной валидации разовых покупок используется:

Подтверждение покупки

Изменился метод подтверждения покупки:

  • BillingClient SDK: billingClient.purchases purchasesUseCase.confirmPurchase().
  • Pay SDK: RuStorePayClient.getPurchaseInteractor().confirmTwoStepPurchase() — подтверждение покупки при двухстадийной оплате.

Отмена покупки

Изменился метод отмены покупки:

  • BillingClient SDK: billingClient.purchases purchasesUseCase.deletePurchase()
  • Pay SDK: RuStorePayClient.getPurchaseInteractor().cancelTwoStepPurchase() — отмена покупки при двухстадийной оплате.

Функциональность в разработке

Pay SDK находится в бета-запуске, поэтому он пока не включает некоторые функции billingClient SDK:

  • оплата покупок без установки RuStore на устройстве пользователя;
  • работа с подписками на приложения;
  • работа тестовых платежей (sandbox);
  • дополнительные способы оплаты кроме банковской карты;
  • тёмная тема для шторки оплаты.

О запуске новой функциональности мы сообщим дополнительно. Следите за обновлениями.

См. также

История изменений

Pay SDK 8.0.0

  • Метод одностадийной оплаты purchaseOneStep заменён универсальным методом purchase, который позволяет указать тип оплаты (одностадийная или двухстадийная).
  • Двухстадийная оплата (TWO_STEP) теперь доступна только для ограниченного набора способов оплаты.
  • Улучшен метод purchaseTwoStep, который теперь обеспечивает гарантированную двухстадийную оплату.
  • Добавлена ошибка RuStorePayInvalidActivePurchase при попытке оплаты продукта неизвестного типа.

Pay SDK 7.0.0

  • Единый метод покупки заменён на два новых метода для одностадийной и двухстадийной оплате.
  • Вместо статусных моделей потребляемых или непотребляемых продуктов теперь используются статусные модели покупки по одностадийной и двухстадийной оплате.
  • Статус CONSUMED заменён на CONFIRMED.
  • Метод потребления (подтверждения) покупки consumePurchase заменен на confirmTwoStepPurchase для двухстадийной оплаты.
  • Появился метод отмены покупки при двухстадийной оплате.

Pay SDK 6.1.0

Первая версия инструкции по переходу с BillingClient SDK на Pay SDK 6.1.0.