Windows 8 Tips&Tricks: Verificar la compra de un In-App Purchase

Windows 8 incorpora los “in-app purchases”, que nos permiten dejar que el usuario adquiera funcionalidad añadida dentro de la aplicación.

Del proceso de compra se ocupa la Tienda de Windows, pero es nuestra responsabilidad como programadores el preguntarle a la Tienda que compras ha realizado el usuario.

Para solicitar una compra a la tienda, tenemos a nuestra disposición la API “RequestProductPurchaseAsync”. Esta llamada nos retornará “S_OK” a menos que se haya producido algún tipo de error durante el proceso de compra. Ahora bien, un usuario puede decidir comprar una característica y a mitad del proceso cambiar de opinión y cancelar la compra. En este caso, no se ha producido ningún error, simplemente se ha desestimado la compra, y en ausencia de errores, el retorno será “S_OK”. Por ello, tras llamar a “RequestProductPurchaseAsync”, debemos preguntarle a la tienda si el producto ha sido comprado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
async void RequestPurchase(string key)
{
    bool purchased =  false;
    var productLicenses = CurrentAppSimulator.LicenseInformation.ProductLicenses; //Obtenemos las licencias
    try
    {
        if (productLicenses.ContainsKey(key) && !productLicenses[key].IsActive) //Comprobamos que existe y que no lo ha comprado ya
        {
            await CurrentAppSimulator.RequestProductPurchaseAsync(key, false); //Pedimos la compra
            purchased = productLicenses[key].IsActive; //Si se ha comprado, estará activo
        }
    }
    catch (Exception e) { /* Manejamos los errores */ }
}

Si el usuario hubiese cancelado la acción de compra, el valor del producto para IsActive, sería false, y nuestra aplicación podría continuar como si no se hubiera iniciado el proceso de compra.

About the Author

Me llamo Pablo Carballude González, soy graduado en computación y con master en HCI y Seguridad Informática. Actualmente trabajo para Microsoft como Developer Evangelist. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P