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:

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.

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. 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

1 comentario

  1. Pingback: Bitacoras.com

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *