0

アプリにアプリ内課金 v3 を入れようとしています。

私はフォローしました:http://developer.android.com/google/play/billing/billing_integrate.html

アプリを開発者コンソールに 3 日間アップロードし、アプリ製品に設定しました。

Base64 でエンコードされた RSA 公開鍵とアプリ内製品 ID を入力します。

購入を開始すると、エラー メッセージが表示されます。RESPONSE_CODE を 5 と Google で確認すると

アプリ内課金リファレンス ( http://developer.android.com/google/play/billing/billing_reference.html#billing-codes )

アプリの設定に問題があるようです。

android.test.purchased のような Google テスト 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