Потребление покупки

Приложение RuStore содержит продукты следующих типов:

  • CONSUMABLE — потребляемый (можно купить много раз, например, кристаллы в приложении);
  • NON_CONSUMABLE — непотребляемый (можно купить один раз, например отключение рекламы в приложении);
  • SUBSCRIPTION — подписка (можно купить на период времени, например подписка в стриминговом сервисе).

Потребления требуют только продукты типа CONSUMABLE, если они находятся в состоянии PurchaseState.PAID.

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

RuStoreBillingClient.INSTANCE.getPurchases().confirmPurchase("purchaseId", "developerPayload").addOnCompleteListener(new OnCompleteListener<ConfirmPurchaseResponse>() {
    @Override
    public void onFailure(@NonNull Throwable throwable) {
        // Process error
    }
 
    @Override
    public void onSuccess(ConfirmPurchaseResponse confirmPurchaseResponse) {
        // Process success
    }
});
  • purchaseId — идентификатор покупки. 
  • developerPayload — дополнительная информация от разработчика AnyApp (опционально). 

Метод возвращает:

interface ConfirmPurchaseResponse extends ResponseWithCode {
    @Nullable
    @Override
    public RequestMeta getMeta();
 
    @Override
    public int getCode();
 
    @Nullable
    @Override
    public String getErrorMessage();
 
    @Nullable
    @Override
    public String getErrorDescription();
 
    @Nullable
    @Override
    public List<DigitalShopGeneralError> getErrors();
}
  • getMeta() — дополнительная информация о запросе;
  • getCode() — код ответа;
  • getErrorMessage() — сообщение об ошибке для пользователя; 
  • getErrorDescription() — расшифровка сообщения об ошибке; 
  • getErrors() — список ошибок.

Структура дополнительной информации о запросе:

interface RequestMeta {
    public String getTraceId();
}
  • getTraceId() — метка запроса.

Структура ошибки:

interface DigitalShopGeneralError {
    @Nullable
    public String getName();
 
    @Nullable
    public Integer getCode();
 
    @Nullable
    public String getDescription();
}
  • getName() — наименование атрибута ошибки;
  • getCode() — код ошибки;
  • getDescription() — описание ошибки.
Was this information helpful?