Central de Distribuição Digital
Visão geral
O Digital Distribution Hub é uma solução que conecta desenvolvedores de jogos com vários parceiros de distribuição que têm suas próprias plataformas ou ecossistemas para a distribuição de jogos, itens virtuais, moedas virtuais e conjuntos.
Parceiros de distribuição — plataformas digitais ou ecossistemas que podem distribuir jogos e itens de jogo e ter sua própria loja e faturamento. Exemplos de parceiros de distribuição Xsolla:
- superaplicativos que agrupam vários serviços
- aplicativos bancários
- provedores de serviços de telecomunicações e internet
- quiosques de dinheiro
- cashback e provedores de programas de recompensa
- mercados de comércio eletrônico
Benefícios para o desenvolvedor de jogos:
- Expansão do público dos jogos por meio de uma conexão direta com parceiros de distribuição em rápido crescimento.
- Aumento da receita adicionando jogos a novos canais de distribuição com uma base de usuários exclusiva.
- Aumento da capacidade de descoberta orgânica em plataformas de terceiros por meio de anúncios e banners.
Benefícios para o parceiro de distribuição:
- Aumento da fidelidade de seus usuários expandindo o acesso ao conteúdo do jogo. Os usuários podem comprar chaves de jogo, itens virtuais, moedas virtuais e conjuntos diretamente a partir aplicativo ou serviço.
- Retenção de usuários atuais e atração de novos usuários através da crescente popularidade da indústria de jogos.
- Aumento da receita da comissão de venda de chaves de jogos, itens virtuais e moedas virtuais de grandes editoras da indústria de jogos.
Como funciona
Fluxo do usuário ao comprar chaves de jogo
Fluxo de usuário ao comprar itens virtuais e moedas virtuais
Fluxo de interação
- O desenvolvedor do jogo cria um projeto na Conta de Distribuidor e carrega as chaves de jogo, itens virtuais, moedas virtuais e conjuntos.
- Um parceiro de distribuição solicita dados do usuário:
- ao vender jogos — o endereço de e-mail do usuário para o qual as chaves e o recibo serão enviados
- ao vender itens de jogo — o ID do jogo do usuário ao qual os itens serão adicionados e o endereço de e-mail do usuário para o qual o recibo será enviado
- O usuário insere os seguintes dados na interface do parceiro de distribuição:
- para compras de jogos — o endereço de e-mail para receber as chaves e recibo
- para compras de itens de jogo — ID do jogo para adicionar os itens ao inventário e um endereço de e-mail para receber o recibo
- O parceiro de distribuição chama o método Create user token e passa o endereço de e-mail (obrigatório) e o ID do usuário (obrigatório ao vender itens virtuais, moedas virtuais e conjuntos) como parâmetros.
- A Xsolla verifica se o usuário existe no jogo se o desenvolvedor do jogo tem webhooks configurados. A configuração de webhooks é necessária para a venda de itens virtuais e moedas virtuais, mas opcional para chaves de jogo.
- A Xsolla cria um token com dados do usuário e envia o token para o parceiro de distribuição.
- O parceiro de distribuição solicita um catálogo de jogos ou um catálogo de itens do jogo.
- A Xsolla retorna o catálogo solicitado na resposta.
- O parceiro de distribuição recebe o catálogo e o exibe para o usuário.
- O usuário faz uma compra. O parceiro de distribuição cria um carrinho.
- O parceiro de distribuição envia o carrinho do usuário para criar um pedido.
- A Xsolla devolve o ID do pedido e o preço do carrinho, incluindo descontos e impostos.
- O parceiro de distribuição exibe o custo total do carrinho para o usuário.
- Se o usuário continuar com o pagamento, o parceiro de distribuição debitará os fundos do usuário e exibirá a página de status do pagamento.
- O parceiro de distribuição notifica a Xsolla de que o pedido foi pago e envia informações de pagamento.
- A Xsolla notifica o desenvolvedor do jogo sobre a compra.
- O usuário que comprou o jogo recebe um e-mail com os detalhes da compra e pode ativar as chaves de jogo. Se o usuário comprou itens virtuais ou moedas virtuais, elas são adicionadas ao inventário dele.
Integração do lado do desenvolvedor de jogos
Como conectar o Digital Distribution Hub
Para promover seu jogo por meio de canais de distribuição:- Conecte a Store na Conta de Distribuidor e baixe:
- chaves de jogo ou conjuntos de chaves de jogo, se você vende chaves de jogo
- itens virtuais, moedas virtuais ou conjutnos, se você vende itens de jogo
- Configure webhooks.
- Entre em contato com o seu Gerente de Sucesso do Cliente ou envie um e-mail a csm@xsolla.com para ativar o Digital Distribution Hub no seu projeto.
Como configurar webhooks
A configuração do Webhook é necessária:
- para validar o usuário e personalizar o catálogo por ID de usuário no jogo
- para validar o usuário e adicionar itens comprados no jogo ao seu inventário
- para vincular o ID de transação do lado da Xsolla com o ID de transação no sistema do desenvolvedor do jogo
- para passar parâmetros de usuário adicionais na ordem
- para receber notificações de compra
Para configurar webhooks:
- Abra seu projeto em Conta de Distribuidor.
- Clique em Project settings no menu lateral e vá para Webhooks.
- Defina a configuração Webhooks como On.
- Especifique a URL do webhook.
- É gerada uma chave secreta para assinar webhooks do projeto por padrão. Se quiser gerar uma nova chave secreta, clique no ícone de atualização.
- Clique em Save settings.
Validação do usuário
A Xsolla envia um webhook User validation para verificar se um usuário existe no jogo. A validação do usuário permite que você:
- exiba um catálogo personalizado para o usuário se você passar atributos de usuário na resposta
- adicionar itens ao inventário do usuário após a compra
Para confirmar o recebimento do webhook, seu servidor deve retornar:
- Código HTTP 204 sem um corpo de mensagem, se o usuário existir no jogo
- Código HTTP 400 descrevendo o problema, se o usuário especificado não foi encontrado ou se uma assinatura inválida foi passada
A lista completa e o mecanismo de webhooks, incluindo exemplos, são descritos em detalhes na Referência da API.
Em resposta, você pode passar parâmetros de transação adicionais no objeto custom_parameters
.
1{
2"$schema": "http://json-schema.org/draft-04/schema#",
3"type": "object",
4"additionalProperties": false,
5"properties": {
6 "user_attributes": {
7 "type": "object",
8 "required": false,
9 "minProperties": 1,
10 "maxProperties": 100,
11 "patternProperties": {
12 "^[\\w-_.]{1,255}$": {
13 "oneOf": [
14 {
15 "type": "integer"
16 },
17 {
18 "type": "string",
19 "minLength": 1,
20 "maxLength": 255
21 },
22 {
23 "type": "array",
24 "items": {
25 "type": "string",
26 "maxLength": 255
27 },
28 "minItems": 1,
29 "maxItems": 1000
30 }
31 ]
32 }
33 },
34 "additionalProperties": false
35 }
36}
37}
Exemplo da resposta:
- http
1{
2 "user_attributes": {
3 "age": 18,
4 "level": 1,
5 "game": "WoW",
6 "is_baned": false,
7 "registration_date": "2022-01-01"
8 }
9}
Vinculação de ID da transação
Se você estiver usando um ID externo (ID de transação em seu sistema) e quiser associá-lo a um ID de transação no lado da Xsolla ou passar parâmetros de transação adicionais, implemente o seguinte processamento de webhook: 1{
2 "$schema": "http://json-schema.org/draft-07/schema#",
3 "type": "object",
4 "additionalProperties": false,
5 "properties": {
6 "notification_type": {
7 "type": "string"
8 },
9 "order_id": {
10 "type": "integer"
11 },
12 "project_id": {
13 "type": "integer"
14 },
15 "user": {
16 "type": "object",
17 "properties": {
18 "external_id": {
19 "type": "string"
20 },
21 "email": {
22 "type": "string"
23 }
24 }
25 },
26 "items": {
27 "type": "array",
28 "items": {
29 "type": "object",
30 "properties": {
31 "item_id": {
32 "type": "integer"
33 },
34 "sku": {
35 "type": "string"
36 },
37 "quantity": {
38 "type": "integer"
39 },
40 "type": {
41 "type": "string"
42 }
43 }
44 }
45 }
46 }
47}
Exemplo de solicitação:
- http
1{
2 "notification_type": "create_external_transaction",
3 "order_id": 1,
4 "project_id": 51336,
5 "user": {
6 "external_id": "user_id",
7 "email": "public_email@test.com"
8 },
9 "items": [
10 {
11 "item_id": 101,
12 "sku": "mithril_dagger",
13 "quantity": 2,
14 "type": "virtual_good"
15 }
16 ]
17}
Em resposta, você pode passar parâmetros de transação adicionais no objeto custom_parameters
.
Resposta esperada:
1{
2 "id": "validation_transaction_info_response.json",
3 "$schema": "http://json-schema.org/draft-07/schema#",
4 "description": "DDH Project Transaction Info Response",
5 "type": "object",
6 "additionalProperties": true,
7 "properties": {
8 "id": {
9 "type": "string",
10 "minLength": 1
11 },
12 "custom_parameters": {
13 "type": "object",
14 "additionalProperties": true,
15 "minProperties": 1,
16 "maxProperties": 200
17 }
18 }
19}
Exemplo da resposta:
- http
1{
2 "id":"123"
3}
Lista de parâmetros de webhook para vincular IDs de transação:
Parâmetro | Tipo | Descrição |
---|---|---|
notification_type | string | Tipo de notificação. |
order_id | integer | ID do pedido. |
project_id | integer | ID do projeto onde as chaves do jogo ou conjuntos com chaves de jogo, itens no jogo ou conjuntos com itens de jogo são carregados. |
user.external_id | string | ID do usuário do lado do desenvolvedor do jogo. |
Itens | string | Lista de itens que o usuário comprou. |
items.sku | string | Identificador do item único. |
items.quantity | integer | Quantidade de itens. |
items.type | string | Tipo de item. Aceita valores virtual_good , virtual_currency , physical_good , unit . O tipo unit é usado para jogos. |
items.unit_items | matriz | Matriz com dados de jogos. |
items.unit_items.type | string | Tipo de item para um pacote de chaves de jogo. Aceita o valor game_key . |
items.unit_items.sku | string | Identificador único para um pacote de chaves de jogo. Para um jogo em uma plataforma específica, o valor está no formato sku_drm . Exemplo de um jogo com um sku 110101 no Steam: “sku”: “110101_steam” . |
Notificação de compra
Depois que o usuário paga pela compra, você obtém:- O webhook de pagamento que contém informações de pagamento.
- O webhook de conteúdos do carrinho, que contém informações sobre os itens a serem adicionados ao inventário.
Integração no lado do parceiro de distribuição
Se você estiver interessado em integrar o Digital Distribution Hub, envie um e-mail para o gerente de integração no endereço psbusiness@xsolla.com e obtenha os parâmetros necessários para trabalhar com o Digital Distribution Hub API:
Durante a integração, você precisa enviar notificações sobre pagamentos bem-sucedidos ou cancelamentos (etapa 9). Para processar corretamente as notificações no lado da Xsolla, informe seu gerente sobre o endereço IP do servidor a partir do qual você envia as notificações. Se o endereço IP for alterado, certifique-se de informar o gerente assim que possível.
- Exiba um formulário para inserir:
- o endereço de e-mail do usuário — ao vender jogos
- o endereço de e-mail e o ID do jogo — ao vender itens do jogo
- O ID do usuário é usado para projetos que vendem itens virtuais, moedas virtuais e pacotes com itens e moedas. Nesse caso, também é necessário exibir uma dica para que o usuário insira o ID que recebeu ao se cadastrar no jogo.
- Exemplo:

