Java 在启动时使用谷歌账单检查购买情况

Java 在启动时使用谷歌账单检查购买情况,java,android,google-api,Java,Android,Google Api,我目前正在使用谷歌计费API在android应用程序启动时检查用户是否购买了高级软件包 我正在使用queryPurchases()方法来解析购买。我想问一下,这是否是在不使用服务器的情况下检查购买的正确方法。我已经读过200000 API的限制-有没有更好的方法来实现这一点 这是我在每次启动时运行的当前颤振方法: Future<void> initBillingPlatform() async { try { await FlutterInappPurchase.

我目前正在使用谷歌计费API在android应用程序启动时检查用户是否购买了高级软件包

我正在使用
queryPurchases()
方法来解析购买。我想问一下,这是否是在不使用服务器的情况下检查购买的正确方法。我已经读过200000 API的限制-有没有更好的方法来实现这一点

这是我在每次启动时运行的当前颤振方法:

Future<void> initBillingPlatform() async {
    try {
      await FlutterInappPurchase.instance.initConnection;
      List<PurchasedItem> puchased = await FlutterInappPurchase.instance.getAvailablePurchases();
      String result; 
      bool purchased = false;

      for (int i = 0; i < puchased.length; i++) {
        PurchasedItem item = puchased.elementAt(i);
if ((item.productId == "premium_features_developer" || item.productId == "premium_features") &&
            item.purchaseStateAndroid != null &&
            item.purchaseStateAndroid == 1) { 
          purchased = true;
          if (!item.isAcknowledgedAndroid) {
            result = await FlutterInappPurchase.instance.acknowledgePurchaseAndroid(item.purchaseToken);
            print(result);
          }
        }
      }


      isPremium = purchased; 

    } on Exception catch (e) {
      //Se arriva in errore il default è premium=false
      print(e);
    }
    FlutterInappPurchase.instance.endConnection;
  } 
Future initBillingPlatform()异步{
试一试{
等待flatterinapppurchase.instance.initConnection;
List puchased=wait flatterinapppurchase.instance.getAvailablePurchases();
字符串结果;
bool=false;
for(int i=0;i
此颤振包的getAvailablePurchases()方法运行以下代码:

final String type = call.argument("type");
      final JSONArray items = new JSONArray();
      Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases(type.equals("subs") ? BillingClient.SkuType.SUBS : BillingClient.SkuType.INAPP);
      final List<Purchase> purchases = purchasesResult.getPurchasesList();

      try {
        if (purchases != null) {
          for (Purchase purchase : purchases) {
            JSONObject item = new JSONObject();
            item.put("productId", purchase.getSku());
            item.put("transactionId", purchase.getOrderId());
            item.put("transactionDate", purchase.getPurchaseTime());
            item.put("transactionReceipt", purchase.getOriginalJson());
            item.put("orderId", purchase.getOrderId());
            item.put("purchaseToken", purchase.getPurchaseToken());
            item.put("developerPayloadAndroid", purchase.getDeveloperPayload());
            item.put("signatureAndroid", purchase.getSignature());
            item.put("purchaseStateAndroid", purchase.getPurchaseState());

            if (type.equals(BillingClient.SkuType.INAPP)) {
              item.put("isAcknowledgedAndroid", purchase.isAcknowledged());
            } else if (type.equals(BillingClient.SkuType.SUBS)) {
              item.put("autoRenewingAndroid", purchase.isAutoRenewing());
            }
            items.put(item);
          }
          result.success(items.toString());
        }
      } catch (JSONException je) {
        result.error(call.method, je.getMessage(), je.getLocalizedMessage());
      } catch (FlutterException fe) {
        result.error(call.method, fe.getMessage(), fe.getLocalizedMessage());
      }
final String type=call.argument(“type”);
最终JSONArray项=新JSONArray();
PurchasesResult PurchasesResult=billingClient.queryPurchases(type.equals(“subs”)?billingClient.SkuType.subs:billingClient.SkuType.INAPP);
最终采购清单=purchasesResult.getPurchasesList();
试一试{
如果(购买!=null){
用于(采购:采购){
JSONObject项=新的JSONObject();
item.put(“productId”,purchase.getSku());
item.put(“transactionId”,purchase.getOrderId());
item.put(“transactionDate”,purchase.getPurchaseTime());
item.put(“transactionReceipt”,purchase.getOriginalJson());
item.put(“orderId”,purchase.getOrderId());
item.put(“purchaseToken”,purchase.getPurchaseToken());
item.put(“developerPayloadAndroid”,purchase.getDeveloperPayload());
item.put(“signatureAndroid”,purchase.getSignature());
item.put(“purchaseStateAndroid”,purchase.getPurchaseState());
if(type.equals(BillingClient.SkuType.INAPP)){
item.put(“isAcknowledgedAndroid”,purchase.isAcknowledged());
}else if(type.equals(BillingClient.SkuType.SUBS)){
item.put(“autorenewandroid”,purchase.isAutoRenewing());
}
项目。放置(项目);
}
result.success(items.toString());
}
}捕获(JSONException je){
result.error(call.method、je.getMessage()、je.getLocalizedMessage());
}渔获物(铁){
result.error(call.method、fe.getMessage()、fe.getLocalizedMessage());
}

可能有助于其他人查看您使用的代码可能有助于其他人查看您使用的代码