Habilitar compras de productos desde la aplicación

Independientemente de que la aplicación sea gratuita o no, puedes vender contenido, otras aplicaciones o nuevas funcionalidades de la aplicación (como el desbloqueo del nivel siguiente de un juego) desde la misma aplicación. Aquí te mostramos cómo habilitar estos productos en la aplicación.

Importante

En este artículo se muestra cómo usar miembros del espacio de nombres Windows.ApplicationModel.Store para habilitar las compras de productos desde la aplicación. Este espacio de nombres ya no se actualiza con nuevas características y se recomienda usar el espacio de nombres Windows.Services.Store en su lugar. El espacio de nombres Windows.Services.Store admite los tipos de complementos más recientes, como complementos y suscripciones consumibles administrados por la Tienda, y está diseñado para ser compatible con futuros tipos de productos y características compatibles con el Centro de partners y la Tienda. El espacio de nombres Windows.Services.Store se introdujo en Windows 10, versión 1607, y solo se puede usar en proyectos que tienen como destino Windows 10 Anniversary Edition (10.0; Compilación 14393) o una versión posterior en Visual Studio. Para obtener más información sobre cómo habilitar las compras de productos desde la aplicación mediante el espacio de nombres Windows.Services.Store , consulte este artículo.

Nota:

Los productos desde la aplicación no se pueden ofrecer desde una versión de prueba de una aplicación. Los clientes que usan una versión de prueba de la aplicación solamente pueden comprar un producto desde la aplicación si compran una versión completa de la misma.

Requisitos previos

  • Una aplicación de Windows en la que se puedan agregar características que los clientes pueden comprar.
  • Cuando codificas y pruebas nuevos productos desde la aplicación por primera vez, debes usar el objeto CurrentAppSimulator en lugar del objeto CurrentApp. De esta manera, puedes comprobar la lógica de la licencia con llamadas simuladas al servidor de licencias, en lugar de llamar al servidor activo. Para ello, debes personalizar el archivo denominado WindowsStoreProxy.xml en %userprofile%\AppData\local\packages\<package name>\LocalState\Microsoft\Windows Store\ApiData. El simulador de Microsoft Visual Studio crea este archivo la primera vez que se ejecuta la aplicación, aunque también puedes cargar un archivo personalizado en el tiempo de ejecución. Para obtener más información, consulta Uso del archivo WindowsStoreProxy.xml con CurrentAppSimulator.
  • Este tema también hace referencia a los ejemplos de código que se proporcionan en la muestra de la Tienda. Esta muestra es ideal para conseguir experiencia práctica con las diferentes opciones de monetización que se proporcionan para las aplicaciones para la Plataforma universal de Windows (UWP).

Paso 1: Inicializa la información de licencia para la aplicación

Cuando se esté iniciando la aplicación, obtén el objeto LicenseInformation de la aplicación mediante la inicialización de la clase CurrentApp o CurrentAppSimulator para habilitar las compras de un producto desde la aplicación.

void InitializeApp()
{
    // Some app initialization code...

    // Initialize the license info for use in the app that is uploaded to the Store.
    // Uncomment the following line in the release version of your app.
    //   licenseInformation = CurrentApp.LicenseInformation;

    // Initialize the license info for testing.
    // Comment the following line in the release version of your app.
    licenseInformation = CurrentAppSimulator.LicenseInformation;

    // Other app initialization code...
}

Paso 2: Agrega las ofertas desde la aplicación

Para cada función que quieras tener disponible a través de un producto desde la aplicación, crea una oferta y agrégala a la aplicación.

Importante

