Cannot upgrade android in-app subscription. Error: "Something went wrong on our end. Please try again."
Cannot upgrade android in-app subscription. Error: "Something went wrong on our end. Please try again."
问题:
- 无法将当前订阅升级到其他订阅。
- 显示错误:“我们这边出了点问题。请重试。”
描述:
- 正在使用
play billing library v3.0.3
,我们按照以下代码处理订阅升级。
BillingFlowParams purchaseParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails)
.setOldSku(oldSKU, oldPurchaseToken)
.setReplaceSkusProrationMode(IMMEDIATE_WITH_TIME_PRORATION)
.build();
- 我们发布时一切都符合预期。
- 部分用户反映无法升级订阅。
- 我们测试了升级并遇到了同样的错误:“我们这边出了点问题。请重试。”
- 然后我们升级到
play billing library v4.0.0
,认为它可以解决我们的问题。
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSubscriptionUpdateParams(SubscriptionUpdateParams.newBuilder()
.setOldSkuPurchaseToken(oldPurchaseToken)
.setOldSkuPurchaseId(oldSKU) // This method is not available in lib[4.0.0] but mentioned in docs
.setReplaceSkusProrationMode(IMMEDIATE_WITH_TIME_PRORATION))
.setSkuDetails(skuDetails)
.build();
- 再次报同样的错误:“我们这边出了点问题,请重试。”
- 另外
play billing library v4.0.0
在 class SubscriptionUpdateParams.Builder 中没有方法 setOldSkuPurchaseId() 但在 developer docs
下面附上错误截图
我设法摆脱了错误“我们这边出了点问题。请重试。”我清除了 Play Market 缓存并重新启动了设备。
更新:
我找到了解决办法。跳过此参数即可,不要指定它。它适用于我的应用程序中的订阅。
.setOldSkuPurchaseId(previousSku)
我不得不在 Google 的示例代码中添加一个额外的 .build()
// Retrieve a value for "skuDetails" by calling querySkuDetailsAsync()
val flowParams = BillingFlowParams.newBuilder()
.setSubscriptionUpdateParams(SubscriptionUpdateParams.newBuilder()
.setOldSkuPurchaseToken(purchaseTokenOfOriginalSubscription)
.setReplaceSkusProrationMode(desiredProrationMode)
.build() // <-- MISSING BUILD
)
.setSkuDetails(upgradeOrDowngradeSkuDetails)
.build();
val responseCode = billingClient.launchBillingFlow(activity, flowParams)
由于新的Reserve Bank of India eMandate notification,您的一些订阅体验可能会改变。
更多详情checkout this
问题:
- 无法将当前订阅升级到其他订阅。
- 显示错误:“我们这边出了点问题。请重试。”
描述:
- 正在使用
play billing library v3.0.3
,我们按照以下代码处理订阅升级。
BillingFlowParams purchaseParams = BillingFlowParams.newBuilder()
.setSkuDetails(skuDetails)
.setOldSku(oldSKU, oldPurchaseToken)
.setReplaceSkusProrationMode(IMMEDIATE_WITH_TIME_PRORATION)
.build();
- 我们发布时一切都符合预期。
- 部分用户反映无法升级订阅。
- 我们测试了升级并遇到了同样的错误:“我们这边出了点问题。请重试。”
- 然后我们升级到
play billing library v4.0.0
,认为它可以解决我们的问题。
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSubscriptionUpdateParams(SubscriptionUpdateParams.newBuilder()
.setOldSkuPurchaseToken(oldPurchaseToken)
.setOldSkuPurchaseId(oldSKU) // This method is not available in lib[4.0.0] but mentioned in docs
.setReplaceSkusProrationMode(IMMEDIATE_WITH_TIME_PRORATION))
.setSkuDetails(skuDetails)
.build();
- 再次报同样的错误:“我们这边出了点问题,请重试。”
- 另外
play billing library v4.0.0
在 class SubscriptionUpdateParams.Builder 中没有方法 setOldSkuPurchaseId() 但在 developer docs
下面附上错误截图
我设法摆脱了错误“我们这边出了点问题。请重试。”我清除了 Play Market 缓存并重新启动了设备。
更新: 我找到了解决办法。跳过此参数即可,不要指定它。它适用于我的应用程序中的订阅。
.setOldSkuPurchaseId(previousSku)
我不得不在 Google 的示例代码中添加一个额外的 .build()
// Retrieve a value for "skuDetails" by calling querySkuDetailsAsync()
val flowParams = BillingFlowParams.newBuilder()
.setSubscriptionUpdateParams(SubscriptionUpdateParams.newBuilder()
.setOldSkuPurchaseToken(purchaseTokenOfOriginalSubscription)
.setReplaceSkusProrationMode(desiredProrationMode)
.build() // <-- MISSING BUILD
)
.setSkuDetails(upgradeOrDowngradeSkuDetails)
.build();
val responseCode = billingClient.launchBillingFlow(activity, flowParams)
由于新的Reserve Bank of India eMandate notification,您的一些订阅体验可能会改变。
更多详情checkout this