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

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

RuStoreBillingClient.INSTANCE.getPurchases().purchaseProduct("productId").addOnCompleteListener(new OnCompleteListener<PaymentResult>() {
    @Override
    public void onFailure(@NonNull Throwable throwable) {
        // Process error
    }
 
    @Override
    public void onSuccess(PaymentResult paymentResult) {
        // Process PaymentResult
    }
});
  • productId: String — идентификатор продукта;
  • orderId: String — идентификатор заказа, создаётся на стороне AnyApp (опционально. Если не указан, то генерируется автоматически); 
  • quantity: Int — количество продуктов (опционально);
  • developerPayload — дополнительная информация от разработчика AnyApp (опционально). 

Структура результата покупки:

interface PaymentResult {
    interface InvoiceResult extends PaymentResult {
        public String getInvoiceId();
         
        public PaymentFinishCode getPaymentFinishCode();
    }
     
    interface InvalidInvoice extends PaymentResult {
        @Nullable
        public String getInvoiceId();
    }
     
    interface PurchaseResult extends PaymentResult {
        public PaymentFinishCode getPaymentFinishCode();
         
        public String getOrderId();
         
        public String getPurchaseId();
         
        public String getProductId();
         
        @Nullable
        public String getSubscriptionToken(); 
    }
     
    interface InvalidPurchase extends PaymentResult {
        @Nullable
        public String getPurchaseId();
         
        @Nullable
        public String getInvoiceId();
         
        @Nullable
        public String getOrderId();
         
        @Nullable
        public Integer getQuantity();
         
        @Nullable
        public String getProductId();
         
        @Nullable
        public Integer getErrorCode();
    }
     
    interface InvalidPaymentState extends PaymentResult {}
}
  • InvoiceResult — платежи завершились с результатом;
  • InvalidInvoice — платежи завершились без указания инвойса. Вероятно, они были запущены с некорректным инвойсом (пустая строка, например);
  • PurchaseResult — результат успешного завершения покупки цифрового товара;
  • InvalidPurchase — при оплате цифрового товара платежи завершились c ошибкой;
  • InvalidPaymentState — при завершении платежей отсутствует PaymentState.

Возможные статусы, которые может содержать PaymentFinishCode:

  • SUCCESSFUL_PAYMENT — успешная оплата; 
  • CLOSED_BY_USER — отменено пользователем;
  • UNHANDLED_FORM_ERROR — неизвестная ошибка;
  • PAYMENT_TIMEOUT — ошибка оплаты по таймауту;
  • DECLINED_BY_SERVER — отклонено сервером;
  • RESULT_UNKNOWN — неизвестный статус оплаты. 
Was this information helpful?