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:
- curl
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 na seção Project settings > General settings > Project ID na Conta de Distribuidor.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:
- curl
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:
- curl
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:
- curl
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:
1<div id="xsolla-buy-button-widget"></div>
2 <script>
3 var options = {
4 project_id: "101010",
5 sku: "my_key",
6 user: {
7 auth: "9qs9VyCIQQXBlzJQcfETIKWZDvhi4Sz1"
8 },
9 drm: "steam",
10 item_type: "unit",
11 api_settings: {
12 sandbox: true,
13 },
14 widget_ui: {
15 target_element: "#xsolla-buy-button-widget",
16 theme: {
17 foreground: "green",
18 background: "light"
19 },
20 },
21
22 payment_widget_ui: {
23 lightbox: {
24 height: '700px',
25 spinner: 'round'
26 }
27 }
28 };
29 var s = document.createElement('script');
30 s.type = "text/javascript";
31 s.async = true;
32 s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.8/widget.min.js";
33 s.addEventListener('load', function (e) {
34 var widgetInstance = XBuyButtonWidget.create(options);
35 }, false);
36 var head = document.getElementsByTagName('head')[0];
37 head.appendChild(s);
38 </script>
39 <style>
40 #xsolla-buy-button-widget {
41
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
48 .x-buy-button-widget-payment-button {
49 background-color: #ff005b;
50 color: black;
51 }
52 </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.
- No menu lateral, clique em Store.
- No painel Game Keys, clique em Configure.
- Selecione uma chave de jogo e vá para 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:
- javascript
1<div id="xsolla-buy-button-widget"></div>
2<div id="xsolla-buy-button-widget-2"></div>
3 <script>
4 var options = {
5 project_id: "191204",
6 sku: "789",
7 item_type: "unit",
8 api_settings: {
9 sandbox: false,
10 },
11 widget_ui: {
12 target_element: "#xsolla-buy-button-widget",
13 theme: {
14 foreground: "gold",
15 background: "",
16 },
17 },
18 payment_widget_ui: {
19 lightbox: {
20 height: "700px",
21 spinner: "round",
22 },
23 },
24 };
25 // options for second buy button - note the different SKU and target_element
26 var options2 = {
27 project_id: "191204",
28 sku: "123",
29 item_type: "unit",
30 api_settings: {
31 sandbox: false,
32 },
33 widget_ui: {
34 target_element: "#xsolla-buy-button-widget-2",
35 theme: {
36 foreground: "gold",
37 background: "",
38 },
39 },
40 payment_widget_ui: {
41 lightbox: {
42 height: "700px",
43 spinner: "round",
44 },
45 },
46 };
47 var s = document.createElement("script");
48 s.type = "text/javascript";
49 s.async = true;
50 s.src = "https://cdn.xsolla.net/embed/buy-button/3.1.4/widget.min.js";
51
52// one event listener per widget instance. repeat for more buttons, passing in different SKUs
53 s.addEventListener(
54 "load",
55 function (e) {
56 var widgetInstance = XBuyButtonWidget.create(options);
57 },
58 false
59 );
60 s.addEventListener(
61 "load",
62 function (e) {
63 var widgetInstance2 = XBuyButtonWidget.create(options2);
64 },
65 false
66 );
67 var head = document.getElementsByTagName("head")[0];
68 head.appendChild(s);
69 </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.