gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:49:49 26 4
gpt4 key购买 nike

我正在使用 Google 的计费库 4。BillingClient.launchBillingFlow 的文档说:

Initiates the billing flow for an in-app purchase or subscription.

It will show the Google Play purchase screen. The result will be delivered via the PurchasesUpdatedListener interface implementation set by 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 - 在各种条件下,BillingFlowParamsBillingClient 的当前配置不匹配目的。

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

    最佳答案

    根据我的经验,您可以处理如下示例中提到的结果:-

     this.mBillingClient = BillingClient.newBuilder(this).setListener(new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> list) {
    if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null) {
    for (Purchase purchase : list) {

    if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
    addPurchaseDetails(purchase);
    handlePurchase(purchase);

    }
    }
    } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
    Log.v("purchase", billingResult.getDebugMessage());
    }
    意味着您必须检查:- billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK && list != null
    并从列表中获取购买并根据您的需要处理购买。
        for (Purchase purchase : list) {
    }

    Also find the errors below :-

    public @interface BillingResponseCode {
    int SERVICE_TIMEOUT = -3;
    int FEATURE_NOT_SUPPORTED = -2;
    int SERVICE_DISCONNECTED = -1;
    int OK = 0;
    int USER_CANCELED = 1;
    int SERVICE_UNAVAILABLE = 2;
    int BILLING_UNAVAILABLE = 3;
    int ITEM_UNAVAILABLE = 4;
    int DEVELOPER_ERROR = 5;
    int ERROR = 6;
    int ITEM_ALREADY_OWNED = 7;
    int ITEM_NOT_OWNED = 8;
    }

    关于android - BillingClient.launchBillingFlow() 可以返回哪些结果代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68825055/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com