BillingClient.launchBillingFlow() 可以返回哪些结果代码?

Ted*_*opp 6 android android-billing play-billing-library

我正在使用 Google 的 Billing Library 4。文档说BillingClient.launchBillingFlow

启动应用内购买或订阅的计费流程。

它将显示 Google Play 购买屏幕。结果将通过PurchasesUpdatedListener所设置的接口实现传递BillingClient.Builder.setListener(PurchasesUpdatedListener)

传递PurchasesUpdatedListener一个BillingResult包含响应代码的对象。但是,该launchBillingFlow方法还返回一个BillingResult对象。我的问题是,我需要在每个地方处理哪些响应代码?

容我们说,该文档不太清楚,而且似乎也是错误的。对于launchBillingFlow,它表示如果用户取消购买流程,该方法将返回一个BillingResult带有代码的。BillingResponseCode.BILLING_CANCELED然而,我的实验表明,代码实际上是在对PurchasesUpdatedListener.onPurchasesUpdated.

不幸的是,源代码BillingClient不可用,但我确实反编译了库模块。据我所知,调用launchBillingFlow可以返回以下结果代码:

  • OK- 当流程成功启动时(并且向用户显示 Google 的购买屏幕)。
  • SERVICE_DISCONNECTED-BillingClient当前未连接到设备上的 Google Play 时。
  • SERVICE_TIMEOUT- 如果在尝试启动流程期间连接中断。(我想我在某处读到,如果 Google Play 在后台更新,就会发生这种情况。)
  • FEATURE_NOT_SUPPORTED- 在与对象BillingFlowParams的当前配置不匹配的各种条件下BillingClient

反编译代码中似乎还有一个地方捕获并返回了来自 Google Play 计费服务的某些错误响应。有谁知道调用可以返回哪些其他响应代码launchBillingFlow

sno*_*lax 0

首先,感谢您提出的好问题。据我研究,下面列出的值 \xe2\x80\x8b\xe2\x80\x8b 可用。

\n
BillingClient.BillingResponseCode // all codes\n
Run Code Online (Sandbox Code Playgroud)\n
\n

int BILLING_UNAVAILABLE请求的类型不支持\n计费 API 版本。

\n

int DEVELOPER_ERROR提供给 API 的参数无效。

\n

int ERROR API 操作期间发生致命错误。

\n

int FEATURE_NOT_SUPPORTED当前设备上的 Play\nStore 不支持请求的功能。

\n

int ITEM_ALREADY_OWNED购买失败,因为项目已被\n拥有。

\n

int ITEM_NOT_OWNED由于项目不被拥有,因此消费失败。

\n

int ITEM_UNAVAILABLE请求的产品无法购买。

\n

int OK成功。

\n

int SERVICE_DISCONNECTED Play 商店服务现在未连接 -\n可能是暂时状态。

\n

int SERVICE_TIMEOUT在 Google Play 响应之前,请求已达到\n最大超时时间。

\n

int SERVICE_UNAVAILABLE网络连接已关闭。

\n

int USER_CANCELED用户按回或取消对话框。

\n
\n
launchBillingFlow // return values for\n
Run Code Online (Sandbox Code Playgroud)\n
\n

启动计费流程操作的结果。\n BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED \n如果用户已拥有所购买的项目,\n BillingClient.BillingResponseCode.ITEM_UNAVAILABLE \n如果该项目不可购买,以及\n BillingClient。 BillingResponseCode.USER_CANCELED \n如果用户取消购买流程。

\n
\n

更新答案

\n
\n

当调用\nlaunchBillingFlow() 失败时可能的返回值是什么

\n
\n
    \n
  • ITEM_ALREADY_OWNED
  • \n
  • ITEM_UNAVAILABLE
  • \n
  • USER_CANCELLED
  • \n
\n
\n

调用 onPurchasesUpdated() 时(流程完成时)可能的值是什么。

\n
\n
    \n
  • 好的
  • \n
  • ITEM_UNAVAILABLE
  • \n
  • ITEM_ALREADY_OWNED
  • \n
  • USER_CANCELLED
  • \n
  • 错误启动BillingFlow 错误
  • \n
\n