[英]All Google Play subscriptions are refunded after trial period
我正在使用com.android.billingclient:billing:2.0.1
开发Android应用程序。 我的订阅具有以下参数。
计费期:3个月
免费试用期:3天
入门价格:-
宽限期:3天
但是,所有这些(> 100个)在成功购买后的3天内都将退还。 我不明白原因。
用户问为什么会这样。 我认为他们都不选择退钱。
我的BillingManager类:
public class BillingManager implements PurchasesUpdatedListener {
private BillingClient billingClient;
private final List<Purchase> purchases = new ArrayList<>();
public BillingManager(Context context) {
billingClient = BillingClient.newBuilder(context).enablePendingPurchases().setListener(this).build();
startConnection();
}
void startConnection() {
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
final int responseCode = billingResult.getResponseCode();
if (responseCode == BillingResponseCode.OK) {
queryPurchases();
}
}
@Override
public void onBillingServiceDisconnected() {
retry();
}
});
}
void queryPurchases() {
PurchasesResult purchasesResult = billingClient.queryPurchases(SkuType.SUBS);
List<Purchase> cachedPurchaseList = purchasesResult.getPurchasesList();
onPurchasesUpdated(cachedPurchaseList);
}
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchasesList) {
final int responseCode = billingResult.getResponseCode();
if (responseCode == BillingResponseCode.OK) {
onPurchasesUpdated(purchasesList);
} else if (responseCode == BillingResponseCode.USER_CANCELED) {
handleCanceledPurchase();
} else {
handleUnknownResponse();
}
}
private void onPurchasesUpdated(@Nullable List<Purchase> purchasesList) {
purchases.clear();
if (purchasesList != null) {
for (Purchase purchase : purchasesList) {
processPurchase(purchase);
}
}
notifyListener();
}
private void processPurchase(Purchase purchase) {
if (purchase.getPurchaseState() != PurchaseState.PURCHASED) {
return;
}
if (!verify(purchase)) {
return;
}
purchases.add(purchase);
}
public boolean shouldDoStuff() {
if (purchases.isEmpty()) {
return false;
} else {
for (Purchase purchase : purchases) {
if (purchase.getPurchaseState() != PurchaseState.PURCHASED) {
continue;
}
return true;
}
return false;
}
}
}
PS:该应用程序会在本地验证购买签名,并且统计信息显示结果是肯定的。
感谢您升级到Play Billing Library 2. +。 关于确认,您需要同时确认订阅和非消耗性应用内商品。 在确认期间,并且仅在确认期间,您可以选择设置有效负载。 查询“购买”时,随后将返回您设置的有效负载。
关于消耗品的重要说明。 您无需确认消耗性产品。 但是,如果您确实选择了(由于某种原因)对它们进行确认,并且进一步(如果有其他原因)您在确认时提交了有效负载:那么当您在Android上调用consumeAsync
时,您必须提交相同的有效负载。
您也可以通过Android或服务器api进行确认。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.