Configurar la venta de claves de juego

Puede vender claves del juego a través de un enlace directo, interfaz de usuario de tienda o de un widget.

ArtículoMétodo de venta
Una copia de un juego (clave del juego).Enlace directo, widget o interfaz de tienda. Cuando venda a través de la interfaz de la tienda, utilice el método de compra rápida sin crear una cesta.
Varias copias del juego (claves de juego) o varios juegos en una cesta.Interfaz de tienda. Utilice Site Builder o integre In-Game Store API.

Puede vender claves del juego a usuarios autorizados y no autorizados.

La autorización le permite:

Puede autorizar usuarios mediante el producto Login o su propio sistema de autorización. Encontrará información detallada sobre la configuración en estas instrucciones.

Nota
A los usuarios se les pueden reembolsar las claves. Tras haberse efectuado el reembolso correctamente, recibirá la lista de las claves afectadas en el correo electrónico de Xsolla. Le recomendamos que bloquee el acceso a estas claves en cualquier plataforma de terceros.
Nota

El acceso al juego se concede automáticamente al comprar la clave del juego. No obstante, cada plataforma de juego puede establecer sus propias normas de activación de claves.

Puede limitar el tiempo de visualización del paquete de claves del juego en el catálogo; p. ej., durante las rebajas de temporada. Para hacerlo, transmita la fecha de inicio y fin del periodo de disponibilidad conforme a la norma ISO 8601 en el objeto periods de la llamada API correspondiente:

Para limitar el número de claves del juego que el usuario puede comprar, siga estas instrucciones.

El siguiente enlace abre la interfaz de pago:

Copy
Full screen
Small screen
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}
Nota

La compra de claves del juego por moneda real solo es posible tras firmar un acuerdo de licencia con Xsolla. Para ello, en la Cuenta del editor, vaya a la sección Agreements & Taxes > Agreements, cumplimente el formulario del acuerdo y espere la confirmación. La revisión del acuerdo puede tardar hasta 3 días laborables.

Para probar los pagos, puede utilizar el entorno de prueba añadiendo el parámetro mode=sandbox al enlace.

Agregue los siguientes datos a este enlace:

  • YOUR-ITEM-TYPE - tipo de artículo:
    • game - juego; game_key - juego en una plataforma específica.
    • bundle - lote.
  • YOUR-PROJECT-ID - ID de su proyecto desde la sección Project settings > General settings > Project ID en Cuenta del editor.
  • YOUR-ITEM-SKU - código (SKU) del paquete de claves del juego. Para vender un juego en una plataforma específica, utilice Obtener lista de juegos (normalmente este SKU se parece a unit_name_drm_sku) para obtener el SKU.

  • Estilo de la interfaz de pago: tema (oscuro o el claro por defecto), tamaño y otros parámetros. Especifique los parámetros ui_settings en la URL y transmita un objeto JSON settings.ui con codificación Base64 como valor. Ejemplo de URL con parámetros de interfaz de usuario:
Copy
Full screen
Small screen
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&ui_settings=ewoJCQkic2l6ZSI6ICJzbWFsbCIsCgkJCSJ0aGVtZSI6ICJkYXJrIgoJCX0=
  • Token para transmitir datos de usuario. Se utiliza cuando se venden claves del juego solo a usuarios autenticados. Este token depende del método de autenticación. Ejemplo de URL con un token:
Copy
Full screen
Small screen
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR_ITEM_SKU}&xsolla_login_token={ACCESS_TOKEN}
Nota
Al realizar un pago, el servidor de Xsolla envía una solicitud a la URL del webhook para verificar que el usuario existe en el juego. Para evitar errores al probar el pago, vaya a Publisher Account > Project settings > Webhooks y ponga el conmutador en posición OFF. Si desea utilizar webhooks, implemente el procesamiento de forma eficaz de un webhook de User validation.
  1. Ejemplo de URL para las pruebas:
Copy
Full screen
Small screen
https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&mode=sandbox

Venta mediante la interfaz de usuario de la tienda

Puedes vender claves del juego a través de la interfaz de la tienda. Para crear una tienda, puede:

Para vender paquetes de claves del juego usando la API In-Game Store API:

  1. Para visualizar un catálogo, utilice el método Obtener lista de juegos.
  2. Implementar la compra de claves del juego:

