In-Game Store / Inventario. Artículos de duración limitada

Inventario. Artículos de duración limitada

Cómo funciona

El artículo de duración limitada es una bonificación prémium que se compra una sola vez. Por lo tanto, el usuario tiene que volver a comprarlo cuando expire.

Características principales:

  • El artículo de duración limitada puede venderse un número ilimitado de veces.
  • Cuando el usuario vuelve a comprar el artículo, el número de artículos presentes en el inventario no cambia, pero aumenta el plazo de expiración del artículo.
  • Puede configurar el plazo de expiración del artículo en su Cuenta del editor.

Restricciones:

  • Sólo puede gestionar los artículos de duración limitada desde el lado del servidor del juego.

Nota
Si desea limitar el tiempo de visualización de un artículo en la tienda, use las instrucciones de Cómo establecer la limitación del tiempo de visualización de los artículos en la tienda.

¿Quién puede utilizarlo?

  • Socios que han integrado In-Game Store y desean establecer un nuevo tipo de artículo: artículos de duración limitada.
  • Socios que desean vender Season Pass, Battle Pass, o diferentes tipos de artículos que proporcionan a los usuarios ventajas o contenido adicional (p. ej., artículos o tareas internos del juego) durante un periodo limitado.

Cómo conseguirlo

Requisitos previos

Si aún no ha integrado Xsolla Store, haga lo siguiente:

  1. Cree su cuenta de Cuenta del editorr.
  2. Vaya a Projects y haga clic en el botón Create project.
  3. Añada Project name y haga clic en Create.
  4. Conecte Store (Tienda) a su proyecto.
  5. Conecte el módulo Virtual Items.

Flujo de integración

  1. Crear un grupo de artículos.
  2. Crear artículos:
    1. Al crear un nuevo artículo, seleccione Time-limited items en el menú Item property.
    2. Defina el plazo de expiración.

  1. Implementar la obtención de artículos de duración limitada en catálogo.
  2. Implementar la obtención de artículos de duración limitada en un inventario.
  3. Implementar métodos de compra de artículos de duración limitada.

Obtener artículos de duración limitada en el catálogo

Implemente el método API Get virtual items list para mostrar la lista completa de artículos virtuales añadidos a su tienda.

EJEMPLO

Copy
Full screen
Small screen
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/items/virtual_items?locale=en");

xhr.send(data);

//RESPONSE

