2017-08-28 1 views
0

Je souhaite créer une application d'achat intégrée. J'ai un code. Et j'ai google play console tout ensemble. "IabResult: Erreur lors de la vérification de la prise en charge de la facturation v3 (réponse: 3: facturation indisponible)" Je souhaite donc vérifier si mon appareil prend en charge la facturation via l'application v3. Voici mon code:Comment vérifier si le périphérique prend en charge la facturation via l'application v3 dans android

package com.khabuko.dtv; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 

import com.khabuko.dtv.util.IabHelper; 
import com.khabuko.dtv.util.IabResult; 
import com.khabuko.dtv.util.Inventory; 
import com.khabuko.dtv.util.Purchase; 

public class InAppBillingActivity extends AppCompatActivity { 

private static final String TAG = 
     "InAppBilling"; 
IabHelper mHelper; 
static final String ITEM_SKU = "com.khabuko.item"; 

private Button clickButton; 
private Button buyButton; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_in_app_billing); 

    buyButton = (Button)findViewById(R.id.buyButton); 
    buyButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      buyClick(v); 
     } 
    }); 
    clickButton = (Button)findViewById(R.id.clickButton); 
    clickButton.setEnabled(false); 
    String base64EncodedPublicKey = 
      "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn+naZOOOHNVdP0zQMkeX5mFwBb9BU78cg4oqAxtY8gaMMuEHAaHBwU7yXW6zVh9uTof23SO4GzxTJcIPXCeTyMFmcoFkNvPtqZSFqYcqA5M8Ief0tzpXr81aLEe0lxSy/t3VTN29UA+AaXjt3bvsDXQQPUQXr1HEONfix6TsudI6SCILftZTMIfRZYfOU+0OJdi7J8uDkU2TBjz40UhGc4SWmCoANXVM5yjZ8w4jspXXmej7pP52NMb5nAlK5NrAgIEjHhSDrf8Sl0DhNwLTJM7e2yOWOPt/MvdDsQo1ensm2sSH0jwn1K04RVC8AIGPqtzxLZgP+Ysby0HKpMSU3wIDAQAB"; 

    mHelper = new IabHelper(this, base64EncodedPublicKey); 

    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { 
            public void onIabSetupFinished(IabResult result) { 
             Log.d(TAG,"45-46"); 
             if (!result.isSuccess()) { 
              Log.d(TAG, "In-app Billing setup failed: " + 
                result); 
             } else { 
              Log.d(TAG, "In-app Billing is set up OK"); 
             } 
            } 
           }); 
} 

public void buttonClicked (View view) 
{ 
    clickButton.setEnabled(false); 
    buyButton.setEnabled(true); 
} 

public void buyClick(View view) { 
    mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001, 
      mPurchaseFinishedListener, "mypurchasetoken"); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent data) 
{ 
    Log.i(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data); 
    if (!mHelper.handleActivityResult(requestCode, 
      resultCode, data)) { 
     super.onActivityResult(requestCode, resultCode, data); 
    }else { 
     Log.i(TAG, "onActivityResult handled by IABUtil."); 
    } 
} 

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
     = new IabHelper.OnIabPurchaseFinishedListener() { 
    public void onIabPurchaseFinished(IabResult result, 
             Purchase purchase) 
    { 
     if (result.isFailure()) { 
      // Handle error 
      return; 
     } 
     else if (purchase.getSku().equals(ITEM_SKU)) { 
      consumeItem(); 
      buyButton.setEnabled(false); 
     } 

    } 
}; 
public void consumeItem() { 
    mHelper.queryInventoryAsync(mReceivedInventoryListener); 
} 

IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener 
     = new IabHelper.QueryInventoryFinishedListener() { 
    public void onQueryInventoryFinished(IabResult result, 
             Inventory inventory) { 

     if (result.isFailure()) { 
      // Handle failure 
     } else { 
      mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), 
        mConsumeFinishedListener); 
     } 
    } 
}; 

IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = 
     new IabHelper.OnConsumeFinishedListener() { 
      public void onConsumeFinished(Purchase purchase, 
              IabResult result) { 

       if (result.isSuccess()) { 
        clickButton.setEnabled(true); 
       } else { 
        // handle error 
       } 
      } 
     }; 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (mHelper != null) mHelper.dispose(); 
    mHelper = null; 
} 


} 

Répondre

0

In-app-facturation disponibilité est vérifiée dans IabHelper.OnIabSetupFinishedListener().

Mais vous devez attendre un certain temps après avoir créé de nouveaux SKU. Toute modification dans Google Console ne se produit pas immédiatement.

+0

Merci. Mais je l'ai déjà compris. Puis-je vous poser une autre question? Quoi qu'il en soit question est de savoir comment obtenir la réception de chaque achat et l'envoyer au serveur? – GreeDy6691

+0

Il est préférable de poser une nouvelle question, vérifiez https://developer.android.com/google/play/billing/billing_reference.html#getPurchases –

+0

Ouais c'est mieux mais je n'ai pas la permission de poser une autre question.J'ai toujours résolu le problème merci pour votre souci: D – GreeDy6691