微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SKU 项目在 subscriptionPeriod 字段中包含意外值

如何解决SKU 项目在 subscriptionPeriod 字段中包含意外值

我在生产中遇到几个异常,这些异常显示 SKU 详细信息项的 subscriptionPeriod 字段中有一个意外值:

when (item.subscriptionPeriod) {
   "P1M" -> { // monthly
      holder.viewBinding.textViewPrice.text = ctx.getString(R.string.title_price_billed_monthly,item.price)
   }
   "P1Y" -> { // annual
      holder.viewBinding.textViewPrice.text = ctx.getString(R.string.title_price_billed_annually,item.price)
   }
   else -> {throw UnexpectedBehavior()}
}

在生产中会抛出 UnexpectedBehavior() 异常(这并不经常发生)。 鉴于此处对 API 的描述:https://developer.android.com/reference/com/android/billingclient/api/SkuDetails#getSubscriptionPeriod() 并且由于我的应用程序仅提供按年和按月订阅;我迷路了。

变量 item 是一个 com.android.billingclient.api.SkuDetails

注意:我修改代码以记录在 subscriptionPeriod 变量中存储的内容;一旦我掌握了这些信息,我就会更新这个问题。

解决方法

这可能来自试图模拟假收据的恶意用户:Android 上经常发生这种情况。

您会注意到伪造收据的其中一件事是:

  • 价格和货币不正确。例如,我们收到了 1 美元的年度订阅金额,而该应用仅收取 1 欧元,而年度计划的价格为 100 欧元(约 120 美元)
  • 不正确的订阅期(如您所述)

因此,如果您正确验证了订阅收据,则无需担心。

如果你不确定你应该做什么,我写了一篇关于这个主题的文章:How to fight fraud in your In-App Subscriptions?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。