Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Falha ao tentar realizar compra In-app Billing

Você não pode utilizar o mesmo email de desenvolvedor para testar o app in billing, configure outro email.


2014-08-28 17:32 GMT-03:00 Jean Carlos Almeida <jeanjnx@gmail.com>:
Pessoal implementei minha classe para in-app Billing e tudo ocorreu perfeitamente só que...

Não consigo realizar compra pelo celular do desenvolvedor (O meu).

Não consigo testar o aplicativo debugando, quando clico em comprar, aparece: "Esta versão do aplicativo não está configurada para faturamento....", pelo que entendi isto é por que o aplicativo não está na google play, porém ele está com a mesma versão, só que estou executando direto do eclipse.

Instalando em um dispositivo terceiro, consegui realizar a compra, porém não ocorreu o fluxo que eu desejava após a conclusão da compra, porém como vou saber o que está dando errado se não consigo debugar?

Por favor alguém sabe me ajudar?

Segue código caso achem necessário:

public class Compra extends ActivityBase{
 
private static String noAd = "";
 
private IabHelper mHelper;
 
private int codigoCompra = 1001;
 
private ProgressDialog progresso;
 
private ActivityBase tela;


 
 
@Override
   
public void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView
(R.layout.compra); //Criar this
        noAd
= "MINHA CHAVE"
 mHelper
= new IabHelper(this,"MEU PAYLOAD");
 mHelper
.startSetup(new IabHelper.OnIabSetupFinishedListener() {
 
public void onIabSetupFinished(IabResult result) {
 
if (!result.isSuccess()) {
 
return;
 
}
 
if (mHelper == null) return;
 mHelper
.queryInventoryAsync(getInventarioListener);
 
}
 
});
 tela
= this;
 
 
String compra = getIntent().getStringExtra("Compra");
 
}
 
 
public void comprar(View v)
 
{
 removerAnuncios
();
 
}


 
IabHelper.QueryInventoryFinishedListener getInventarioListener = new IabHelper.QueryInventoryFinishedListener() {
 
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
 
if (mHelper == null) return;
 
if (result.isFailure()) {
 
return;
 
}
 
 consultarCompras
();
 
 
// Produto comprado
 
Purchase noAdProduto = inventory.getPurchase(noAd);
 
boolean noAdComprado = (noAd != null &&
 verifyDeveloperPayload
(noAdProduto));
 
if (noAdComprado)
 
{
 salvarCompra
(tela.getString(R.string.noAd));
 
}
 
}
 
};


 
IabHelper.OnIabPurchaseFinishedListener compraFinalizadaListener = new IabHelper.OnIabPurchaseFinishedListener() {
 
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
 progresso
.dismiss();
 
if (mHelper == null) return;
 
if (result.isFailure()) {
 
Suporte.alertar(tela, "Falha ao realizar compra!");
 
//EasyTracker.getInstance(tela).send(MapBuilder.createEvent("Compra",
 
//"Falha ao comprar", "Produto: "+purchase.getSku(), null).build());
 
return;
 
}
 
if (!verifyDeveloperPayload(purchase)) {
 
Suporte.alertar(tela.getApplicationContext(), "Falha ao realizar compra. Foi detectada uma tentativa de fraude!");
 
//EasyTracker.getInstance(tela).send(MapBuilder.createEvent("Compra",
 
//"Tentativa de fraude", "Produto: "+purchase.getSku()+" - Payload: "+purchase.getDeveloperPayload(), null).build());
 
return;
 
}




 
if (purchase.getSku().equals(noAd)) {
 
Suporte.alertar(tela, "Compra realizada com sucesso!");
 salvarCompra
(noAd);
 
//tela.desabilitarAdPosCompra();
 
}
 
}
 
};


 
private boolean verifyDeveloperPayload(Purchase p) {
 
return p != null && p.getDeveloperPayload().equals("MEU PAYLOAD");
 
}
 
 
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   
Log.i("AA","onActivityResult(" + requestCode + "," + resultCode + "," + data);


   
// Pass on the activity result to the helper for handling
   
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
       
this.setOnActivityResultCompra(requestCode, resultCode, data);
   
}
   
else {
       
Log.i("BB", "onActivityResult handled by IABUtil.");
   
}
 
}


 
public void removerAnuncios() {
 mostrarCarregando
();
 
String payload = "CHAVE");


 mHelper
.launchPurchaseFlow(this, noAd, codigoCompra,
 compraFinalizadaListener
, payload);
 
}
 
 
private void salvarCompra(String key)
 
{
 
SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
 
SharedPreferences.Editor editor = sharedPref.edit();
 editor
.putBoolean(key, true);
 editor
.commit();


 
if(sharedPref.getInt(key+"_ID", -1) < 1)
 
{
 enviarCompra
(key);
 
}
 
}
 
 
private void enviarCompra(String key)
 
{
 
new ControleCompra(this).execute(key);
 
}
 
 
private void consultarCompras()
 
{
 
new ControleCompra(this).execute(this.getString(R.string.GETCOMPRAS));
 
}
 
 
public boolean comprado(Activity cx, String key)
 
{
 
return cx.getPreferences(Context.MODE_PRIVATE).getBoolean(key, false);
 
}
 
 
private void mostrarCarregando()
 
{
 progresso
= new ProgressDialog(this);
 progresso
.setTitle(R.string.solicitandoCompra);
 
CharSequence carregando = this.getString(R.string.carregando)+"...";
 progresso
.setMessage(carregando);
 progresso
.setProgressStyle(ProgressDialog.STYLE_SPINNER);
 progresso
.show();
 
}


Após realizada a compra, deveria ser salvo em preferences a compra e assim quando alguma activity com anúncio fosse carregada seria verificado que foi comprada a remoção do mesmo.

Any?

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário