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.
1 comentario