升级订阅计划时出现应用结算错误 - “从服务器 [DF-DFERH-01] 检索信息时出错”

Sir*_*get 6 android in-app-purchase in-app-billing google-play google-play-services

我们的应用程序有 3 种可能的自动续订订阅计划 - 每月、6 个月和每年。它们在 Google Play 中定义并且在购买时运行良好。

最近,我们添加了一个使用新 API 更改计划的选项 - https://developer.android.com/google/play/billing/billing_subscriptions#Allow-upgrade

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

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

“从服务器 [DF-DFERH-01] 检索信息时出错”

我们从库中收到的实际错误代码是SERVICE_UNAVAILABLE.

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

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

nit*_*rat 2

据我从你的问题中可以看出,我猜想,持续时间较长的订阅每月的价格会比一个月订阅的价格更低。

文档

对于按比例分配模式,文档IMMEDIATE_AND_CHARGE_PRORATED_PRICE中的示例表示:

可以使用此模式,因为每个时间单位的第 2 层订阅价格(36 美元/年 = 3 美元/月)大于每个时间单位的第 1 层订阅价格(2 美元/月)。

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

注意:此选项仅适用于订阅升级,其中每单位时间的价格会增加

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

解决方案

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