要检查Android In App Billing是否为测试购买,可以使用isTestPurchase()
方法。下面是一个示例代码:
import com.android.billingclient.api.*;
public class MyBillingClient {
private BillingClient billingClient;
public MyBillingClient() {
billingClient = BillingClient.newBuilder(context)
.setListener(purchasesUpdatedListener) // 设置购买更新监听器
.enablePendingPurchases() // 启用待处理购买
.build();
}
// 检查是否为测试购买
public boolean isTestPurchase(Purchase purchase) {
if (purchase != null) {
String purchaseToken = purchase.getPurchaseToken();
// 通过购买令牌查询购买详细信息
Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
if (purchasesResult != null && purchasesResult.getPurchasesList() != null) {
for (Purchase p : purchasesResult.getPurchasesList()) {
if (p.getPurchaseToken().equals(purchaseToken)) {
return p.isAcknowledged() && p.isAutoRenewing();
}
}
}
}
return false;
}
// 购买更新监听器
private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(BillingResult billingResult, List purchases) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
for (Purchase purchase : purchases) {
if (isTestPurchase(purchase)) {
// 处理测试购买
} else {
// 处理正式购买
}
}
}
}
};
}
在上面的示例中,isTestPurchase()
方法接受一个Purchase
对象作为参数,并使用购买令牌查询购买详细信息。在返回的购买详细信息列表中,遍历所有购买并检查购买令牌是否匹配。如果匹配且购买已经被确认并设置为自动续订,则认为它是测试购买。
在购买更新监听器中,可以根据isTestPurchase()
方法的返回值来处理测试购买和正式购买的逻辑。