0

我尝试将我的应用程序放入应用程序计费 v3。

我跟着:http: //developer.android.com/google/play/billing/billing_integrate.html

我将我的应用程序上传到开发者控制台 3 天并设置在应用程序产品中。

我输入了我的 Base64 编码的 RSA 公钥和我的应用内产品 ID。

当我开始购买时,我收到错误消息。当我检查我的 RESPONSE_CODE 它的 5 和谷歌

应用内结算参考 ( http://developer.android.com/google/play/billing/billing_reference.html#billing-codes )

看来我的应用程序设置有问题。

当我尝试像 android.test.purchased 这样的谷歌测试 ID 时,我得到了很好的结果。

这是我的代码,也许我在这里做错了什么:

some_id is my test in app product id.


protected void onCreate(Bundle savedInstanceState) {

..
..
..
Helper = new IabHelper(this, base64EncodedPublicKey);

         mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
               public void onIabSetupFinished(IabResult result) {
                  if (!result.isSuccess()) {                  
                     Toast.makeText(getApplicationContext(), "connection bad",Toast.LENGTH_SHORT).show();           
                  }
                     Toast.makeText(getApplicationContext(), "connection good",Toast.LENGTH_SHORT).show();
               }
            });

          mServiceConn = new ServiceConnection() {


           @Override
           public void onServiceDisconnected(ComponentName name) {
               mService = null;
           }

           @Override
           public void onServiceConnected(ComponentName name, 
              IBinder service) {
               mService = IInAppBillingService.Stub.asInterface(service);
           }
          };

          bindService(new 
                    Intent("com.android.vending.billing.InAppBillingService.BIND"),
                            mServiceConn, Context.BIND_AUTO_CREATE);

...
...
..

我的购买代码:

IabHelper.QueryInventoryFinishedListener 
       mQueryFinishedListener = new IabHelper.QueryInventoryFinishedListener() {
       public void onQueryInventoryFinished(IabResult result, Inventory inventory)   
       {
          if (result.isFailure()) {
             // handle error
             return;
           }

           String applePrice =
              inventory.getSkuDetails("some_id").getPrice();


           // update the UI 
       }
    };

    ArrayList<String> skuList = new ArrayList<String>();
    skuList.add("some_id");
    Bundle querySkus = new Bundle();
    querySkus.putStringArrayList("ITEM_ID_LIST", skuList);

    Bundle skuDetails = new Bundle();
    try {
        skuDetails = mService.getSkuDetails(3, getPackageName(), "inapp", querySkus);
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String sku = "some_id";
    Bundle buyIntentBundle = new Bundle();

    try {
        buyIntentBundle = mService.getBuyIntent(3, getPackageName(), sku, "inapp", "j");
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");

    try {
        startIntentSenderForResult(pendingIntent.getIntentSender(),1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
    } catch (SendIntentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null);
    } catch (RemoteException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
4

1 回答 1

4

您不能使用开发者帐户来测试 In App Billing。那是因为你不能靠自己做任何事情。您必须创建另一个帐户并在开发者控制台中为其提供测试人员权限(但前提是您尚未发布应用程序 - 任何接受应用程序开发人员的人都可以在应用程序中购买)。另请注意,必须在开发者控制台中激活购买。

查看设置测试购买部分(不能使此链接指向该部分本身,因此请手动滚动到它)。

PS 另请注意,测试人员帐户必须是系统中的主帐户 - 例如您在硬重置后首先设置的帐户。因为即使您正在使用另一个帐户登录游戏,也只能为主帐户进行购买。但是您可以对此进行测试,也许在过去的几个月中发生了一些变化。

于 2013-06-15T22:46:13.430 回答