Configuração da venda de chaves de jogo
Você pode vender chaves de jogo por meio de um link direto, interface da loja ou widget.
Item | Método de venda |
---|---|
Uma cópia de um jogo (chave do jogo). | Link direto, widget ou interface de loja. Ao vender através da interface da loja, use o método de compra rápida sem criar um carrinho. |
Várias cópias do jogo (chaves do jogo) ou vários jogos em um carrinho. | Interface da loja. Use o Site Builder ou integre a API Store Builder. |
Você pode vender chaves de jogo para usuários autorizados e não autorizados.
A autorização permite:
- defina limites na venda de chaves de jogo para o usuário
- para personalizar catálogos de itens e ofertas promocionais
- use o sistema de direitos
- armazene dados do usuário na interface de pagamento Xsolla
Você pode autorizar usuários usando o produto Login ou seu próprio sistema de autorização. Informações detalhadas de configuração são fornecidas nestas instruções.
O acesso ao jogo é garantido automaticamente após a compra de uma chave de jogo. Porém, as plataformas de jogos podem definir suas próprias regras de ativação de chaves.
Você pode limitar o tempo de exibição do pacote de chave de jogo no catálogo, por exemplo, durante ofertas sazonais. Para fazer isso, passe a data inicial e final do período de disponibilidade de acordo com a norma ISO 8601 no objeto periods
na chamada de API correspondente:
Para limitar a quantidade de chaves de jogo disponíveis para compra pelo usuário, siga as instruções.
Venda via link direto
O link a seguir abre a interface de pagamento:
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}
Comprar chaves de jogo através de um link direto por moeda real só é possível após a assinatura de um contrato de licença com a Xsolla. Para fazer isso, na Conta de Distribuidor, vá para a seção Agreements & Taxes > Agreements, preencha o formulário de contrato e aguarde a confirmação. Pode levar até 3 dias úteis para revisar o contrato.
Para testar pagamentos, você pode usar o ambiente de teste adicionando o parâmetro mode=sandbox
ao link.
Adicione os seguintes dados a este link:
YOUR-ITEM-TYPE
— tipo de item:game
— jogo;game_key
— jogo em uma plataforma específica.bundle
— conjunto.
YOUR-PROJECT-ID
— ID do seu projeto que pode ser encontrado na sua Conta de Distribuidor, próximo ao nome do projeto.- .
YOUR-ITEM-SKU
— pacote de chaves de jogo SKU. Para vender um jogo em uma plataforma específica, use Obter lista de jogos (geralmente esse SKU se parece comunit_name_drm_sku
) para obter o SKU.
- Estilo da interface de pagamento: tema (escuro ou o tema claro padrão), tamanho e outros parâmetros. Especifique os parâmetros
ui_settings
no URL e passe um objeto JSONsettings.ui
com codificação Base64 como o valor. Exemplo de URL com configurações de interface:
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&ui_settings=ewoJCQkic2l6ZSI6ICJzbWFsbCIsCgkJCSJ0aGVtZSI6ICJkYXJrIgoJCX0=
- Token para passar dados do usuário. Usado ao vender chaves de jogo apenas para usuários autenticados. Esse token depende do método de autenticação. Exemplo de URL com um token:
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR_ITEM_SKU}&xsolla_login_token={ACCESS_TOKEN}
- O parâmetro
mode=sandbox
para testes de pagamento. Você pode usar cartões bancários de teste para concluir pagamentos.
- Exemplo de URL para teste:
1https://purchase.xsolla.com/pages/buy?type={YOUR-ITEM-TYPE}&project_id={YOUR_PROJECT_ID}&sku={YOUR-ITEM-SKU}&mode=sandbox
Vendendo via interface da loja
Você pode vender chaves de jogo através da interface da loja. Para criar uma loja, você pode:
- usar o Site Builder
- criar sua própria versão da loja e integrar a API Store Builde
Para vender pacotes de chaves de jogo usando a API Store Builder:
- Para exibir um catálogo, use o método Obter lista de jogos.
Implemente a compra de chaves de jogo:
- Para uma compra rápida de uma chave, use o método Criar pedido com item especificado. Em resposta a esse método, você receberá um token que deve ser usado para abrir a interface de pagamento.
- Para comprar várias chaves de jogo, use os métodos de gerenciamento de carrinho:
- Atualizar item do carrinho do carrinho atual para adicionar uma chave de jogo ao carrinho.
- Obter o carrinho do usuário atual para obter uma lista de chaves de jogo no carrinho.
- Criar pedido com todos os itens do carrinho atual para pagar pelas chaves do jogo no carrinho. Em resposta a esse método, você receberá um token que deve ser usado para abrir a interface de pagamento.
items.unit_items.sku
da solicitação para obter a lista de jogos.Venda via widget
Você pode adicionar um widget à sua página para vender chaves de jogo e personalizá-lo. Para copiar o código do widget, vá para a seção Widget customization depois de criar o pacote de chaves em sua Conta de Distribuidor.
Se um jogo for vendido em uma única plataforma, o widget exibirá o preço do jogo específico para essa plataforma.
Exemplo: Compre agora por R$ 10.
Se um jogo for vendido em várias plataformas, o widget exibirá o menor preço entre as plataformas.
Exemplo: Receba a partir de $10.
Na janela de criação de pedidos, o usuário pode ver os preços de todas as plataformas e fazer uma escolha.
Você também pode exibir o preço de uma plataforma específica no widget especificando o SKU da plataforma no parâmetro drm.

