Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 谷歌inApp onPurchaseStatechange_Android_In App Purchase_In App Billing - Fatal编程技术网

Android 谷歌inApp onPurchaseStatechange

Android 谷歌inApp onPurchaseStatechange,android,in-app-purchase,in-app-billing,Android,In App Purchase,In App Billing,我正在我的应用程序中实现谷歌应用程序内购买。我从Google端下载了代码,并在我的应用程序中运行。当我第一次遇到“签名验证失败”的错误时,我通过在发布版本中构建我的应用程序来解决它,对它进行签名,并将其作为未发布的应用程序发布到谷歌安卓市场。现在,当我购买应用程序并按下“接受”按钮并购买它时,我收到了一个响应,但数据没有存储在OnPurchEstate中。同样,应用程序给出了下载此应用程序时必须购买的信息。任何帮助都将不胜感激。这是详细的代码 我从onClick方法调用requestPurcha

我正在我的应用程序中实现谷歌应用程序内购买。我从Google端下载了代码,并在我的应用程序中运行。当我第一次遇到“签名验证失败”的错误时,我通过在发布版本中构建我的应用程序来解决它,对它进行签名,并将其作为未发布的应用程序发布到谷歌安卓市场。现在,当我购买应用程序并按下“接受”按钮并购买它时,我收到了一个响应,但数据没有存储在OnPurchEstate中。同样,应用程序给出了下载此应用程序时必须购买的信息。任何帮助都将不胜感激。这是详细的代码

我从onClick方法调用requestPurchase(stringproductid,stringpayload)

@Override
public void onClick(View view) {
    if(view == requestPurchaseButton) {
        mBillingService.requestPurchase("android.test.purchased", "10");
    }
}
调用了onRequestPurchaseResponse(Request,ResponseCode)回调方法。此处的responseCode给出值结果\u OK。因此,请求已发送到服务器

   @Override
   public void onRequestPurchaseResponse(RequestPurchase request,
            ResponseCode responseCode) 
   {
          if(responseCode == ResponseCode.RESULT_OK) {
        Log.d("My APP", "onRequestPurchaseResponse.ResponeCode.RESULT_OK");

      } else if(responseCode == ResponseCode.RESULT_USER_CANCELED) {

      } else { 

      }
   }
但是回调方法

@Override
    public void onPurchaseStateChange(PurchaseState purchaseState,
            String itemId, int quantity, long purchaseTime,
            String developerPayload) {
        Log.d("PucrchedState", "onPurchaseStateChanged");

    }

从不调用。

onPurchaseStateChange()是异步调用的,可能需要一些时间(通常在几秒钟内)。但是,如果您的设备位于防火墙后面,则响应可能会丢失或延迟,请确保没有任何东西阻止传入的连接(检查Google Talk是否工作)。还要确保您已在清单中注册了相应的
BroadcastReceiver

不清楚问题是什么,请详细说明实际问题。您可能还想试试最近发布的应用内计费v3,它更容易集成和理解。@Nikolay Elenkov我已经更新了我的问题