Debes agregar todos los productos desde la aplicación que quieras presentar a tus clientes a tu aplicación antes de enviarlos a la Tienda. Si deseas agregar nuevos productos en la aplicación más adelante, tendrás que actualizar la aplicación y enviar una nueva versión.

  1. Crea un token de oferta desde la aplicación

    En la aplicación, puedes identificar cada producto desde la aplicación con un token. Este token es una cadena que debes definir y usar en la aplicación y en la Tienda para identificar un producto concreto desde la aplicación. Debes darle un nombre único y significativo (en la aplicación) para que puedas identificar rápidamente la función correcta que representa mientras la estás codificando. Estos son algunos ejemplos de nombres:

    • "SpaceMissionLevel4"
    • "ContosoCloudSave"
    • "RainbowThemePack"

Nota:

El token de oferta en la aplicación que usas en el código debe coincidir con el valor de id. de producto que especifiques al definir el complemento correspondiente para la aplicación en el Centro de partners.

  1. Codifica la característica en un bloque condicional

    Debes situar el código de cada función asociada con un producto desde la aplicación en un bloque condicional que compruebe si el cliente tiene licencia para usar esa función.

    En este ejemplo se muestra cómo puedes codificar una función de producto llamada featureName en un bloqueo condicional específico de una licencia. La cadena featureName es el token que identifica de forma única este producto dentro de la aplicación y también se usa para identificarlo en la Tienda.

    if (licenseInformation.ProductLicenses["featureName"].IsActive)
    {
        // the customer can access this feature
    }
    else
    {
        // the customer can' t access this feature
    }
    
  2. Agrega la interfaz de usuario de compra para esta característica

    La aplicación también debe proporcionar una manera de que los clientes puedan comprar el producto o la función que ofrece el producto desde la aplicación. No pueden obtenerlos a través de la Tienda de la misma manera que obtuvieron la aplicación completa.

    A continuación te mostramos cómo comprobar si el cliente ya tiene un producto desde la aplicación y, si no la tiene, cómo mostrar el cuadro de diálogo de compra para que puedan comprarla. Reemplace el comentario "mostrar el cuadro de diálogo de compra" por el código personalizado del cuadro de diálogo de compra (por ejemplo, una página con un botón descriptivo "Comprar esta aplicación").

    async void BuyFeature()
    {
        if (!licenseInformation.ProductLicenses["featureName"].IsActive)
        {
            try
            {
                // The customer doesn't own this feature, so
                // show the purchase dialog.
                await CurrentAppSimulator.RequestProductPurchaseAsync("featureName", false);
    
                //Check the license state to determine if the in-app purchase was successful.
            }
            catch (Exception)
            {
                // The in-app purchase was not completed because
                // an error occurred.
            }
        }
        else
        {
            // The customer already owns this feature.
        }
    }
    

Paso 3: Cambia el código de prueba para las llamadas finales

Este es un paso fácil: cambia cada referencia a CurrentAppSimulator por CurrentApp en el código de la aplicación. Ya no es necesario que proporciones el archivo WindowsStoreProxy.xml, por lo tanto, elimínalo de la ruta de acceso de la aplicación (aunque es posible que quieras guardarlo como referencia cuando configures la oferta desde la aplicación en el próximo paso).

Paso 4: Configura la oferta del producto desde la aplicación en la Tienda

En el Centro de partners, vaya a la aplicación y cree un complemento que coincida con la oferta del producto desde la aplicación. Defina el identificador de producto, el tipo, el precio y otras propiedades del complemento. Asegúrate de que la configuración es idéntica a la configuración que estableciste en WindowsStoreProxy.xml durante las pruebas.

Nota:

El token de oferta en la aplicación que usas en el código debe coincidir con el valor de id. de producto que especifiques para el complemento correspondiente en el Centro de partners.

Comentarios

Si te interesa que los clientes cuenten con varios productos consumibles desde la aplicación (elementos que se puedan comprar, usar y después volver a comprar si se desea), consulta el tema Habilitar compras de productos consumibles desde la aplicación.

Si necesitas usar recibos para comprobar que el usuario ha realizado una compra desde la aplicación, asegúrate de revisar Usar recibos para comprobar compras de productos.