Hola,
tengo implementado en mi app el servicio "in app billing" y puedo comprar el producto etc todo ok. El problema es que quiero que cuando compren el producto se oculte el boton de comprar y aparezca otro boton.. he puesto el siguiente codigo en el apartado en el que hay que indicar lo que se quiere hacer cuando se adquiere el producto pero no funciona:
Código:
boton.setVisibility(View.INVISIBLE);
premium.setVisibility(View.VISIBLE);
el "boton" es que realiza la compra (el que quiero que se oculte) el "premium" es el que tiene que aparecer el comprar. No se si esta bien eso así o no.. pero no se me ocurre otra cosa de hacerlo..
Os dejo mis codigos de la actividad de compra:
XML:
Código:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.barwill94.wikicraft.PurchaseActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="WikiCraft ES PRO"
android:layout_marginBottom="6dp"
android:layout_marginTop="6dp"
android:id="@+id/textView2"
android:layout_gravity="center_horizontal"
android:textSize="30dp"
android:textColor="@color/Red"
android:textStyle="bold"/>
<TextView
android:layout_below="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Compra la versión Pro de Wikicraft ES y desbloquea las siguientes funciones"
android:layout_marginBottom="16dp"
android:layout_marginTop="6dp"
android:id="@+id/textView3"
android:layout_gravity="center_horizontal"
android:textSize="20dp"
android:textColor="@color/Yellow"
android:textStyle="bold"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Comprar Pro"
android:id="@+id/boton"
android:onClick="boton"
android:layout_below="@+id/textView3"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/premium"
android:onClick="premium"
android:layout_below="@+id/boton"
android:layout_alignLeft="@+id/boton"
android:layout_alignStart="@+id/boton"
android:visibility="gone" />
</RelativeLayout>
JAVA:
Código:
package com.barwill94.wikicraft;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.android.vending.billing.util.*;
import com.barwill94.wikicraft.R;
public class PurchaseActivity
extends FragmentActivity
implements IabHelper.OnIabSetupFinishedListener, IabHelper.OnIabPurchaseFinishedListener{
public static final String SKU = "premium_item";
private IabHelper billingHelper;
private Button boton;
private Button premium;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_purchase);
boton = (Button)findViewById(R.id.boton);
premium = (Button) findViewById(R.id.button);
boton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startBuyProcess();
}
});
}
private void startBuyProcess(){
String clave = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4nvVUrkfIZoovZSlO+Sn2zpn05nvsLjIHujCKazev4f3HwK5pUhRxJoOv/RVi5O0yw9afUdq68n+IvR+BY5qURLzP4KisCH5+FnMXKjUf9mk0zhxAC3tni9KPwMRKHam6isPp2cTFfx7jhHntAV80SEhPfX7VM9hxBzQ/KtyRT4h9mUHjzbKZJMs8ws2l3DdkbUyu9Cd4dglFjcu0yPbKDNjTHedwu54PoxyXc4GT7N8bE0LYZ/AfJb3lNAren0k/n8PKWxqF5zmZFJQQjad5V3WcsjRxX7KxGBg5Dlbz0uX2SMTlh50JXLVKabCPODOiH1AW00lEnBkYSCF5be1jQIDAQAB";
billingHelper = new IabHelper(this, clave);
billingHelper.startSetup(this);
}
@Override
public void onIabSetupFinished(IabResult result) {
if (result.isSuccess()) {
try{
if(billingHelper.queryInventory(true, null).hasPurchase(PurchaseActivity.SKU)){
Toast.makeText(this, "Ya tienes este elemento!", Toast.LENGTH_SHORT).show();
} else {
compraElemento();
}
} catch(IabException e){
e.printStackTrace();
}
} else {
errorAlIniciar();
}
}
protected void errorAlIniciar() {
Toast.makeText(PurchaseActivity.this, "Error al intentar iniciar la compra", Toast.LENGTH_SHORT).show();
}
protected void compraElemento() {
purchaseItem(PurchaseActivity.SKU);
}
protected void purchaseItem(String sku) {
billingHelper.launchPurchaseFlow(this, sku, 123, this);
}
@Override
public void onIabPurchaseFinished(IabResult result, Purchase info) {
if (result.isFailure()) {
compraFallida();
} else if (PurchaseActivity.SKU.equals(info.getSku())) {
compraCorrecta(result, info);
}
}
/*
* COSAS QUE QUERAMOS HACER CUANDO SE HAYA
* ADQUIRIDO EL PRODUCTO CON EXITO
*/
protected void compraCorrecta(IabResult result, Purchase info) {
boton.setVisibility(View.INVISIBLE);
premium.setVisibility(View.VISIBLE);
// Consumimos los elementos a fin de poder probar varias compras
billingHelper.consumeAsync(info, null);
}
/*
* COSAS QUE QUERAMOS HACER CUANDO EL PRODUCTO
* NO HAYA SIDO ADQUIRIDO
*/
protected void compraFallida(){
}
//LIMPIAMOS
@Override
protected void onDestroy() {
disposeBillingHelper();
super.onDestroy();
}
private void disposeBillingHelper() {
if (billingHelper != null) {
billingHelper.dispose();
}
billingHelper = null;
}
}
He utilizado una compra de prueba y llego a comprar el producto pero luego se queda todo igual.. a ver si alguien puede ayudarme.. llevo ya un par de semanas buscando y dando vueltas para ver como puedo hacerlo..
Gracias!