"items": [
    {
      "attributes": [],
      "description": "Conquer your foes with vindication using the Basic Blaster! ",
      "groups": [
        "all",
        "featured",
        "Xsolla",
        "weapons"
      ],
      "image_url": "https://cdn.xsolla.net/img/misc/images/0c59a7698d4f66c1008b27ee752089b7.png",
      "is_free": false,
      "name": "Xsolla Basic Blaster 1",
      "order": 1,
      "price": {
        "amount": "0.9950000000000000",
        "amount_without_discount": "1.9900000000000000",
        "currency": "USD"
      },
      "sku": "gun_1",
      "type": "virtual_good"

Obtener artículos de duración limitada en el inventario

Utilice el método Get the current user’s subscriptions en el inventario del usuario para darle acceso a funciones adicionales.

Comprar artículos de duración limitada

Tras la primera compra, el artículo de duración limitada se añade al inventario.

Después de la segunda compra y compras futuras:

  1. Si el artículo de duración limitada está activo, el plazo de expiración del artículo se agrega al tiempo restante.
  2. Si el artículo de duración limitada no está activo, el plazo de expiración del artículo está predeterminado.

Implemente los siguientes métodos para comprar artículos de duración limitada.

Obtener cesta

Implemente el método API Get cart by ID o Get current user’s cart para comprar artículos virtuales. Cart ID se utilizará para añadir/eliminar artículos.

EJEMPLO

Copy
Full screen
Small screen
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/cart/custom_id?locale=en&currency=USD");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE

{
  "cart_id": "custom_id",
  "is_free": true,
  "items": [],
  "price": null
}
Nota
Para habilitar la compra rápida de artículos (sin crear una cesta), utilice el método API Create order with specified item.

Crear pedido con todos los artículos

  1. Implemente uno de los métodos API:
    1. Crear pedido con todos los artículos de la cesta concreta si obtuvo la cesta mediante ID.
    2. Crear pedido con todos los artículos de la cesta actual si obtuvo la cesta actual.

El pedido creado recibirá un estado de pedido New.

  1. Para abrir la interfaz de pago en una nueva ventana, utilice el siguiente enlace: https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN, en el cual ACCESS_TOKEN es el token recibido al crear el pedido.
  2. Para probar el proceso de pago:
    1. Utilice la siguiente URL: https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.
    2. Establezca el parámetro sandbox en true en la solicitud.
    3. Utilice la lista de tarjetas bancarias para pruebas.

EJEMPLO

Copy
Full screen
Small screen
var data = JSON.stringify({
  "currency": "USD",
  "locale": "en",
  "sandbox": false
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://store.xsolla.com/api/v2/project/44056/payment/cart/custom_id");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE  

{
  "order_id": 641,
  "token": "f4puMEFFDZcx9nv5HoNHIkPe9qghvBQo"
}

Obtener pedido

Implemente el método API Get order para determinar si la compra ya ha sido procesada. Son posibles los siguientes estados de pedido:
  • New: el pedido se ha creado pero no se ha pagado
  • Paid: el pedido se ha pagado
  • Cancelled: el pedido se ha cancelado
  • Done: el pedido se ha pagado y el artículo se ha añadido al inventario.
Nota
La comprobación del estado debe realizarse con cierta frecuencia, ya que una comprobación única puede producirse antes de que al pedido se le asigne el nuevo estado.
EJEMPLO
Copy
Full screen
Small screen
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://store.xsolla.com/api/v2/project/44056/order/656");
xhr.setRequestHeader("authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE5NjIyMzQwNDgsImlzcyI6Imh0dHBzOi8vbG9naW4ueHNvbGxhLmNvbSIsImlhdCI6MTU2MjE0NzY0OCwidXNlcm5hbWUiOiJ4c29sbGEiLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6IjA2SWF2ZHpDeEVHbm5aMTlpLUc5TmMxVWFfTWFZOXhTR3ZEVEY4OFE3RnMiLCJzdWIiOiJkMzQyZGFkMi05ZDU5LTExZTktYTM4NC00MjAxMGFhODAwM2YiLCJlbWFpbCI6InN1cHBvcnRAeHNvbGxhLmNvbSIsInR5cGUiOiJ4c29sbGFfbG9naW4iLCJ4c29sbGFfbG9naW5fcHJvamVjdF9pZCI6ImU2ZGZhYWM2LTc4YTgtMTFlOS05MjQ0LTQyMDEwYWE4MDAwNCIsInB1Ymxpc2hlcl9pZCI6MTU5MjR9.GCrW42OguZbLZTaoixCZgAeNLGH2xCeJHxl8u8Xn2aI");

xhr.send(data);

//RESPONSE

{
  "content": {
    "is_free": false,
    "items": [
      {
        "is_free": false,
        "price": {
          "amount": "0.9950",
          "amount_without_discount": "1.9900",
          "currency": "USD"
        },
        "quantity": 123,
        "sku": "gun_1"
      }
    ],
    "price": {
      "amount": "122.3850",
      "amount_without_discount": "122.3850",
      "currency": "USD"
    }
  },
  "order_id": 656,
  "status": "new"
}

Gestión de artículos de duración limitada en el lado del servidor

Concesión

El servidor del juego puede conceder el objeto de duración limitada a los usuarios a través del método de concesión.

El tiempo de expiración de los artículos de duración limitada se calculará del mismo modo que durante la compra de artículos de duración limitada.

Revocación

El servidor del juego puede revocar el artículo del usuario a través del método de revocación. Revocar el artículo significa que será completamente eliminado del inventario del usuario.
¿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.
Valore esta página
Valore esta página
¿Hay algo en lo que podamos mejorar?

Prefiero no responder

¡Gracias por tu mensaje!
Última actualización: 22 de Enero 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!