Inventário. Itens de tempo limitado

Como funciona

O item de tempo limitado é um bônus premium que é uma compra única. Portanto, o usuário precisa comprá-lo novamente quando ele expirar.

Principais características:

  • O item de tempo limitado pode ser vendido por um número ilimitado de vezes.
  • Quando o usuário compra o item novamente, o número de itens no inventário não muda, mas o tempo antes do item expirar aumenta.
  • Você pode configurar a validade do item em sua Conta de Distribuidor.

Restrições:

  • Você pode gerenciar os itens por tempo limitado apenas do lado do jogo servido.

Observação
Se você quiser limitar o tempo de exibição de um item na loja, use as instruções How to set up limiting the display time for items in the store.

Quem pode usar

  • Parceiros que integraram a In-Game Store e desejam configurar um novo tipo de item — itens de tempo limitado.
  • Parceiros que desejam vender Season Pass, Battle Pass, ou diferentes tipos de itens que dão aos usuários vantagens ou conteúdos adicionais (por exemplo, itens de jogo ou tarefas) por um período limitado de tempo.

Como obtê-lo

Pré-requisitos

Se você ainda não integrou a Xsolla Store, faça o seguinte:

  1. Crie sua Conta de Distribuidor Xsolla.
  2. Vá para Projetos e clique no botão Create project.
  3. Adicione o Project name e clique em Create.
  4. Conecte a Store ao seu projeto.
  5. Conecte o módulo Virtual Items.

Fluxo de integração

  1. Crie um grupo de itens.
  2. Crie itens:
    1. Ao criar um novo item, escolha Time-limited items no menu Item property.
    2. Especifique a validade.

  1. Implemente a obtenção de itens de tempo limitado no catálogo.
  2. Implemente métodos para a compra de itens de tempo limitado.

Obtendo itens de tempo limitado no catálogo

Implemente o método de API Get virtual items list para mostrar a lista completa de itens virtuais adicionados à sua loja.

EXEMPLO

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"

Compra de itens de tempo limitado

Após a primeira compra, o item de tempo limitado é adicionado ao inventário.

Após a segunda e futuras compras:

  1. Se o item de tempo limitado estiver ativo, a validade do item será somada com o tempo restante.
  2. Se o item de tempo limitado não estiver ativo, a validade do item será o tempo padrão.

Implemente os seguintes métodos para comprar itens de tempo limitado.

Obter carrinho

Implemente o método de API Get cart by ID ou Get current user’s cart para comprar itens virtuais. O Cart ID do carrinho será usado para adicionar/remover itens.

EXEMPLO

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
}
Observação
Para habilitar a compra rápida de itens (sem criar um carrinho), use o método de API Create order with specified item.

Criar pedido com todos os itens

  1. Implemente um dos métodos API:
    1. Create order with all items from particular cart se você tem o ID do carrinho.
    2. Create order with all items from current cart se você tem o carrinho atual.

O pedido criado receberá um status de pedido New.

  1. Para abrir a interface do usuário de pagamento em uma nova janela, use o seguinte link: https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN, onde ACCESS_TOKEN é o token recebido quando o pedido foi criado.
  2. Para testar o processo de pagamento:
    1. Use o seguinte URL: https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.
    2. Defina o parâmetro sandbox como true na solicitação.
    3. Use a lista de cartões bancários de teste.

EXEMPLO

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"
}

Obter pedido

Implemente o método de API Get order para determinar se a compra já foi processada. Os seguintes status de pedido são possíveis:
  • Novo — o pedido foi criado, mas não foi pago
  • Pago — o pedido foi pago
  • Cancelado — o pedido foi cancelado
  • Concluído — o pedido foi pago e o item foi adicionado ao inventário
Observação
A verificação de status deve ser realizada com uma certa frequência, uma vez que uma verificação única pode ocorrer antes que o pedido receba o novo status.
EXEMPLO
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"
}
Este artigo foi útil?
Obrigado!
Podemos melhorar alguma coisa? Mensagem
Que pena ouvir isso
Explique porque este artigo não foi útil para você. Mensagem
Obrigado pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.
Última atualização: 3 de Outubro de 2024

Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.

Relatar um problema
Nós sempre avaliamos nossos conteúdos. Seu feedback nos ajuda a melhorá-los.
Forneça um e-mail para que possamos responder
Obrigado pelo seu feedback!