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 Shop Builder 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
    1https://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.

    Añada 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 que encontrará en su Cuenta del editor junto al nombre del proyecto.
    • YOUR-ITEM-SKU - SKU del paquete de claves de juego. Para vender un juego en una plataforma específica, utilice Get games list (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
      1https://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
        1https://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, en su proyecto en Cuenta del editor vaya a 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
          1https://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

          Puede 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 Shop Builder 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 Shop Builder 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
           1<div id="xsolla-buy-button-widget"></div>
           2
           3<script>
           4  var options = {
           5    project_id: "101010",
           6    sku: "my_key",
           7    user: {
           8      auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
           9    },
          10    drm: "steam",
          11    item_type: "unit",
          12    api_settings: {
          13      sandbox: true
          14    },
          15    widget_ui: {
          16      target_element: "#xsolla-buy-button-widget",
          17      theme: {
          18        foreground: "green",
          19        background: "light"
          20      }
          21    },
          22    payment_widget_ui: {
          23      lightbox: {
          24        height: "700px",
          25        spinner: "round"
          26      }
          27    }
          28  };
          29
          30  var s = document.createElement("script");
          31  s.type = "text/javascript";
          32  s.async = true;
          33  s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
          34  s.addEventListener("load", function () {
          35    var widgetInstance = XBuyButtonWidget.create(options);
          36  });
          37  document.getElementsByTagName("head")[0].appendChild(s);
          38</script>
          39
          40<style>
          41  #xsolla-buy-button-widget {
          42    /* place code for button positioning here */
          43    margin: 10px;
          44  }
          45
          46  /* Styles the button itself */
          47  .x-buy-button-widget.x-buy-button-widget__tiny .x-buy-button-widget-payment-button {
          48    background-color: #ff005b;
          49    color: black;
          50  }
          51</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 y vaya a Items catalog > Game keys.
          2. Seleccione una clave de 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
           1/* This should be used for button positioning but note this technically repositions the entire widget */
           2#xsolla-buy-button-widget {
           3  /* place code for button positioning here */
           4}
           5
           6/* Styles the button itself */
           7.x-buy-button-widget.x-buy-button-widget__tiny
           8  .x-buy-button-widget-payment-button {
           9  background-color: #ff005b;
          10  color: black;
          11}
          12
          13/* Button on hover */
          14.x-buy-button-widget.x-buy-button-widget__tiny
          15  .x-buy-button-widget-payment-button:hover {
          16  background-color: #ff005b;
          17}
          18
          19/* The following are style overrides to leave you with just the button */
          20
          21/* space immediately surrounding button */
          22.x-buy-button-widget-button-block.x-buy-button-widget-button-block__light {
          23  background-color: white;
          24}
          25
          26/* space above button (including game title area) */
          27.x-buy-button-widget.x-buy-button-widget__tiny
          28  .x-buy-button-widget-game-logo {
          29  height: 200px;
          30  background-image: none !important;
          31  background-color: white;
          32}
          33
          34 /* Game title (located right above button) */
          35.x-buy-button-widget-game-name.x-buy-button-widget-game-name__light {
          36  display: none !important;
          37}
          
          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
           1<div id="xsolla-buy-button-widget"></div>
           2<div id="xsolla-buy-button-widget-2"></div>
           3
           4<script>
           5  var options = {
           6    project_id: "191204",
           7    sku: "789",
           8    item_type: "unit",
           9    api_settings: {
          10      sandbox: false
          11    },
          12    widget_ui: {
          13      target_element: "#xsolla-buy-button-widget",
          14      theme: {
          15        foreground: "gold",
          16        background: ""
          17      }
          18    },
          19    payment_widget_ui: {
          20      lightbox: {
          21        height: "700px",
          22        spinner: "round"
          23      }
          24    }
          25  };
          26
          27  // options for second buy button - note the different SKU and target_element
          28  var options2 = {
          29    project_id: "191204",
          30    sku: "123",
          31    item_type: "unit",
          32    api_settings: {
          33      sandbox: false
          34    },
          35    widget_ui: {
          36      target_element: "#xsolla-buy-button-widget-2",
          37      theme: {
          38        foreground: "gold",
          39        background: ""
          40      }
          41    },
          42    payment_widget_ui: {
          43      lightbox: {
          44        height: "700px",
          45        spinner: "round"
          46      }
          47    }
          48  };
          49
          50  var s = document.createElement("script");
          51  s.type = "text/javascript";
          52  s.async = true;
          53  s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.4/widget.min.js";
          54
          55  // one event listener per widget instance. repeat for more buttons, passing in different SKUs
          56  s.addEventListener("load", function () {
          57    var widgetInstance = XBuyButtonWidget.create(options);
          58  });
          59  s.addEventListener("load", function () {
          60    var widgetInstance2 = XBuyButtonWidget.create(options2);
          61  });
          62
          63  document.getElementsByTagName("head")[0].appendChild(s);
          64</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: 19 de Septiembre de 2025

          ¿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!
          No hemos podido enviar sus comentarios
          Vuelva a intentarlo más tarde o escríbanos a doc_feedback@xsolla.com.