Exemplo de código do widget:
- html
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>
Parâmetros do widget
Parâmetro | Tipo | Descrição |
---|---|---|
project_id | integer | ID do projeto no qual chaves de jogo ou pacotes com chaves de jogo, itens de jogo ou conjuntos com itens, são carregados. |
item_type | string | Tipo de item. Pode assumir valores de virtual_good , virtual_currency , game_key , unit . O tipo unit é usado quando há várias plataformas para distribuir o jogo. |
sku | string | ID de item exclusivo. |
drm | string | SKU da plataforma de distribuição, por exemplo, steam . Permite exibir o preço de uma plataforma específica. |
api_settings | object | Definições de configuração do ambiente e do host:
|
usuário | object | Um objeto com dados do usuário. |
user.auth | string | Token de autorização do usuário: JSON Web Token ou token de acesso Pay Station. |
user.locale | string | Localidade do usuário. Determina o idioma do texto do botão e da interface de pagamento. É usado um código de idioma de duas letras baseado em ISO_639-1. |
widget_ui.theme | object | O tema de cores do widget, determinando sua aparência. Aceita valores {foreground:[‘blue’,‘red’,‘green’,‘gold’], background:[’light’,‘dark’]} |
widget_ui.template | string | Modelo. Valores possíveis:
|
widget_ui.target_element | string | Elemento da página, onde o widget deve ser renderizado (o seletor jQuery deve ser usado, por exemplo #widget-example ). Obrigatório. |
Parâmetros que determinam a aparência da interface de pagamento
Parâmetro | Tipo | Descrição |
---|---|---|
payment_ui | object | Parâmetros de aparência da interface de pagamento. |
payment_widget_ui | object | Um objeto com parâmetros que determinam a aparência da interface de pagamento. |
payment_widget_ui.lightbox | object | Um objeto com opções para a janela modal na qual a interface de pagamento é aberta. |
payment_widget_ui.lightbox.width | string | Largura do quadro da lightbox. Se null , depende da largura do Pay Station. O padrão é null . |
payment_widget_ui.lightbox.height | string | Altura do quadro da lightbox. Se null , depende da altura do Pay Station. O padrão é 100% . |
payment_widget_ui.lightbox.zIndex | integer | Define a ordem do arranjo. O padrão é 1000 . |
payment_widget_ui.lightbox.overlayOpacity | integer | Opacidade do plano de fundo do widget (0 — totalmente transparente, 1 — completamente opaco). O valor padrão é 60% (.6 ). |
payment_widget_ui.lightbox.overlayBackground | string | Cor de fundo da sobreposição. O padrão é #000000 . |
payment_widget_ui.lightbox.contentBackground | string | Cor de fundo do quadro. O padrão é #ffffff . Observe que essas mudanças de cor não afetam o iframe do Pay Station em si, apenas as configurações da lightbox que o contém. |
payment_widget_ui.lightbox.spinner | string | Tipo de indicador de carregamento animado. Pode ser xsolla ou round . O padrão é xsolla . |
payment_widget_ui.lightbox.spinnerColor | string | Cor do cata-vento. Sem valor padrão. |
payment_widget_ui.childWindow | object | Configurações para a janela filho na qual a interface de pagamento é aberta. Funciona para a versão mobile. |
payment_widget_ui.childWindow.target | string | A propriedade que determina onde a janela filho deve ser aberta. Pode assumir valores de _blank , _self , _parent . O valor padrão é — _blank . |
Métodos de widget
var widgetInstance = XBuyButtonWidget.create(options)
— crie a instância do widget e renderize-a na página.widgetInstance.on(event, handler)
— anexa uma função de manipulador de eventos para o evento ao widget.event (string)
— tipo de evento.handler (function)
— uma função a ser executada quando o evento é acionado.
widgetInstance.off(event, handler)
— remove um manipulador de eventos.event (string)
— tipo de evento.handler (function)
— uma função de manipulador previamente anexada para o evento.
Lista de eventos:
Parâmetro | Descrição |
---|---|
init | Widget inicializado. |
open | Widget aberto. |
load | Interface de Payments (Pay Station) carregada. |
close | Interface de Pagamento (Pay Station) fechada. |
status | O usuário está na página de status. |
status-invoice | O usuário está na página de status; pagamento em andamento. |
status-delivering | Evento em que o usuário foi movido na página de status, o pagamento foi concluído e estamos enviando uma notificação de pagamento. |
status-done | O usuário está na página de status; pagamento creditado na conta do usuário. |
status-troubled | Evento em que o usuário foi movido na página de status, mas o pagamento falhou. |
Você pode acessar a lista de eventos usando o objeto XBuyButtonWidget.eventTypes
.
Personalização de botões
- Abra seu projeto na Conta de Distribuidor e acesse a seção Items catalog > Virtual items.
- Selecione uma chave de jogo e acesse a aba Widget customization.
- No bloco Customize, selecione a cor do plano de fundo.
theme
no código para que o parâmetro background
tenha uma cadeia de caracteres vazia como um valor.- Quando você adiciona o código do widget à sua página, ele inclui estilos herdados. Adicione os estilos abaixo para substituir esses estilos.
style
abaixo da tag script
que você obteve da aba Widget customization por motivos de herança/prioridade CSS.- css
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}
- Os nomes de id/classe acima e o trecho de código são usados em conjunto com o código do widget copiado (a imagem na etapa 5). Por esse motivo, é importante que você implemente o código do widget copiado.
- Você pode usar o código acima como está ou modificar o código com base no seu cenário. Os comentários de código (linhas 1, 3, 5, 11, 16, 18, 22, 29) estão lá para ajudar a determinar o destino de cada regra CSS e ajudar no estilo futuro. Por exemplo, se você quiser apenas o botão (e não o widget inteiro), será preciso substituir a cor de fundo da sua página nos locais abaixo onde a cor está
white
— linhas 20 e 27.
Como criar vários botões ou SKUs
Você pode consultar os botões Xsolla Pay2Play Widget Simple Integration 4 para obter um exemplo de código sobre como isso é realizado usando o widget Pay2Play.
A estrutura é semelhante ao código do widget Buy Button. Um exemplo de migração:
- html
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>
- Linhas 1 e 2 — um
div
por botão, cada um com um ID exclusivo. - A partir da linha 26 estão as opções para o segundo botão (disposto no objeto
options2
). Você precisará de um conjunto deoptions
similares aos acima para cada botão Buy. Observe os diferentessku
(linha 28) etarget_element
(linha 34, visando adiv
na linha 2).
Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.