【问题标题】: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 字符串。然后您可以解析此字符串以提取所需的信息。