Elija una opción de autenticación adecuada para que los métodos funcionen correctamente.
Nota
Cuando venda un juego a través de In-Game Store API, debe implementar una función que permita a los jugadores seleccionar una plataforma específica en el cliente. Para obtener el código de artículo (SKU), transfiera el valor del parámetro items.unit_items.sku de la solicitud para obtener la lista de juegos.

Venta mediante widget

Puede agregar un widget a su página para vender claves del juego y personalizarlo. Para copiar el código del widget, vaya a la sección Widget customization después de crear el paquete de claves en su Cuenta del editor.

Si un juego se vende en una sola plataforma, el widget mostrará el precio del juego específico para esa plataforma.

Ejemplo: Cómpralo ahora por 10 $.

Si un juego se vende en varias plataformas, el widget mostrará el precio más bajo de todas ellas.

Ejemplo: Consíguelo desde 10 $.

En la ventana de creación de pedidos, el usuario puede ver los precios para todas las plataformas y elegir entre ellos.

También puede mostrar el precio para una plataforma específica en el widget especificando el código de artículo (SKU) de la plataforma en el parámetro drm.

Ejemplo de código del widget:

Copy
Full screen
Small screen
    <div id="xsolla-buy-button-widget"></div>
          <script>
              var options = {
                  project_id: "101010",
                  sku: "my_key",
                  user: {
                      auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
                  },
                  drm: "steam",
                  item_type: "unit",
                  api_settings: {
                      sandbox: true,
                  },
                  widget_ui: {
                      target_element: "#xsolla-buy-button-widget",
                      theme: {
                          foreground: "green",
                          background: "light"
                      },
                  },
    
                 payment_widget_ui: {
                      lightbox: {
                          height: '700px',
                          spinner: 'round'
                      }
                }
              };
              var s = document.createElement('script');
              s.type = "text/javascript";
              s.async = true;
              s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
              s.addEventListener('load', function (e) {
                  var widgetInstance = XBuyButtonWidget.create(options);
              }, false);
              var head = document.getElementsByTagName('head')[0];
              head.appendChild(s);
          </script>
          <style>
              #xsolla-buy-button-widget {
    
              /* place code for button positioning here */
                margin: 10px  
              }
    
              /* Styles the button itself */
              .x-buy-button-widget.x-buy-button-widget__tiny
                .x-buy-button-widget-payment-button {
                background-color: #ff005b;
                color: black;
              }     
          </style>
    
    Nota
    Parámetros del widget

    ParámetroTipoDescripción
    project_id
    integerID del proyecto en el que se cargan claves del juego o lotes con claves del juego, artículos internos del juego o lotes con artículos.
    item_type
    stringTipo de artículo. Puede adoptar valores de virtual_good, virtual_currency, game_key, unit. El tipo unit se utiliza cuando existen múltiples plataformas de distribución del juego.
    código de artículo (sku)
    stringID único del artículo.
    drm
    stringCódigo de artículo (SKU) de la plataforma de distribución, por ejemplo, steam. Permite la visualización del precio para una plataforma específica.
    api_settings
    objectAjustes de configuración de entorno y del host:
    • host - host para realizar solicitudes. El valor por defecto es - store.xsolla.com
    • api_host - host para realizar solicitudes API. El valor por defecto es - store.xsolla.com/api
    • sandbox - establecer el valor true, para probar el proceso de pago. sandbox-secure.xsolla.com se utilizará en lugar de secure.xsolla.com para procesar los pagos (consulte Probar el proceso de pago)
    usuario
    objectUn objeto con datos del usuario.
    user.auth
    stringToken de autorización de usuario: Token Web JSON o Token de acceso a Pay Station.
    user.locale
    stringConfiguración regional del usuario. Determina el idioma del texto de los botones y de la interfaz de pago. Se utiliza un código de idioma de dos letras basado en la norma ISO_639-1.
    widget_ui.theme
    objectEl tema de color del widget, que determina su apariencia. Puede adoptar los valores {foreground:[‘blue’,‘red’,‘green’,‘gold’], background:[’light’,‘dark’]}
    widget_ui.template
    stringPlantilla. Valores posibles:
    • standard (por defecto) - incluye la imagen del juego, el título y el botón con un estilo aplicado
    • simple - solo muestra el botón sin ningún estilo aplicado.
    widget_ui.target_element
    stringElemento de la página en el que debe representarse el widget (debe utilizarse el selector de jQuery, por ejemplo #widget-example). Obligatorio

    Parámetros que determinan la apariencia de la interfaz de pago

    ParámetroTipoDescripción
    payment_ui
    objectParámetros de apariencia de la interfaz de pago.
    payment_widget_ui
    objectUn objeto con parámetros que determinan la apariencia de la interfaz de pago.
    payment_widget_ui.lightbox
    objectObjeto con opciones para la ventana modal en la que se abre la interfaz de pago.
    payment_widget_ui.lightbox.width
    stringAnchura del marco del Lightbox. Si es null, depende de la altura de Pay Station. Por defecto es null.
    payment_widget_ui.lightbox.height
    stringAltura del marco del Lightbox. Si es null, depende de la altura de Pay Station. Por defecto es 100%.
    payment_widget_ui.lightbox.zIndex
    integerDefine el orden de disposición. Por defecto es 1000.
    payment_widget_ui.lightbox.overlayOpacity
    integerOpacidad del fondo del widget (0 - totalmente transparente, 1 - totalmente opaco). El valor por defecto es 60 % (.6).
    payment_widget_ui.lightbox.overlayBackground
    stringColor de fondo de la superposición. Por defecto es #000000.
    payment_widget_ui.lightbox.contentBackground
    stringColor de fondo del marco. Por defecto es #ffffff. Tenga en cuenta que estos cambios de color no afectan al propio iframe de Pay Station, solo a la configuración del Lightbox que lo contiene.
    payment_widget_ui.lightbox.spinner
    stringTipo de indicador de carga animado. Puede ser xsolla o round. Por defecto es xsolla.
    payment_widget_ui.lightbox.spinnerColor
    stringColor del indicador giratorio. Sin valor por defecto.
    payment_widget_ui.childWindow
    objectConfiguración de la ventana secundaria en la que se abre la interfaz de pago. Funciona en la versión móvil.
    payment_widget_ui.childWindow.target
    stringPropiedad que determina dónde debe abrirse la ventana secundaria. Puede adoptar los valores de _blank, _self, _parent. El valor por defecto es: _blank.

    Métodos del widget

    • var widgetInstance = XBuyButtonWidget.create(options) - crea la instancia del widget y la representa en la página.
    • widgetInstance.on(event, handler) - adjunta una función de controlador de eventos al widget.
      • event (string) - tipo de evento.
      • handler (function) - una función que se ejecutará cuando se desencadene el evento.
    • widgetInstance.off(event, handler) - elimina un controlador de eventos.
      • event (string) - tipo de evento.
      • handler (function) - una función de controlador previamente adjuntada para el evento.

    Lista de eventos:

    ParámetroDescripción
    initWidget inicializado.
    openWidget abierto.
    loadInterfaz de pago (Pay Station) cargada.
    closeInterfaz de pago (Pay Station) cerrada.
    statusEl usuario está en la página de estado.
    status-invoiceEl usuario está en la página de estado; pago en curso.
    status-deliveringEvento cuando el usuario se movió en la página de estado, el pago se finalizó, y estamos enviando la notificación de pago.
    status-doneEl usuario está en la página de estado; pago abonado en la cuenta del usuario.
    status-troubledEvento cuando el usuario se movió en la página de estado, pero el pago no se pudo procesar.

    Puede acceder a la lista de eventos mediante el objeto XBuyButtonWidget.eventTypes.

    Personalización del botón

    1. Abra su proyecto en Cuenta del editor.
    2. En el menú lateral, haga clic en Store.
    3. En el panel Game Keys, haga clic en Configure.
    4. Seleccione una clave del juego y vaya a la pestaña Widget customization.
    Nota
    Si no hay claves del juego, cree una nueva.
    1. En el bloque Customize, seleccione el color de fondo.
    Nota
    También puede modificar el objeto theme en el código para que el parámetro background tenga como valor una cadena (string) vacía.
    1. Cuando agregue el código del widget a su página, este incluye estilos heredados. Añada los estilos siguientes para anularlos.
    Aviso
    Se han agregado en una etiqueta style debajo de la etiqueta script que obtuvo en la pestaña Widget customization por motivos de herencia/prioridad de CSS.
    Copy
    Full screen
    Small screen
    /* This should be used for button positioning but note this technically repositions the entire widget */
    #xsolla-buy-button-widget {
      /* place code for button positioning here */
    }
    
    /* Styles the button itself */
    .x-buy-button-widget.x-buy-button-widget__tiny
      .x-buy-button-widget-payment-button {
      background-color: #ff005b;
      color: black;
    }
    
    /* Button on hover */
    .x-buy-button-widget.x-buy-button-widget__tiny
      .x-buy-button-widget-payment-button:hover {
      background-color: #ff005b;
    }
    
    /* The following are style overrides to leave you with just the button */
    
    /* space immediately surrounding button */
    .x-buy-button-widget-button-block.x-buy-button-widget-button-block__light {
      background-color: white;
    }
    
    /* space above button (including game title area) */
    .x-buy-button-widget.x-buy-button-widget__tiny
      .x-buy-button-widget-game-logo {
      height: 200px;
      background-image: none !important;
      background-color: white;
    }
    
     /* Game title (located right above button) */
    .x-buy-button-widget-game-name.x-buy-button-widget-game-name__light {
      display: none !important;
    }
    
    Aviso
    • Los nombres de ID/clase anteriores y el fragmento de código se utilizan junto con el código del widget copiado (la imagen del paso 5). Por esta razón, es importante que implemente el código del widget copiado.
    • Puede utilizar el código anterior tal cual o modificarlo en función de su situación. Los comentarios del código (líneas 1, 3, 5, 11, 16, 18, 22 y 29) sirven para ayudar a determinar lo que cada regla de CSS tiene como objetivo y contribuir a la futura aplicación de estilo. Por ejemplo, si sólo desea tener el botón (y no todo el widget), tendrá que sustituir el color de fondo de su página en los lugares donde el color es white: líneas 20 y 27.

    Cómo crear múltiples botones o códigos de artículo (SKU)

    Puede consultar Xsolla Pay2Play Widget Simple Integration 4 buttons (4 botones de integración sencilla del widget Xsolla Pay2Play) para ver un ejemplo de código sobre cómo se logra esto usando el widget Pay2Play.

    La estructura es similar al código del widget de Buy Button. Un ejemplo de migración:

    Copy
    Full screen
    Small screen
    <div id="xsolla-buy-button-widget"></div>
    <div id="xsolla-buy-button-widget-2"></div>
        <script>
          var options = {
            project_id: "191204",
            sku: "789",
            item_type: "unit",
            api_settings: {
              sandbox: false,
            },
            widget_ui: {
              target_element: "#xsolla-buy-button-widget",
              theme: {
                foreground: "gold",
                background: "",
              },
            },
            payment_widget_ui: {
              lightbox: {
                height: "700px",
                spinner: "round",
              },
            },
          };
          // options for second buy button - note the different SKU and target_element
          var options2 = {
            project_id: "191204",
            sku: "123",
            item_type: "unit",
            api_settings: {
              sandbox: false,
            },
            widget_ui: {
              target_element: "#xsolla-buy-button-widget-2",
              theme: {
                foreground: "gold",
                background: "",
              },
            },
            payment_widget_ui: {
              lightbox: {
                height: "700px",
                spinner: "round",
              },
            },
          };
          var s = document.createElement("script");
          s.type = "text/javascript";
          s.async = true;
          s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.4/widget.min.js";
    
    // one event listener per widget instance. repeat for more buttons, passing in different SKUs
          s.addEventListener(
            "load",
            function (e) {
              var widgetInstance = XBuyButtonWidget.create(options);
            },
            false
          );
          s.addEventListener(
            "load",
            function (e) {
              var widgetInstance2 = XBuyButtonWidget.create(options2);
            },
            false
          );
          var head = document.getElementsByTagName("head")[0];
          head.appendChild(s);
        </script>
    
    Aviso
    • Líneas 1 y 2: un div por cada botón, cada uno con un ID único.
    • A partir de la línea 26 están las opciones para el segundo botón (dispuestas en el objeto options2 ). Necesitará un conjunto de options como los anteriores para cada botón de Comprar (Buy Button). Observe los diferentes sku (línea 28) y target_element (línea 34, dirigido al div de la línea 2).
    ¿Te ha resultado útil este artículo?
    ¡Gracias!
    ¿Hay algo en lo que podamos mejorar? Mensaje
    Lo sentimos
    Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
    ¡Gracias por tu mensaje!
    Nos ayudará a mejorar tu experiencia.
    Última actualización: 18 de Noviembre de 2024

    ¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.

    Informar de un problema
    Nos esforzamos por ofrecer contenido de calidad. Tus comentarios nos ayudan a mejorar.
    Déjanos tu correo electrónico para que te podamos responder
    ¡Gracias por tu mensaje!