处理应用内结算的错误代码

时间:2018-02-11 07:39:56

标签: android in-app-billing

我正在尝试在Android应用程序中的应用计费中实现。我已经阅读了文档,我已经完成了应用程序计费的实现,除了处理错误代码的部分。文档说明了以下内容

“服务器响应代码 下表列出了从Google Play发送到您的应用程序的所有服务器响应代码。 Google Play会将响应代码作为映射到响应捆绑包中的RESPONSE_CODE键的整数同步发送。您的应用程序必须处理所有这些响应代码。

表1.应用内结算API调用的响应代码摘要。“

enter image description here

所以我必须处理所有这些错误代码。我已经搜索了一个如何做的例子,但我还没找到。

任何人都可以提供处理所有错误代码的示例,以便我可以关注它吗?

这是接收响应错误代码的方法(可能是上表中的错误之一)

 public void onError(int response, Exception e) {
        // handle errors here
        Log.w(LOG," in onError"+ "response is" + response);
    }

因此,只要我从谷歌文档中了解到这里,我就必须处理上述所有错误代码。

所以我想看一个例子。最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

因为Google说您必须处理所有错误并不意味着您必须这样做。

它只是首选项。我创建了20多个具有完整计费功能的应用程序,并且以相同的方式处理错误。对我来说最重要的永远是BILLING_RESPONSE_RESULT_OK。其余的我只是用else来将它们组合在一起(因为我的用户不需要特定的错误)。

这是我的工作方式:

@Override
            public void onBillingSetupFinished(BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    //do my response is OK code here
                    return;
                }
                //do my response is an ERROR code here
            }

但是,如果您要处理所有错误,则可以轻松完成此操作

                           @Override
                            public void onBillingSetupFinished(BillingResult billingResult) {
                                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                                    //do my response is OK code here
                                    return;
                                } else if (billingResult.getResponseCode() ==
    BillingClient.BillingResponseCode.USER_CANCELED) {
        //do user cancelled here
        } 

            else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
            //do user cancelled here
            } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.SERVICE_UNAVAILABLE) {
            //do SERVICE_UNAVAILABLE here
            } else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.BILLING_UNAVAILABLE) {
            //do BILLING_UNAVAILABLE here
        }}

依此类推。

PS。使用切换案例,可以更快,更优化地完成上述操作。