我一直在测试新的 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);
}