Как я могу показать продукты, которые пользователь приобрел в библиотеке billingclient в Android?

#android #in-app-purchase #in-app-billing #billingclient

Вопрос:

Я использую библиотеку com.android.billingclient:выставление счетов:3.0.1. Как я могу проверить, приобрел ли пользователь какой-либо продукт при открытии приложения. Поэтому я хочу проверить, прежде чем откроется страница оплаты.

Следующий метод возвращает значение null:

 mBillingClient = BillingClient.newBuilder(getApplicationContext()).enablePendingPurchases().setListener(this).build();

mBillingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP, new PurchaseHistoryResponseListener() {
    @Override
    public void onPurchaseHistoryResponse(@NonNull BillingResult billingResult, @Nullable List<PurchaseHistoryRecord> list) {
        list.size();
    }
});
 

Ответ №1:

Вы можете использовать GetPurchasesHistory метод для получения приобретенных товаров. Это отлично работает для меня. Так что вы можете использовать это 🙂

 public void GetPurchasesHistory(String skuType){
      Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(skuType);
      List<Purchase> purchases = purchasesResult.getPurchasesList();
      List<String> listOfJsons = new ArrayList<>();
      List<String> listOfSkus = new ArrayList<>();
      List<String> orderIds = new ArrayList<>();
      if(purchasesResult.getBillingResult().getResponseCode() == BillingClient.BillingResponseCode.OK){
          if(purchases != null){
              for(Purchase purchase : purchases){
                  listOfJsons.add(purchase.getOriginalJson());
                  listOfSkus.add(purchase.getSkus().get(0));
                  orderIds.add(purchase.getOrderId());
              }
              // You got purchases history, Do what you wanted

          }else{
            // Failed as purchase is null
          }
      }else{
        // FailedToGetPurchasesHistory("Failed, ResponseCode = "   purchasesResult.getBillingResult().getResponseCode());
      }
  }