- Passe os dados de usuário recebidos:
- Endereço de e-mail do usuário. Sempre obrigatório.
- ID do usuário no jogo. Obrigatório ao vender itens de jogo.
- Os dados são usados para verificar a existência do usuário no jogo e receber um token de autorização.
- Use o método Create user token. Passe parâmetros na solicitação:
Parâmetro | Tipo | Descrição |
---|---|---|
project_id | integer | ID do projeto onde as chaves do jogo ou conjuntos com chaves de jogo, itens no jogo ou conjuntos com itens de jogo são carregados. |
user.email | string | Endereço de e-mail do usuário. |
user.id | cadeia de caracteres ou null | Identificador de usuário exclusivo no jogo. |
- Um token de autorização com dados do usuário é retornado na resposta.
- Importe:
- catálogos de jogos, usando o método Obter lista de jogos
- catálogo de itens virtuais, usando o método de lista Obter item virtual
- catálogo de moedas virtuais, usando o método Obter lista de moedas virtuais
- conjuntos com jogos ou catálogos de itens de jogo, usando o método Obter lista de conjuntos para administração
- Na solicitação, passe o token que você recebeu na etapa 2 e o seguinte parâmetro:
Parâmetro | Tipo | Descrição |
---|---|---|
project_id | integer | ID do projeto onde as chaves do jogo ou conjuntos com chaves de jogo, itens no jogo ou conjuntos com itens de jogo são carregados. |
- Exiba o catálogo de jogos e itens de jogo em sua vitrine. Na interface, implemente a habilidade de selecionar:
- o número de chaves de jogo e plataformas de publicação de jogos
- o número de itens virtuais
- o número de moedas virtuais ou pacotes de moedas virtuais com uma quantidade fixa de moedas
- o número de conjuntos
- Se você usar um carrinho, o número de itens pode ser especificado no carrinho do usuário. Se você não usar um carrinho, a escolha do número de itens pode ser implementada no catálogo.
- Exemplo para especificar o número de itens no carrinho:

