Я тестировал новый выпуск биллинговой библиотеки Google. В примечаниях к выпуску говорится, что «Покупки должны быть подтверждены в течение трех дней».
Примечания к выпуску
Во время тестирования я заметил, что, если я не подтверждаю покупку, в течение нескольких минут она автоматически возвращается.
Это тот случай, когда Google обрабатывает тестовые заказы по-разному и позволяет только несколько минут подтвердить заказ, а не 3 дня, или я что-то упустил?
Вот код, который я использую для подтверждения покупки. PurchaseHolder - это класс, в котором хранится информация о покупке и SKU, а также код ответа от моего внутреннего сервера
for (IABManager.PurchaseHolder pm : purchaseHolders){
if(pm.getSku().equals(SKU)) {//found matching SKU
if (pm.getActionResult() == IABManager.BillingActionResult.VALID_PURCHASE) {//valid purchase made
if(!pm.getPurchase().isAcknowledged()) {//purchase not yet acknowledged
iabManager.acknowledgePurchases(pm.getPurchase(), (billingResult) -> {
Log.d(TAG, "AcknowledgedPurchaseResponse received from Google");
if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
unlockFeatures();
}
});
}else{
unlockFeatures();
}
} else if (pm.getActionResult() == IABManager.BillingActionResult.NON_VALID_PURCHASE){
lockFeatures();
}else{
Log.d(TAG, "BILLING_ACTION_RESULT = " + pm.getActionResult() + " doing nothing");
}
}
}
... и метод подтверждения покупки
public void acknowledgePurchases(Purchase purchase, AcknowledgePurchaseResponseListener listener){
AcknowledgePurchaseParams params = AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken()).build();
billingClient.acknowledgePurchase(params, listener);
}