【问题标题】:Migrating to Google Play Billing Library Version 5.1.0 - SkuDetails.getOriginalJson() equivalent迁移到 Google Play 结算库版本 5.1.0 - SkuDetails.getOriginalJson() 等效
【发布时间】:2023-01-30 19:28:04
【问题描述】:

我要从 Google Play Billing 版本 4.0.0 升级到版本 5.1.0。 在版本 4 中,SkuDetails 具有函数 getOriginalJson(),其中包含一个我发送到后端的 json 对象。我在API 中查找,但在 5.1.0 版中找不到官方等效项。

我可以在两个地方看到此信息可能在com.android.billingclient.api.ProductDetails 中可用 - 一个我们不应该访问的内部JSONObject 成员,并且作为 toString() 函数的一部分,此信息附加到 parsedJson .我可能可以从 toString() 中提取我需要的东西,但我想知道是否有更好的/官方的东西。

【问题讨论】:

    标签: java android in-app-billing play-billing-library


    【解决方案1】:

    它可以在类Purchase 中访问。

    Purchase.getOriginalJson();
    

    您可以访问它的地方:

    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(BillingResult billingResult) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                QueryPurchasesParams queryPurchasesParams = QueryPurchasesParams.newBuilder().setProductType(BillingClient.ProductType.INAPP).build();
                billingClient.queryPurchasesAsync(queryPurchasesParams, (billingResult1, list) -> runOnUiThread(() -> {
                    for (Purchase purchase: list) {
                        Log.d("originalJson", purchase.getOriginalJson());
                    }
                }));
            }
        }
    
        @Override
        public void onBillingServiceDisconnected() { }
    });
    

    和:

    @Override
    public void onPurchasesUpdated(@NonNull BillingResult billingResult, @Nullable List<Purchase> purchases) {
        runOnUiThread(() -> {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && purchases != null) {
                for (Purchase purchase: purchases) {
                    Log.d("originalJson", purchase.getOriginalJson());
                }
            }
        }
    }
    

    祝你好运。

    【讨论】:

      【解决方案2】:

      方法 SkuDetails.getOriginalJson() 已在 Google Play 结算库版本 5.1.0 及更高版本中弃用。检索用于创建 SkuDetails 对象的原始 JSON 字符串的推荐方法是使用 SkuDetails.toString() 方法。

      以下是如何使用它的示例:

      val skuDetails = ... // your SkuDetails instance
      val originalJson = skuDetails.toString()
      

      toString() 方法将返回 SkuDetails 对象的字符串表示形式,其中包括原始 JSON 字符串。然后您可以解析此字符串以提取所需的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多