- Exemplo para especificar o número de itens no catálogo:

- Se você não usar um carrinho, vá para a etapa 6 e use o método Criar pedido com item especificado.
- Para preencher o carrinho, use o método Fill the cart with items.
- O usuário pode adicionar e remover itens ou alterar sua quantidade em um pedido. Você pode usar o seguinte para atualizar o carrinho:
- o método Encher o carrinho com itens toda vez que o usuário alterar os conteúdos do carrinho
- métodos para atualizar o carrinho e excluir um item:
- Nesse caso, use Obter o carrinho do usuário atual depois de atualizar o carrinho.
- Passe os seguintes parâmetros em solicitações de métodos de preenchimento e atualização de carrinho:
Parâmetro | Tipo | Descrição |
---|---|---|
project_id | integer | ID do projeto onde as chaves do jogo ou conjuntos com chaves de jogo, itens no jogo ou conjuntos com itens de jogo são carregados. |
items.sku | string | Identificador de item único especificado pelo desenvolvedor do jogo na Conta de Distribuidor. |
items.quantity | integer | Quantidade de itens. |
items.type | string | Tipo de item. Aceita valores virtual_good , virtual_currency , physical_good , unit . O tipo unit é usado para jogos. |
items.unit_items | matriz | Matriz com dados de jogos. |
items.unit_items.type | string | Tipo de item para um pacote de chaves de jogo. Aceita o valor game_key . |
items.unit_items.sku | string | Identificador único para um pacote de chaves de jogo especificado por desenvolvedores de jogos na Conta de Distribuidor. Para um jogo em uma plataforma específica, o valor está no formato sku_drm . Exemplo de um jogo com um sku 110101 no Steam: “sku”: “110101_steam” . |
- Depois de chamar Preencher o carrinho com itens ou Obter o carrinho do usuário atual, a resposta retorna informações atualizadas sobre os itens selecionados — preços antes e depois de descontos, itens bônus.
- Para criar um pedido e pagar por itens em um carrinho, use o método Criar pedido com todos os itens do carrinho atual. Passe os seguintes parâmetros na solicitação:
Parâmetro | Tipo | Descrição |
---|---|---|
project_id | integer | ID do projeto onde as chaves do jogo ou conjuntos com chaves de jogo, itens no jogo ou conjuntos com itens de jogo são carregados. |
| number | ID do parceiro distribuidor no lado Xsolla. |
| string | Moeda da ordem. A moeda virtual usa o SKU e a moeda real usa um código ISO 4217 de três letras. |
- A resposta retorna o ID do pedido e o preço do carrinho, incluindo impostos.
- Exiba o preço total do carrinho ao usuário.
- Debite os fundos do usuário de sua plataforma. Exiba o status de pagamento ao usuário.
- Envie uma notificação de pagamento. Se o pagamento foi reembolsado ou não concluído, envie uma notificação sobre cancelamento de pagamento.
- Para processar notificações corretamente no lado da Xsolla, informe o gerente da Xsolla sobre o endereço IP do servidor a partir do qual você envia notificações. Se o endereço IP mudar, certifique-se de informar o gerente assim que possível.
Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.