升级订阅计划时在 App Billing 中出现错误 - “从服务器 [DF-DFERH-01] 检索信息时出错”

In App Billing error when upgrading subscription plan - “Error while retrieving information from server [DF-DFERH-01]”

我们的应用有 3 种可能的自动续订订阅计划 - 每月、6 个月和每年。 它们在 Google 购买时发挥和工作良好。

最近,我们添加了使用新 API - https://developer.android.com/google/play/billing/billing_subscriptions#Allow-upgrade

更改计划的选项

对于降级(较短的订阅期),我们使用 DEFERRED 按比例分配模式。 对于升级,我们使用 IMMEDIATE_AND_CHARGE_PRORATED_PRICE.

在我们的测试中,我们发现所有更改都可以正常工作,除了将“6 个月”更改为 "yearly"。每当我们这样做时(用户已经有 6 个月的订阅,试图更改为每年),而不是获得正常的购买流程,我们会收到一个错误。 显示的错误消息是

"Error while retrieving information from server [DF-DFERH-01]"

我们从图书馆收到的实际错误代码是 SERVICE_UNAVAILABLE

同样 - 所有其他流程都正常工作,例如每月 -> 每年、每月 -> 6 个月。

关于正在发生的事情缺乏文档和清晰度,logcat 没有显示任何有用的信息。

据我从你的问题中可以看出,我猜长期订阅的每月价格低于例如一个月订阅。

文档

对于比例分配模式 IMMEDIATE_AND_CHARGE_PRORATED_PRICE documentation 中的示例说:

This mode can be used because the Tier 2 subscription price per time unit (/year = /month) is greater than Tier 1 subscription price per time unit (/month).

这表明您只能在每月费用因给定升级而增加时使用此模式。 在下面的免费试用文档中提到:

Note: This option is available only for a subscription upgrade, where the price per unit of time increases

(我猜他们不知何故忘了将此注释也添加到第一个按比例分配模式的描述中,因为它似乎是一个 有或没有免费试用的限制

解决方案

所以将按比例分配模式更改为例如IMMEDIATE_WITH_TIME_PRORATION 或任何符合您要求的方法似乎是唯一的解决方案(正如@SirKnigget 在问题线程中也提到的那样),假设您的订阅不会随着升级而变得更加昂贵。