El Freemium – Implementando micropagos en Android

A lo largo del curso de programación de Apps con Android explicaremos como añadir publicidad en tu app, pero uno de los modelos de negocio más utilizados hoy en día para las apps no es el modelo free+ads o el pago sino el que se conoce como "freemium", en el que la app es completamente gratuita pero permite desbloquear ciertos elementos a cambio de un micropago. Para ello, Google nos proporciona el "In-App billing" o facturación in-app para micropagos.

Vamos a aprender cómo implementarlo. Aprenderemos a hacerlo desde Android Studio pero en Eclipse es similar. Vamos a utilizar una librería que nos facilita el trabajo, muy bien documentada, llamada "Checkout" (link aquí). Ten en cuenta que esto lo podrás hacer solo con proyectos ya creados, de los que puedas sacar un apk.

El primer paso será añadir la librería al proyecto. Vete al archivo build.gradle y añade esta línea:

compile 'org.solovyev.android:checkout:1.0.1'

Y en el manifest, antes de añade el permiso de facturación:



Vamos a imaginar que hemos creado un producto con id "sku_01" (luego veremos sobre esto). Bien, haremos que al clicar sobre cierto botón, aparezca el diálogo para comprar el producto. Veamos cómo, primero creamos una clase de tipo Application:

public class MyApplication extends Application {
private static MyApplication sInstance;

private final Billing mBilling = new Billing(this, new Billing.DefaultConfiguration() {
@Override public String getPublicKey() {
return "Your public key, don't forget abput encryption";
}
});

public MyApplication() {
sInstance = this;
}

public static MyApplication get() {
return sInstance;
}

public Billing getBilling() {
return mBilling;
}
}

En getPublicKey deberemos añadir nuestra key de venta, luego veremos de dónde sale. De momento lo dejamo así. Ahora, en la activity donde compremos, como "globales" añadiremos:

private class PurchaseListener extends EmptyRequestListener {
}
private class InventoryCallback implements Inventory.Callback {
@Override public void onLoaded(Inventory.Products products) {
// your code here }
}

private final ActivityCheckout mCheckout = Checkout.forActivity(this, MyApplication.get().getBilling());
private Inventory mInventory;

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Checkout.onActivityResult(requestCode, resultCode, data);
}

@Override public void onClick(View v) {
mCheckout.whenReady(new Checkout.EmptyListener() {
@Override public void onReady(BillingRequests requests) {
requests.purchase(ProductTypes.IN_APP, "sku_01", null, mCheckout.getPurchaseFlow());
}
});
}

En OnCreate:

mCheckout.start();
mCheckout.createPurchaseFlow(new PurchaseListener());
mInventory = mCheckout.makeInventory();
mInventory.load(Inventory.Request.create().loadAllPurchases().loadSkus(ProductTypes.IN_APP, "sku_01"), new InventoryCallback());

Y en OnDestroy:

@Override protected void onDestroy() {
mCheckout.stop();
super.onDestroy();
}

Y eso es todo. Crea el apk y súbelo a Google Play, y ahí te aparecerá la licencia de vending y podrás añadir productos en In App Products (por ejemplo, el sku_01):



¡¡Así de fácil!!

Sé el primero en dejar un comentario...

Nota: ¡El código HTML no será interpretado!
* Campos obligatorios