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.

Nota

Solo puede vender claves de juegos por dinero real después de firmar un acuerdo de licencia con Xsolla. Para ello, en Cuenta del editor, vaya a Agreements & Taxes > Agreements > Licensing Agreement, rellene el formulario del acuerdo y espere la confirmación. La revisión del acuerdo puede tardar hasta 3 días laborables.

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.

Las claves de juego se pueden vender a través de un enlace directo que abre la interfaz de pago en el siguiente formato:

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

    Además de los parámetros de consulta principales, también puede transmitir parámetros para personalizar la interfaz de pago y vender a usuarios autenticados.

    Añada los siguientes datos a este enlace:

    • YOUR-ITEM-TYPE: tipo de artículo. Valores posibles:

    • YOUR-PROJECT-ID: ID de su proyecto, que se encuentra en su Cuenta del editor junto al nombre del proyecto.

    • YOUR-ITEM-SKU: SKU del paquete de claves de juego. Por ejemplo:

      • order456: SKU sin una plataforma específica.
      • pre.order123_steam: SKU con una plataforma específica.

    Recomendamos utilizar paquetes de claves de juego específicos para cada plataforma. De este modo se evitan problemas de compatibilidad al utilizar o activar las claves. En todos los casos, se debe añadir un sufijo específico al SKU para cada plataforma, ya sea de forma automática o manual, dependiendo de cómo se haya creado el paquete de claves:

    • Cuando crea paquetes de claves en la Cuenta del editor, el sistema añade automáticamente un sufijo específico de la plataforma con un guion bajo (por ejemplo, _steam, _playstation) al SKU que introduzca.

    • Cuando crea paquetes de claves específicos para una plataforma mediante llamadas API, puede especificar el sufijo para la plataforma en cualquier formato que incluya solo caracteres alfanuméricos latinos en minúscula y mayúscula, puntos, guiones y guiones bajos.

    Lista de plataformas compatibles y sufijos de ejemplo:

    NombreEjemplo de sufijo de SKU
    Steam_steam
    PlayStation_playstation
    Xbox_xbox
    Uplay_uplay
    Origin_origin
    DRM Free (sin gestión de derechos digitales)_drmfree
    GOG_gog
    Epic Games_epicgames
    Nintendo Switch eShop_nintendo_eshop
    Discord Game Store_discord_game_store
    Oculus_oculus
    Viveport_viveport
    Google Stadia_stadia
    MY.GAMES Store_my_game

    Para asegurarse de que el enlace funciona correctamente, puede obtener el SKU exacto mediante la llamada API Obtener lista de juegos e incluirlo en el enlace de pago como valor SKU. El SKU del artículo se devuelve en el parámetro items.unit_items.sku (normalmente, este SKU sigue el formato game_key_sku_drm_sku).

    Ejemplo de URL para vender un juego en Steam:

    Copy
    Full screen
    Small screen
      1https://purchase.xsolla.com/pages/buy?type=game_key&project;_id=123456&sku;=pre.order123_steam
      

      Para que la interfaz de pago se adapte al estilo de su juego, configure el tema, el tamaño y otros parámetros de la interfaz, tal y como se describe en la guía sobre cómo personalizar Pay Station. Añada el parámetro ui_settings a la URL y transmita un objeto JSON settings.ui con codificación Base64 como valor.

      URL de ejemplo para abrir la interfaz de pago con un tema personalizado:

      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=
        

        Para vender claves a usuarios autenticados, transmita un token de acceso de usuario en el parámetro xsolla_login_token. Este token depende del método de autenticación seleccionado.

        URL de ejemplo para abrir la interfaz de pago 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}
          

          Para probar el flujo de pago en modo sandbox, añada el parámetro mode=sandbox a la URL. Puede utilizar tarjetas bancarias de prueba para completar las transacciones.

          URL de ejemplo para abrir la interfaz de pago en modo sandbox:

          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
            
            Aviso
            Al comprar en el modo sandbox, no se utilizan las claves cargadas. El sistema simula una compra sin entregar claves reales.

            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: 24 de Noviembre 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.