#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());
}
}