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 el catálogo.
  2. 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 Obtener lista de artículos virtuales 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"

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 Obtener cesta por el ID de la cesta o Obtener la cesta del usuario actual 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 Crear pedido con un artículo especificado.

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 Obtener pedido 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"
}
¿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: 3 de Octubre 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!