{
  "openapi": "3.1.0",
  "info": {
    "description": "# Visão geral\n\nWebhooks são notificações sobre eventos que ocorrem no sistema. Quando ocorre \num evento específico, a Xsolla envia uma solicitação HTTP na qual os dados do \nevento são transmitidos para seu aplicativo. Isso geralmente é uma solicitação \nPOST no formato JSON.\n\n<strong>Exemplos de eventos:</strong>\n- interação do usuário com um catálogo de itens\n- pagamento ou cancelamento de um pedido\n\nQuando um evento definido acontece, a Xsolla notifica o seu sistema sobre o \npagamento através de um webhook. Como resultado, você pode executar ações como:\n- repor o saldo do usuário\n- fazer um reembolso de pagamento\n- creditar ou debitar novos itens da conta do usuário\n- começar a fornecer uma assinatura\n- bloquear um usuário em caso de suspeita de fraude\n\n<b>Exemplo de um fluxo de trabalho de webhook de processamento de pagamentos:</b>\n\n![Webhook de processamento de \npagamentos](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks-general.svg)\n\n<div class=\"note\">\n<p><strong>Observação</strong></p><p>Dependendo da solução utilizada e do tipo de integração, o conjunto de webhooks e a sequência de interações podem ser diferentes do exemplo fornecido.</p>\n</div>\n\n<b>Guia de vídeo para integração de webhooks da Xsolla:</b>\n\n<div style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 15px; overflow: hidden;\">\n  <iframe src=\"https://player.vimeo.com/video/1034591338\" style=\"position: absolute; top:0; left: 0; width: 100%; height: 100%; border:0; border-radius: 15px;\" allowfullscreen></iframe>\n</div>\n\n\n<b>Configurações de webhooks ao trabalhar com produtos e soluções Xsolla:</b>\n\n<table>\n<thead>\n    <tr>\n        <th>Produto/Solução</th>\n        <th>Obrigatório/Opcional</th>\n        <th>Para que servem os webhooks</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Pagamentos</td>\n        <td>Obrigatório</td>\n        <td>\n          <ul>\n            <li>Validação do usuário.</li>\n            <li>Receber informações sobre dados da transação em casos de pagamento bem-sucedido ou reembolso de pagamento.</li>\n            <li>Creditar itens comprados a um usuário e debitar itens em caso de cancelamento do pedido.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Loja</td>\n        <td>Obrigatório</td>\n        <td>\n          <ul>\n            <li>Validação do usuário.</li>\n            <li>Receber informações sobre dados da transação em casos de pagamento bem-sucedido ou reembolso de pagamento.</li>\n            <li>Creditar itens comprados a um usuário e debitar itens em caso de cancelamento do pedido.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Game Sales</td>\n        <td>Opcional</td>\n        <td>Para vender chaves de jogo, a validação do usuário e o ato de creditar itens não são necessários. Você pode conectar webhooks se quiser receber informações sobre eventos, como pagamento ou cancelamento de pedido.<br />Se você conectar webhooks, é importante processar todos os <a href=\"/pt/webhooks/overview/#section/List-of-required-webhooks\">webhooks necessários</a> acionados.\n</td>\n    </tr>\n    <tr>\n        <td>Subscriptions</td>\n        <td>Opcional</td>\n        <td>Recebendo informações sobre criação, atualização ou cancelamento de uma assinatura. Como alternativa, você pode <a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_information_set_up_via_api\">solicitar informações por meio da API</a>.\n</td>\n    </tr>\n    <tr>\n        <td>Web Shop</td>\n        <td>Obrigatório</td>\n        <td>\n          <ul>\n            <li>Validação do usuário.</li>\n            <li>Receber informações sobre dados da transação em casos de pagamento bem-sucedido ou reembolso de pagamento.</li>\n            <li>Creditar itens comprados a um usuário e debitar itens em caso de cancelamento do pedido.</li>\n            <li>Autenticação de usuários, se você usa autenticação via ID de usuário. Como alternativa, você pode usar <a href=\"/solutions/web-shop/authentication-and-analytics/set-up-authentication/#web_shop_guide_shop_with_auth_set_up_auth_xsolla_login_how_to_get_it\">autenticação de usuários via Xsolla Login</a>.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Digital Distribution Hub</td>\n        <td>Obrigatório</td>\n        <td>\n          <ul>\n            <li>Validação do usuário.</li>\n            <li>Vinculando o ID de transação no lado da Xsolla com o ID da transação em seu sistema.</li>\n            <li>Transferência de parâmetros de transação adicionais no pedido.</li>\n            <li>Creditar itens comprados ao usuário e debitar itens em caso de cancelamento do pedido.</li>\n          </ul>\n          <p>Consulte a <a href=\"/solutions/ddh/#integration_guide_ddh_webhook\">documentação</a> para obter informações detalhadas sobre como configurar webhooks para o Digital Distribution Hub.</p>\n        </td>\n    </tr>\n    <tr>\n        <td>Login</td>\n        <td>Opcional</td>\n        <td>\n          <p>Recebendo informações do evento:</p>\n          <ul>\n            <li>cadastro do usuário/autorização</li>\n            <li>confirmação de endereço de e-mail do usuário</li>\n            <li>vinculando a conta de mídia social de um usuário</li>\n          </ul>\n          <p>Consulte a <a href=\"/api/login/operation/add-webhook-for-event/\">documentação de Login</a> para obter informações detalhadas sobre como configurar webhooks.</p>\n        </td>\n    </tr>\n</tbody>\n</table>\n\n# Lista de webhooks necessários\nSe você usa produtos e soluções que exijam trabalhar com webhooks, <a \nhref=\"/webhooks/overview/#section/Set-up-webhooks-in-Publisher-\nAccount\">habilite e teste os webhooks em sua Conta de Distribuidor</a> e <a \nhref=\"/webhooks/overview/#section/Webhook-listener\">configure o processamento \ndeles</a>. Quando ocorrem eventos específicos, os webhooks são enviados \nsequencialmente. Portanto, se você não processar um dos webhooks, os webhooks \nsubsequentes não serão enviados. A lista de webhooks necessários é apresentada \nabaixo.\n\n## Loja e Pagamentos\n2 opções de envio de webhook foram configuradas no lado da Xsolla ao comprar e \ndevolver itens no site — informações com dados de pagamento e transação, e \ninformações sobre itens comprados, podem vir separadamente ou podem ser \ncombinadas em um webhook.\n\n<b>Recebimento de informações em webhooks combinados:</b>\n\nSe você se registrou na <a href=\"https://publisher.xsolla.com/\">Conta de \nDistribuidor</a> após 22 de janeiro de 2025, você receberá todas as informações \nnos webhooks <a href=\"/webhooks/operation/successful-order-payment\">Pagamento \nbem-sucedido do pedido</a> (`order_paid`) e <a href=\"/webhooks/operation/order-\ncancellation\">Cancelamento do pedido</a> (`order_canceled`). Nesse caso, você \nnão precisa processar os webhooks <a \nhref=\"/webhooks/operation/payment\">Pagamento</a> (`payment`) e <a \nhref=\"/webhooks/operation/refund\">Reembolso</a> (`refund`).\n\n<b>Recebimento de informações em webhooks separados:</b>\n\nSe você se registrou na <a href=\"https://publisher.xsolla.com/\">Conta de \nDistribuidor</a> até 22 de janeiro de 2025, você receberá os seguintes webhooks:\n- <a href=\"/webhooks/operation/payment\">Pagamento</a> (`payment`) e <a \n  href=\"/webhooks/operation/refund\">Reembolso</a> (`refund`) com informações \n  sobre dados de pagamento e detalhes da transação.\n- <a href=\"/webhooks/operation/successful-order-payment-separate\">Pagamento bem-\n  sucedido do pedido</a> (`order_paid`) e <a href=\"/webhooks/operation/order-\n  cancellation-separate\">Cancelamento do pedido</a> (`order_canceled`) com \n  informações sobre os itens comprados.\n\nVocê precisa processar todos os webhooks de entrada. Para alternar para a nova \nopção com o recebimento de webhooks combinados, entre em contato com seus \nGerentes de Sucesso do Cliente ou envie um e-mail para <a \nhref=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.\n\nPara o pleno funcionamento gerenciamento da loja do jogo e de pagamentos, é \nnecessário implementar o processamento dos principais webhooks.\n\n<b>Se você receber webhooks combinados</b>:\n\n<table>\n<thead>\n    <tr>\n        <th>Nome e tipo do webhook</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Validação de usuário &gt; <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> (<code>user_validation</code>)</td>\n        <td>É enviado em diferentes estágios do processo de pagamento para garantir que o usuário esteja registrado no jogo.</td>\n    </tr>\n    <tr>\n        <td>Serviços de jogo &gt; Webhooks combinados &gt; <a href=\"/webhooks/operation/successful-order-payment\">Pagamento bem-sucedido do pedido</a> (<code>order_paid</code>)</td>\n        <td>Ele contém dados de pagamento, detalhes da transação e informações sobre itens comprados. Use os dados do webhook para adicionar itens ao usuário.</td>\n    </tr>\n    <tr>\n        <td>Serviços de jogo &gt; Webhooks combinados &gt; <a href=\"/webhooks/operation/order-cancellation\">Cancelamento de pedidos</a> (<code>order_canceled</code>) </td>\n        <td>Ele contém dados do pagamento cancelado, detalhes da transação e informações sobre itens comprados. Use os dados do webhook para remover os itens comprados.</td>\n    </tr>\n</tbody>\n</table>\n\n\n<b>Se você receber webhooks separados</b>:\n\n<table>\n<thead>\n    <tr>\n        <th>Nome e tipo do webhook</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Validação de usuário &gt; <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> (<code>user_validation</code>)</td>\n        <td>É enviado em diferentes estágios do processo de pagamento para garantir que o usuário esteja registrado no jogo.</td>\n    </tr>\n    <tr>\n        <td>Pagamentos &gt; <a href=\"/webhooks/operation/payment\">Pagamento</a> (<code>payment</code>)</td>\n        <td>Ele contém dados de pagamento e detalhes da transação.</td>\n    </tr>\n    <tr>\n        <td>Serviços de jogo &gt; Webhooks separados &gt; <a href=\"/webhooks/operation/successful-order-payment-separate\">Pagamento bem-sucedido do pedido</a> (<code>order_paid</code>)</td>\n        <td>Ele contém informações sobre itens comprados. Use os dados do webhook para adicionar itens ao usuário.</td>\n    </tr>\n    <tr>\n        <td>Pagamentos &gt; <a href=\"/webhooks/operation/refund\">Reembolso</a> (<code>refund</code>)</td>\n        <td>Ele contém dados de pagamento e detalhes da transação.</td>\n    </tr>\n    <tr>\n        <td>Serviços de jogo &gt; Webhooks separados &gt; <a href=\"/webhooks/operation/order-cancellation-separate\">Cancelamento de pedidos</a> (<code>order_canceled</code>) </td>\n        <td>Ele contém informações sobre os itens comprados e o ID da transação cancelada. Use os dados do webhook para remover os itens comprados.</td>\n    </tr>\n</tbody>\n</table>\n\nSe a <a href=\"/doc/in-game-store/features/personalization\">personalização</a> \ndo catálogo de itens for implementada no lado do aplicativo, configure o \nprocessamento do webhook <a href=\"/webhooks/operation/personalized-partner-\ncatalog\">Personalização de catálogo do lado do parceiro</a>.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Para receber pagamentos reais, você só precisa <a href=\"/doc/in-game-store/integration-guide/sign-licensing-agreement/\">assinar o Contrato de Licenciamento</a> e implementar o processamento dos webhooks:</p>\n<p><ul><li><a href=\"/webhooks/operation/payment\">Pagamento</a>, <a href=\"/webhooks/operation/successful-order-payment-separate\">Pagamento bem-sucedido do pedido</a> e <a href=\"/webhooks/operation/user-validation/\">Validação do usuário</a> se você receber webhooks separados</li><li><a href=\"/webhooks/operation/successful-order-payment\">Pagamento bem-sucedido do pedido</a> e <a href=\"/webhooks/operation/user-validation/\">Validação do usuário</a> se você receber webhooks combinados</li></ul></p>\n</div>\n\n## Subscriptions\nPara gerenciar automaticamente os planos de assinatura, é necessário \nimplementar o processamento dos principais webhooks:\n- <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> \n  (`user_validation`) — é enviado em diferentes estágios do processo de pagamento \n  para garantir que o usuário esteja registrado no jogo.\n- <a href=\"/webhooks/operation/payment\">Pagamento</a> (`payment`) — é enviado \n  quando um pedido é pago e contém dados de pagamento e detalhes da transação.\n- <a href=\"/webhooks/operation/created-subscription/\">Assinatura criada</a> \n  (`create_subscription`) — é enviado quando um webhook <a \n  href=\"/webhooks/operation/payment\">Pagamento</a> foi processado com êxito ou o \n  usuário comprou uma assinatura com um período de avaliação. Ele contém os dados \n  da assinatura comprada e os do usuário. Use os dados do webhook para adicionar \n  uma assinatura ao usuário.\n- <a href=\"/webhooks/operation/updated-subscription/\">Assinatura atualizada</a> \n  (`update_subscription`) — é enviado quando uma assinatura é renovada ou \n  alterada, quando um webhook <a \n  href=\"https://developers.xsolla.com/pt/webhooks/operation/payment\">Pagamento</a> \n  foi processado com êxito. Ele contém os dados da assinatura comprada e os dados \n  do usuário. Use os dados do webhook para estender a assinatura do usuário ou \n  alterar os parâmetros de assinatura.\n- <a href=\"/webhooks/operation/refund\">Reembolso</a> (`refund`) — é enviado \n  quando um pedido é cancelado e contém os dados de pagamento cancelados e \n  detalhes da transação.\n- <a href=\"/webhooks/operation/canceled-subscription/\">Assinatura cancelada</a> \n  (`cancel_subscription`) — é enviadao quando um webhook <a \n  href=\"/webhooks/operation/refund\">Reembolso</a> foi processado com êxito ou a \n  assinatura foi cancelada por outro motivo. Ele contém informações sobre a \n  assinatura e os dados do usuário. Use os dados do webhook para deduzir \n  assinaturas compradas do usuário.\n\n# Configure webhooks na Conta de Distribuidor\n\n## Configurações gerais\n\nPara habilitar o recebimento de webhooks:\n1. No projeto na Conta de Distribuidor, acesse a seção <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Configurações \n   do projeto &gt; Webhooks</a>.\n2. No campo <b>Servidor de webhooks</b>, especifique o URL do servidor onde você \n   deseja receber webhooks no formato `https://example.com`. Você também pode \n   especificar o URL encontrado em uma ferramenta para testar webhooks.\n\n<div class=\"notice\">\n<p><strong>Atenção</strong></p>\n<p>O protocolo HTTPS é usado para transferir dados; o protocolo HTTP não é suportado.</p>\n</div>\n\n<p></p>\n\n3. Gerar uma chave secreta:\n\n<ol><ol type=\"a\">\n<li>Na seção <strong>Chaves secretas</strong>, selecione <strong>Adicionar chave</strong>.</li>\n<li>Na janela modal que surgir, insira o nome da chave que permitirá identificá-la na lista geral.</li>\n<li>Selecione <strong>Criar chave</strong>.</li>\n<li>Selecione <strong>Copiar segredo</strong> e salve a chave criada do seu lado.</li>\n<li>Selecione <strong>Pronto</strong>.</li>\n<li>Confirme que você salvou a chave e selecione <strong>Ok, fechar</strong>.</li>\n</ol></ol>\n\n![Adicionar \nchave](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/add-key.svg)\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>Recomendações de chaves:<ul>\n<li><strong> Salve a chave secreta gerada do seu lado</strong>. Você só pode visualizar a chave na Conta de Distribuidor uma vez quando ela for criada.</li>\n<li>Não compartilhe sua chave secreta com ninguém.</li>\n<li>A chave secreta deve ser armazenada no seu servidor e nunca em arquivos binários ou no front-end.</li></ul>\n</p>\n</div>\n\n4. Selecione **Ativar webhooks**.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Para testar webhooks, você pode selecionar qualquer site dedicado, como <a href=\"https://webhook.site/#!/\">webhook.site</a>, ou uma plataforma, como <a href=\"https://ngrok.com/\">ngrok</a>.</p>\n</div>\n\n<p></p>\n\n<div class=\"notice\">\n    <p><strong>Observação</strong></p>\n    <p>Não é possível enviar webhooks simultaneamente para URLs diferentes. O que você pode fazer na Conta de Distribuidor é especificar um URL para teste primeiro e, em seguida, substituí-lo pelo real.</p>\n</div>\n\nPara desativar o recebimento de webhooks:\n1. No projeto na Conta de Distribuidor, acesse a seção <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Configurações \n   do projeto &gt; Webhooks</a>.\n2. Clique em <b>Desativar webhooks</b>.\n\n## Rotação de chave secreta\n\nAtualizar chaves secretas regularmente aumenta a segurança da sua integração. \nVocê pode criar até 5 chaves secretas no seu projeto para habilitar a rotação \ndelas. Para fazer isso:\n\n1. Na seção <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Project \n   settings &gt; Webhooks</a>, selecione **Add key**.\n\n![Adicionar \nchave](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/add-new-key.svg)\n\n2. Na janela modal que surgir, insira o nome da chave que permitirá identificá-la \n   na lista geral.\n3. Selecione **Create key**.\n4. Selecione **Copy secret** e salve a chave criada do seu lado.\n5. Selecione **Done**.\n6. Confirme que você salvou a chave e selecione **Ok, fechar**.\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>Recomendações de chaves:<ul>\n<li><strong> Salve a chave secreta gerada do seu lado</strong>. Você só pode visualizar a chave na Conta de Distribuidor uma vez quando ela for criada.</li>\n<li>Não compartilhe sua chave secreta com ninguém.</li>\n<li>A chave secreta deve ser armazenada no seu servidor e nunca em arquivos binários ou no front-end.</li></ul>\n</p>\n</div>\n\nSó pode haver uma chave secreta ativa por projeto. Se quiser alterá-la, \nselecione **Definir como ativa** na fileira de outra chave e confirme a ação. \nDepois de migrar com sucesso para uma nova chave, recomendamos excluir as \nchaves desativadas.\n\n![Alterar a chave \nativa](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/activate-key.svg)\n\n## Configurações avançadas\n\nAs configurações avançadas são disponibilizadas para os webhooks na seção <a \nhref=\"/webhooks/overview/#section/Test-webhooks-in-Publisher-\nAccount/Store\">Payments and Store</a>. Eles aparecerão automaticamente no bloco \n<a href=\"/webhooks/overview/#section/Set-up-webhooks-in-Publisher-Account\n/General-settings\">General settings</a> depois que você clicar no botão <b>Get \nwebhooks</b>.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se as configurações avançadas não forem exibidas, verifique se a recepção do webhook está conectada nas configurações gerais e se você está na aba <b>Testing &gt; Payments and Store</b>.</p>\n</div>\n\nNesta seção, você pode configurar o recebimento de informações adicionais em \nwebhooks. Para fazer isso, coloque os interruptores correspondentes na posição \nativa. A linha de cada permissão indica os webhooks que serão afetados pela \nalteração das configurações.\n\n<table>\n<thead>\n    <tr>\n        <th>Opção</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Mostre informações sobre a conta de pagamentos salva (exibidas apenas se você cadastrou sua Conta de Distribuidor no dia 22 de janeiro de 2025 ou anteriormente e se recebe webhooks separados).</td>\n        <td>As informações sobre a forma de pagamento salva são passadas no objeto personalizado <code>payment_account</code>.</td>\n    </tr>\n    <tr>\n        <td>Exibir informações sobre transações pelos métodos de pagamento salvos.</td>\n        <td><p>As informações são passadas nos seguintes parâmetros personalizados do webhook:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — o método de pagamento guardado não foi utilizado</li><li><code>1</code> — o método de pagamento foi salvo ao efetuar o pagamento atual</li><li><code>2</code> — o método de pagamento previamente guardado é utilizado</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — pagamento único</li><li><code>2</code> — pagamento recorrente</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td>Adicione o objeto <code>order</code> ao webhook (exibido apenas se você cadastrou sua Conta de Distribuidor no dia 22 de janeiro de 2025 ou anteriormente e se recebe webhooks separados).</td>\n        <td>As informações sobre o pedido são passadas no objeto  <code>order</code> do webhook <a href=\"/webhooks/operation/payment/\">Pagamento</a>.</td>\n    </tr>\n    <tr>\n        <td>Enviar apenas os parâmetros de usuário necessários sem dados confidenciais.</td>\n        <td><p>Somente as seguintes informações sobre o usuário são passadas no webhook:</p><ul><li>ID</li><li>país</li></ul></td>\n    </tr>\n    <tr>\n        <td>Enviar parâmetros personalizados.</td>\n        <td>As informações sobre os <a href=\"/api/pay-station/operation/create-token/\">parâmetros de token personalizados</a> são passadas no webhook.</td>\n    </tr>\n    <tr>\n        <td>Exibir BIN e sufixo do cartão.</td>\n        <td><p>As seguintes informações sobre o número do cartão bancário são passadas no webhook:</p><ul><li>os primeiros 6 dígitos no parâmetro <code>card_bin</code></li><li>os últimos 4 dígitos no <code>card_suffix</code></li></ul></td>\n    </tr>\n    <tr>\n        <td>Exibir marca do cartão.</td>\n        <td>A bandeira do cartão utilizado para efetuar o pagamento. Por exemplo, Mastercard ou Visa.</td>\n    </tr>\n    <tr>\n        <td>Exibir informações sobre o motivo do reembolso.</td>\n        <td>Informações detalhadas sobre os motivos do reembolso.</td>\n    </tr>\n    <tr>\n        <td>Mostrar o WHC do país e as taxas de aquisição de usuários.</td>\n        <td>Os objetos <code>payment_details.​country_wht</code> e <code>payment_details.​user_acquisition_fee</code> serão passados no webhook. Essa opção fica ativada por padrão.</td>\n    </tr>\n    <tr>\n        <td>Enviar informações da 3DS.</td>\n        <td>O objeto <code>cards</code> contendo dados sobre a verificação 3-D Secure será passado no webhook.</td>\n    </tr>\n</tbody>\n</table>\n\n![Configurações \navançadas](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/advanced-settings.png)\n\n# Teste webhooks na Conta de Distribuição\n\nTestar webhooks ajuda a garantir a configuração correta do projeto tanto do seu \nlado quanto do lado da Xsolla.\n\nSe os webhooks forem <a href=\"/webhooks/overview/#section/Set-up-webhooks-in-\nPublisher-Account\">configurados</a> com êxito, uma seção de teste de webhooks \nserá exibida abaixo da seção de configuração de webhooks.\n\n![Seção de testes de \nwebhooks](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/testing-section.svg)\n\nA seção de testes na Conta de Distribuidor varia de acordo com a opção de \nrecebimento do webhook.\n\nSe você se cadastrou na Conta de Distribuidor após 22 de janeiro de 2025, você \nrecebe webhooks combinados:\n\n<table>\n<thead>\n    <tr>\n        <th>Nome da aba para testar webhooks</th>\n        <th>Nome e tipo do webhook</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><b>Pagamentos e Loja</b></td>\n        <td>Validação de usuário &gt; <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Serviços de jogo &gt; Webhooks combinados &gt; <a href=\"/webhooks/operation/successful-order-payment\">Pagamento bem-sucedido do pedido</a> (<code>order_paid</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Serviços de jogo &gt; Webhooks combinados &gt; <a href=\"/webhooks/operation/order-cancellation\">Cancelamento de pedidos</a> (<code>order_canceled</code>) </td>\n    </tr>\n    <tr>\n        <td><b>Assinaturas</b></td>\n        <td>Validação de usuário &gt; <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Pagamentos &gt; <a href=\"/webhooks/operation/payment\">Pagamento</a> (<code>payment</code>)</td>\n    </tr>\n</tbody>\n</table>\n\n\nSe você se cadastrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou \nanteriormente, você recebe webhooks separados:\n\n<table>\n<thead>\n    <tr>\n        <th>Nome da aba para testar webhooks</th>\n        <th>Nome e tipo do webhook</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><b>Loja</b></td>\n        <td>Serviços de jogo &gt; Webhooks separados &gt; <a href=\"/webhooks/operation/successful-order-payment-separate\">Pagamento bem-sucedido do pedido</a> (<code>order_paid</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Serviços de jogo &gt; Webhooks separados &gt; <a href=\"/webhooks/operation/order-cancellation-separate\">Cancelamento de pedidos</a> (<code>order_canceled</code>) </td>\n    </tr>\n    <tr>\n        <td><b>Pagamentos</b></td>\n        <td>Validação de usuário &gt; <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Pagamentos &gt; <a href=\"/webhooks/operation/payment\">Pagamento</a> (<code>payment</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Assinaturas</b></td>\n        <td>Validação de usuário &gt; <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Pagamentos &gt; <a href=\"/webhooks/operation/payment\">Pagamento</a> (<code>payment</code>)</td>\n    </tr>\n</tbody>\n</table>\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se um aviso de que o teste não passou aparecer na seção de testes, verifique as configurações de resposta do webhook no <a href=\"/webhooks/overview/#section/Webhook-listener\">ouvinte do webhook</a>. As razões para os erros no teste são indicadas nos resultados do teste.</p>\n<p><b>Exemplo:</b></p>\n<p>Você usa o site especializado <a href=\"https://webhook.site/#!/\">webhook.site</a> para teste.</p>\n<p>Um erro é exibido na seção <b>Teste de respostas a assinaturas inválidas</b>.</p>\n<p>Isso acontece porque a Xsolla envia um webhook com uma assinatura incorreta e espera que seu manipulador responda com um código HTTP <code>4xx</code> especificando o código de erro <code>INVALID_SIGNATURE</code>.</p>\n<p><a href=\"https://webhook.site/#!/\">webhook.site</a> envia um código HTTP <code>200</code> em resposta a todos os webhooks, incluindo um webhook com uma assinatura incorreta. O código HTTP <code>4xx</code> esperado não pode ser obtido e, portanto, um erro é exibido no resultado do teste.</p>\n</div>\n\nO processo de teste para o cenário com webhooks combinados é descrito abaixo.\n\n## Pagamentos e Loja\n\nNa aba <b>Pagamentos e Loja</b>, você pode testar os seguintes webhooks:\n- <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> \n  (`user_validation`)\n- <a href=\"/webhooks/operation/successful-order-payment\">Pagamento bem-sucedido \n  do pedido</a> (`order_paid`)\n- <a href=\"/webhooks/operation/order-cancellation\">Cancelamento do pedido</a> \n  (`order_canceled`)\n\nPara testar webhooks:\n1. Na seção de teste de webhooks, vá para a aba <b>Pagamentos e Loja</b>.\n2. Na lista suspensa, selecione o tipo de item. Se você ainda não configurou esse \n   tipo de item na Conta de Distribuidor, selecione o botão para configurá-lo. \n   Após criar o item, volte para a seção de testes de webhooks e prossiga para a \n   próxima etapa.\n3. Preencha os campos necessários:\n   * **User ID** — durante os testes, você pode usar qualquer combinação de letras e \n     dígitos.\n   * Insira qualquer valor no campo **ID de pedido Xsolla**.\n   * **Xsolla invoice ID** — ID da transação no lado da Xsolla. Ao testar, você pode \n     usar qualquer valor numérico.\n   * **Invoice ID** — ID da transação no lado do seu jogo. Ao testar, você pode usar \n     qualquer combinação de letras e dígitos. Não é um parâmetro obrigatório para um \n     pagamento bem-sucedido, mas você pode passá-lo para vincular o ID da transação \n     do seu lado ao ID da transação no lado da Xsolla.\n   * **Amount** — quantia do pagamento. Ao testar, você pode usar qualquer valor \n     numérico.\n   * **Currency** — selecione uma moeda na lista suspensa.\n   * Selecione o SKU dos itens na lista suspensa e indique o valor. Você pode \n     escolher vários itens do mesmo tipo clicando em **+** e adicionando-os em uma \n     nova linha.\n4. Selecione **Testar webhooks**.\n\nOs webhooks <a href=\"/webhooks/operation/user-validation/\">Validação do \nusuário</a>, <a href=\"/webhooks/operation/successful-order-payment\">Pagamento \nbem-sucedido do pedido</a> e <a href=\"/webhooks/operation/order-\ncancellation\">Cancelamento do pedido</a> com os dados especificados são \nenviados para o URL fornecido. Os resultados do teste de cada tipo de webhook \nsão exibidos abaixo do botão <b>Testar webhooks</b>.\n\nSe a caixa <b>Usar ID de usuário público</b> estiver marcada na seção <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/advanced\">Configurações do \nprojeto > Configurações de Integração</a>, o webhook <a href=\"/webhooks/user-\nvalidation/user-search\">Busca de usuário</a> também será enviado para o URL do \nseu servidor de webhooks e o resultado do teste será exibido.\n\nPara cada webhook, você precisa configurar o processamento de ambos os \ncenários: um bem-sucedido e outro com um erro.\n\n![Seção de teste de \npagamentos](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks/testing-results.svg)\n\n## Subscriptions\n\n<div class=\"note\">\n<p><strong>Aviso</strong></p>\n<p>Para testar webhooks, você deve ter pelo menos um <a href=\"/sell-subscriptions/integration-guide/set-up-plan/\">plano de assinatura criado</a> na Conta de Distribuidor na seção <a href=\"https://publisher.xsolla.com/0/projects/0/subscriptions/plans\">Catálogo de itens &gt; Assinaturas</a>.</p>\n</div>\n\nNa aba <b>Subscriptions</b>, você pode testar os seguintes webhooks:\n- <a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a> \n  (`user_validation`)\n- <a href=\"/webhooks/operation/payment\">Payment</a> (`payment`)\n\n<div class=\"note\">\n<p><strong>Aviso</strong></p>\n<p>Você pode encontrar informações detalhadas sobre como testar outros cenários de gerenciamento de assinaturas no <a href=\"/sell-subscriptions/integration-guide/set-up-plan/#guides_subscriptions_set_up_plan_testing_purchase\">guia de integração</a>.</p>\n</div>\n\nPara testar webhooks:\n\n1. Na seção de testes, acesse a aba **Assinaturas**.\n2. Preencha os campos necessários:\n   * **User ID** — durante os testes, você pode usar qualquer combinação de letras e \n     dígitos.\n   * **Xsolla invoice ID** — ID da transação no lado da Xsolla. Ao testar, você pode \n     usar qualquer valor numérico.\n   * **Public user ID** — ID conhecido por um usuário, por exemplo, um e-mail ou \n     apelido. Este campo é exibido se você marcou a caixa **Use public user ID** no \n     seu projeto na seção [Project settings > Integration \n     settings](https://publisher.xsolla.com/0/projects/0/edit/advanced).\n   * **Amount** — quantia do pagamento. Ao testar, você pode usar qualquer valor \n     numérico.\n   * **Currency** — selecione uma moeda na lista suspensa.\n   * **Plan ID** — um plano de assinatura. Escolha um plano na lista suspensa.\n   * **Subscription product** — escolha um produto na lista suspensa (opcional). A \n     lista é exibida se [produtos](/pt/sell-subscriptions/integration-guide/get-started/#guides_subscriptions_glossary_product) estiverem configurados no seu \n     projeto.\n   * **Invoice ID** — ID da transação no lado do seu jogo. Ao testar, você pode usar \n     qualquer combinação de letras e dígitos. Não é um parâmetro obrigatório para um \n     pagamento bem-sucedido, mas você pode passá-lo para vincular o ID da transação \n     do seu lado ao ID da transação no lado da Xsolla.\n   * **Trial period**. Para testar a [compra de uma assinatura sem um período de \n     provação](/pt/sell-subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_sandbox) ou \n     para testar a [renovação de uma assinatura](/pt/sell-subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_renewal)\n     , especifique o valor `0`.\n3. Selecione **Test**.\n\nNo URL especificado, você receberá webhooks com os dados preenchidos. Os \nresultados dos testes de cada webhook, tanto para um cenário bem-sucedido \nquanto para um cenário de falha, são exibidos sob o botão <b>Test</b>.\n\n<a id=\"webhook-listener\"></a>\n\n# Ouvinte webhook\n\nOuvinte webhook é o código de programa que permite receber webhooks acionados \nem um endereço URL especificado, <a href=\"/webhooks/overview/#section/Webhook-\nlistener/Generation-of-signature\">gerando uma assinatura</a> e <a \nhref=\"/webhooks/overview/#section/Webhook-listener/Sending-responses-to-\nwebhook\">enviando uma resposta</a> para o servidor webhook Xsolla.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Você pode usar a <a href=\"https://developers.xsolla.com/pt/sdk/php/\">biblioteca Pay Station PHP SDK</a>, que contém classes prontas para processar webhooks.</p>\n</div>\n\n<!-- IMPORTANT! Changing the list of IP addresses should be coordinated with the administrators. Request for Director of Infrastructure and IT approval in the ticket for changing the IP address list. -->\n\nNo lado do aplicativo, implemente o recebimento de webhooks dos seguintes \nendereços IP:\n- `185.30.20.0/24`\n- `185.30.21.0/24`\n- `185.30.22.0/24`\n- `185.30.23.0/24`\n- `34.102.38.178`\n- `34.94.43.207`\n- `35.236.73.234`\n- `34.94.69.44`\n- `34.102.22.197`\n\nSe você integrou o produto <a href=\"/doc/login/\">Login</a>, adicione também o \nprocessamento de webhooks dos seguintes endereços IP:\n\n- `34.94.0.85`\n- `34.94.14.95`\n- `34.94.25.33`\n- `34.94.115.185`\n- `34.94.154.26`\n- `34.94.173.132`\n- `34.102.48.30`\n- `35.235.99.248`\n- `35.236.32.131`\n- `35.236.35.100`\n- `35.236.117.164`\n\nLimitações:\n- Não deve haver várias transações bem-sucedidas com o mesmo ID no banco de dados \n  do aplicativo.\n- Se o ouvinte do webhook recebeu um webhook com um ID que já existe no banco de \n  dados, você precisará retornar o resultado do processamento anterior dessa \n  transação. Não é recomendável creditar o usuário com uma compra duplicada e \n  criar registros duplicados no banco de dados.\n\n## Geração de assinatura\n\nPara garantir a transmissão segura de dados, você deve verificar se o webhook \nfoi realmente enviado do servidor Xsolla e se não foi adulterado durante a \ntransmissão. Para fazer isso, gere sua própria assinatura com base no conteúdo \ndo corpo da solicitação e compare-a com a assinatura fornecida no cabeçalho \n`authorization` da solicitação de entrada. Se as assinaturas corresponderem, o \nwebhook é autêntico e seguro de processar.\n\nEtapas de verificação:\n\n1. Recupere a assinatura do cabeçalho `authorization` da solicitação de webhook de \n   entrada. O formato do cabeçalho é `Signature <signature_value>`.\n2. Recupere o corpo da solicitação do webhook no formato JSON. <div \n   class=\"notice\"><p><strong>Aviso</strong></p><p>Use o conteúdo JSON exatamente \n   como foi recebido. Não analise nem recodifique a carga, pois isso alterará a \n   formatação e fará com que a verificação da assinatura falhe.</p></div><p></p>\n\n3. Gere sua própria assinatura para comparação: <ol type=\"a\"> <li>Concatene a \n   carga JSON com a chave secreta do seu projeto anexando a chave ao final da \n   cadeia de caracteres.</li> <li>Aplique a função de hash criptográfico SHA-1 à \n   cadeia de caracteres resultante. O resultado será uma cadeia de caracteres \n   hexadecimal em letras minúsculas.</li> </ol>\n4. Compare sua assinatura gerada com a `authorization` do cabeçalho. Se elas \n   corresponderem, o webhook é autêntico.\n\nAbaixo, você pode encontrar exemplos de implementação de geração de assinatura \npara as seguintes linguagens: C#, C++, Go, PHP e Node.js.\n\n### Exemplo de um webhook (HTTP):\n\n```http\nPOST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 165\nauthorization: Signature 52eac2713985e212351610d008e7e14fae46f902\n{\n  \"notification_type\":\"user_validation\",\n  \"user\":{\n      \"ip\":\"127.0.0.1\",\n      \"phone\":\"18777976552\",\n      \"email\":\"email@example.com\",\n      \"id\":1234567,\n      \"name\":\"Xsolla User\",\n      \"country\":\"US\"\n  }\n}\n```\n\n### Exemplo de um webhook (curl):\n\n```bash\ncurl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \\\n-d '{\n  \"notification_type\":\n    \"user_validation\",\n    \"user\":\n      {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": 1234567,\n        \"name\": \"Xsolla User\",\n        \"country\": \"US\"\n      }\n    }'\n```\n\n### Exemplo C# de implementação da geração de assinaturas (amostra geral):\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Este exemplo de código é compatível com o .NET Framework 4.0 e posterior, bem como com o .NET Core e outras versões modernas do .NET. A verificação de assinatura usa comparação de tempo constante por meio do método <code>ConstantTimeEquals</code> para ajudar a evitar ataques de tempo.</p>\n</div>\n\n```csharp\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\npublic static class XsollaWebhookSignature\n{\n    public static string ComputeSha1(string jsonBody, string secretKey)\n    {\n        // Concatenation of the JSON from the request body and the project's secret key\n        string dataToSign = jsonBody + secretKey;\n        using (SHA1 sha1 = SHA1.Create())\n        {\n            byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));\n            // Convert hash bytes to lowercase hexadecimal string\n            var hexString = new StringBuilder(hashBytes.Length * 2);\n            foreach (byte b in hashBytes)\n            {\n                hexString.Append(b.ToString(\"x2\"));\n            }\n            return hexString.ToString();\n        }\n    }\n    public static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n    {\n        string computedSignature = ComputeSha1(jsonBody, secretKey);\n        string receivedSignatureLower = receivedSignature.ToLower();\n        // Use constant-time comparison to prevent timing attacks\n        return ConstantTimeEquals(computedSignature, receivedSignatureLower);\n    }\n    private static bool ConstantTimeEquals(string a, string b)\n    {\n        if (a.Length != b.Length)\n        {\n            return false;\n        }\n        int result = 0;\n        for (int i = 0; i < a.Length; i++)\n        {\n            result |= a[i] ^ b[i];\n        }\n        return result == 0;\n    }\n}\n```\n\n### Exemplo C# de implementação de geração de assinatura (.NET 5.0 e posterior):\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Para usar o método <code>Convert.ToHexString</code>, você precisa do .NET 5.0 e posterior.<p></p>Se você tiver o .NET 7.0 e posterior, também poderá usar o método <code>CryptographicOperations.FixedTimeEquals</code> em vez de <code>ConstantTimeEquals</code>.</p>\n</div>\n\n```csharp\n// For .NET 5.0 and later, you can use the more concise Convert.ToHexString method:\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\npublic static class XsollaWebhookSignature\n{\n    public static string ComputeSha1(string jsonBody, string secretKey)\n    {\n        string dataToSign = jsonBody + secretKey;\n        using var sha1 = SHA1.Create();\n        byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));\n        return Convert.ToHexString(hashBytes).ToLower();\n    }\n    public static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n    {\n        string computedSignature = ComputeSha1(jsonBody, secretKey);\n        string receivedSignatureLower = receivedSignature.ToLower();\n        // Use constant-time comparison to prevent timing attacks\n        return ConstantTimeEquals(computedSignature, receivedSignatureLower);\n    }\n    private static bool ConstantTimeEquals(string a, string b)\n    {\n        if (a.Length != b.Length)\n        {\n            return false;\n        }\n        int result = 0;\n        for (int i = 0; i < a.Length; i++)\n        {\n            result |= a[i] ^ b[i];\n        }\n        return result == 0;\n    }\n}\n```\n\n### Exemplo C# de implementação de geração de assinatura (.NET 7.0 e posterior):\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se você tiver o .NET 7.0 e posterior, poderá usar o método <code>CryptographicOperations.FixedTimeEquals</code>.</p>\n</div>\n\n```csharp\n// For .NET 7.0+, you can use the built-in CryptographicOperations.FixedTimeEquals:\nusing System.Security.Cryptography;\npublic static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n{\n    string computedSignature = ComputeSha1(jsonBody, secretKey);\n    byte[] computedBytes = Encoding.UTF8.GetBytes(computedSignature);\n    byte[] receivedBytes = Encoding.UTF8.GetBytes(receivedSignature.ToLower());\n    return CryptographicOperations.FixedTimeEquals(computedBytes, receivedBytes);\n}\n```\n\n### Exemplo C++ de implementação da geração de assinaturas:\n\n```c++\n#include <string>\n#include <sstream>\n#include <iomanip>\n#include <openssl/sha.h>\nclass XsollaWebhookSignature {\npublic:\n    static std::string computeSha1(const std::string& jsonBody, const std::string& secretKey) {\n        // Concatenation of the JSON from the request body and the project's secret key\n        std::string dataToSign = jsonBody + secretKey;\n        unsigned char digest[SHA_DIGEST_LENGTH];\n        // Create SHA1 hash\n        SHA1(reinterpret_cast<const unsigned char*>(dataToSign.c_str()),\n             dataToSign.length(), digest);\n        // Convert to lowercase hexadecimal string\n        std::ostringstream hexStream;\n        hexStream << std::hex << std::setfill('0');\n        for (int i = 0; i < SHA_DIGEST_LENGTH; ++i) {\n            hexStream << std::setw(2) << static_cast<unsigned int>(digest[i]);\n        }\n        return hexStream.str();\n    }\n    static bool verifySignature(const std::string& jsonBody, const std::string& secretKey, const std::string& receivedSignature) {\n        std::string computedSignature = computeSha1(jsonBody, secretKey);\n        // Timing-safe comparison\n        if (computedSignature.length() != receivedSignature.length()) {\n            return false;\n        }\n        volatile unsigned char result = 0;\n        for (size_t i = 0; i < computedSignature.length(); ++i) {\n            result |= (computedSignature[i] ^ receivedSignature[i]);\n        }\n        return result == 0;\n    }\n};\n```\n\n### Exemplo Go de implementação da geração de assinaturas:\n\n```go\npackage main\nimport (\n\t\"crypto/sha1\"\n    \"crypto/subtle\"\n\t\"encoding/hex\"\n\t\"strings\"\n)\ntype XsollaWebhookSignature struct{}\nfunc (x *XsollaWebhookSignature) ComputeSha1(jsonBody, secretKey string) string {\n\t// Concatenation of the JSON from the request body and the project's secret key\n\tdataToSign := jsonBody + secretKey\n\t// Create SHA1 hash\n\th := sha1.New()\n\th.Write([]byte(dataToSign))\n\tsignature := h.Sum(nil)\n\t// Convert to lowercase hexadecimal string\n\treturn strings.ToLower(hex.EncodeToString(signature))\n}\nfunc (x *XsollaWebhookSignature) VerifySignature(jsonBody, secretKey, receivedSignature string) bool {\n\tcomputedSignature := x.ComputeSha1(jsonBody, secretKey)\n\treceivedSignatureLower := strings.ToLower(receivedSignature)\n\t// Use constant time comparison to prevent timing attacks\n\treturn subtle.ConstantTimeCompare([]byte(computedSignature), []byte(receivedSignatureLower)) == 1\n}\n```\n\n### Exemplo PHP de implementação da geração de assinaturas:\n\n```php\n<?php\nclass XsollaWebhookSignature\n{\n    /**\n     * Compute SHA1 signature from webhook JSON body and secret key\n     *\n     * @param string $jsonBody The raw JSON body from webhook\n     * @param string $secretKey The project's secret key\n     * @return string The lowercase SHA1 signature\n     */\n    public static function computeSha1(string $jsonBody, string $secretKey): string\n    {\n        // Concatenation of the JSON from the request body and the project's secret key\n        $dataToSign = $jsonBody . $secretKey;\n        // Generate SHA1 signature\n        $signature = sha1($dataToSign);\n        return strtolower($signature);\n    }\n    /**\n     * Verify webhook signature using timing-safe comparison\n     *\n     * @param string $jsonBody The raw JSON body from webhook\n     * @param string $secretKey The project's secret key  \n     * @param string $receivedSignature The signature from authorization header\n     * @return bool True if signature is valid, false otherwise\n     */\n    public static function verifySignature(string $jsonBody, string $secretKey, string $receivedSignature): bool\n    {\n        $computedSignature = self::computeSha1($jsonBody, $secretKey);\n        // Use hash_equals for timing-safe comparison\n        return hash_equals($computedSignature, strtolower($receivedSignature));\n    }\n}\n?>\n```\n\n### Exemplo Node.js de implementação da geração de assinaturas:\n\n```js\nconst crypto = require('crypto');\nclass XsollaWebhookSignature {\n    // IMPORTANT: jsonBody must be the raw JSON string exactly as received from Xsolla\n    static computeSha1(jsonBody, secretKey) {\n        // Concatenation of the JSON from the request body and the project's secret key\n        const dataToSign = jsonBody + secretKey;\n        // Create SHA1 hash\n        const hash = crypto.createHash('sha1');\n        hash.update(dataToSign, 'utf8');\n        // Convert to lowercase hexadecimal string\n        return hash.digest('hex').toLowerCase();\n    }\n    static verifySignature(jsonBody, secretKey, receivedSignature) {\n        const computedSignature = this.computeSha1(jsonBody, secretKey);\n        const cleanReceivedSignature = receivedSignature.toLowerCase();\n        // Check if signatures have the same length before using timingSafeEqual\n        if (computedSignature.length !== cleanReceivedSignature.length) {\n            return false;\n        }\n        try {\n            return crypto.timingSafeEqual(\n                Buffer.from(computedSignature, 'hex'),\n                Buffer.from(cleanReceivedSignature, 'hex')\n            );\n        } catch (error) {\n            // Return false if there's any error (e.g., invalid hex characters)\n            return false;\n        }\n    }\n}\n```\n\n## Enviando respostas ao webhook\n\nPara confirmar o recebimento do webhook, o servidor deve retornar:\n* Código HTTP `200`, `201` ou `204` em caso de resposta bem-sucedida.\n* Código HTTP `400` com uma <a \n  href=\"/webhooks/overview/#section/Erros\">descrição do problema</a> se o \n  usuário especificado não for encontrado ou uma assinatura inválida for passada. \n  Seu manipulador de webhooks também pode retornar um código HTTP `5xx` em caso \n  de problemas temporários em seu servidor.\n\nSe o servidor Xsolla não recebeu uma resposta aos webhooks <a \nhref=\"/webhooks/operation/successful-order-payment\">Pagamento bem-sucedido do \npedido</a> e <a href=\"/webhooks/operation/order-cancellation\">Cancelamento do \npedido</a>, ou recebeu uma resposta com um código `5xx`, os webhooks serão \nreenviados de acordo com o seguinte agendamento:\n* 2 tentativas com intervalo de 5 minutos\n* 7 tentativas com intervalo de 15 minutos\n* 10 tentativas com intervalo de 60 minutos\n\nNo máximo são feitas 20 tentativas de enviar webhooks dentro de 12 horas a \npartir da primeira tentativa.\n\nA lógica de repetição para os webhooks <a \nhref=\"/webhooks/operation/payment\">Pagamento</a> e <a \nhref=\"/webhooks/operation/refund\">Reembolso</a> está descrita na página \ncorrespondente do webhook.\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>O pagamento ainda será reembolsado ao usuário se todas as seguintes condições forem atendidas:<ul><li>O reembolso foi iniciado pela Xsolla.</li><li>Em resposta a um webhook, um código de status <code>4xx</code> foi retornado, ou nenhuma resposta foi recebida após todas as tentativas repetidas, ou um código de status <code>5xx</code> foi retornado.</li></ul></p>\n</div>\n\nSe o servidor Xsolla não recebeu uma resposta ao webhook <a \nhref=\"/webhooks/operation/user-validation/\">Validação de usuário</a> ou recebeu \numa resposta com um código de `400` ou `5xx`, o webhook <a \nhref=\"/webhooks/operation/user-validation/\">Validação de usuário</a> não será \nreenviado. Nesse caso, o usuário vê um erro e os webhooks <a \nhref=\"/webhooks/operation/payment\">Pagamento</a> e <a href=\"/webhooks/operation\n/successful-order-payment\">Pagamento bem-sucedido do pedido</a> não são \nenviados.\n\n# Erros\n\nCódigos de erro para o código HTTP 400:\n\n<table>\n<thead>\n    <tr>\n        <th>Código</th>\n        <th>Mensagem</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>INVALID_USER</td>\n        <td>Usuário inválido</td>\n    </tr>\n    <tr>\n        <td>INVALID_PARAMETER</td>\n        <td>Parâmetro inválido</td>\n    </tr>\n    <tr>\n        <td>INVALID_SIGNATURE</td>\n        <td>Assinatura inválida</td>\n    </tr>\n    <tr>\n        <td>INCORRECT_AMOUNT</td>\n        <td>Quantia incorreta</td>\n    </tr>\n    <tr>\n        <td>INCORRECT_INVOICE</td>\n        <td>Invoice incorreto</td>\n    </tr>\n</tbody>\n</table>\n\n```\nHTTP/1.1 400 Bad Request\n{\n    \"error\":{\n        \"code\":\"INVALID_USER\",\n        \"message\":\"Invalid user\"\n    }\n}\n```\n\n# Melhores práticas\n\n## Segurança\n\nSiga essas diretrizes:\n\n* Use apenas HTTPS, com um certificado válido.\n* Sempre verifique a assinatura contra o corpo de solicitação bruto — sem \n  analisar ou recodificar os dados.\n* Não passe os dados sensíveis em URLs e evite expor dados técnicos em mensagens \n  de erro.\n* Isenta o ponto de extremidade do webhook do middleware \n  [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) — as \n  solicitações recebidas da Xsolla não incluem um token CSRF e serão rejeitadas \n  sem essa configuração.\n* Lista de permissões de [endereços IP da Xsolla](/pt/webhooks/section/webhook-listener).\n\n\n## Arquitetura do manipulador de webhooks\n\nSiga essas diretrizes:\n\n1. Aceite o pedido `POST` com o corpo e os cabeçalhos como estão, **sem \n   modificações**.\n2. [Verifique a assinatura do webhook](/pt/webhooks/section/webhook-listener/generation-of-signature) e retorne o código de status apropriado:\n   * `4xx` — se as assinaturas não coincidirem;\n   * `2xx` — em casos de sucesso. Recomendamos devolver `204 Sem Conteúdo` **antes** \n     de executar a lógica principal de negócios. `200 OK` também é aceitável.\n3. Passe a carga para um trabalho assíncrono ou adicione na fila de processamento \n   adicional.\n4. Implemente \n   [idempotência](https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning). Você deve garantir que seu sistema consiga lidar com o [recebimento do \n   mesmo webhook mais de uma vez](/pt/webhooks/section/webhook-listener/sending-responses-to-webhook).\n\n**Exemplo de fluxo:**\n\n```http\nHTTP POST /webhooks/xsolla\n  read raw_body, headers\n  if !verify_signature(raw_body, headers['authorization']):\n     return 400 {\"error\":{\"code\":\"INVALID_SIGNATURE\",\"message\":\"Invalid signature\"}}\n  enqueue(raw_body)\n  return 204  # or 200\n```\n\n## Idempotência e duplicados\n\nSiga essas diretrizes:\n\n* Use o ID de transação e/ou [o ID externo](/pt/dev-resources/faq/payments/#faq_payments_q_new_transaction_external_id), peça o ID \n  como chaves de idempotência.\n* Armazene IDs processadas e retorne o resultado anterior se receber uma \n  duplicata.\n* Evite reconcessões de itens, entradas duplicadas no banco de dados e cobranças \n  duplas.\n* Lembre-se de que, com a entrega sequencial, uma falha em um evento anterior \n  bloqueia o processamento de todos os seguintes.\n\n## Resiliência do sistema\n\nSiga essas diretrizes:\n\n* Use filas e processamento assíncrono para operações intensivas em recursos, \n  como chamadas de API de terceiros, faturamento e concessão de itens.\n* Defina intervalos de tempo no gerenciador de webhooks (1–3 s). Para falhas \n  transitórias, utilize o [mecanismo de retentativa Xsolla](/pt/webhooks/section/webhook-listener/sending-responses-to-webhook).\n* Não implemente retentativas no gerenciador de webhooks — a reentrega é gerida \n  pela Xsolla.\n* Registre os horários e status de processamento da entrega do webhook; Configure \n  alertas para picos de erros `5xx` e reentregas.\n* Propague IDs de correlação do webhook em seus logs e sistema de monitoramento \n  (APM).\n* Configure registro de erros e monitoramento. Para falhas não recuperáveis, mova \n  os trabalhos para uma fila de mensagens mortas (DLQ). Desenvolva uma ferramenta \n  segura para reproduzir eventos que seja protegida por um mecanismo de \n  idempotência.\n\n## Exemplos de implementação\n\n**Compra bem-sucedida — item concedido na primeira tentativa:**\n\n![Compra](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/purchase-v2.svg)\n\n**Entrega duplicada (tempo limite do parceiro na primeira tentativa):**\n\n![Tempo limite](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/timeout-v2.svg)\n\n**Reembolso:**\n\n![Reembolso](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/refund-v2.svg)\n\n**Falha de parceiro**:\n\n![Falha de parceiro](https://cdn.xsolla.net/developers/current/images/api_docs/webhook-schemes/server-error.svg)\n\n# Perguntas Frequentes (FAQ)\n\n## Preciso usar HTTPS para um protocolo de webhook?\n\nSim.\n\n## Posso receber webhooks do Payments em vários URLs?\n\nNão. Os webhooks do Payments utilizam o protocolo Server-to-Server e são \nenviados para um único URL especificado nas configurações do projeto na [Conta \nde Distribuidor](/pt/webhooks/section/set-up-webhooks-in-publisher-account). Se \nvocê quiser receber notificações no seu jogo, site ou aplicativo móvel, \nconfigure o envio de webhooks no seu servidor para transferir dados entre a \nXsolla e seu jogo. Você também pode testar webhooks no console de desenvolvedor.\n\n<div class=\"note\">\n<p><strong>Observação:</strong></p>\n<p>Se você estiver testando a integração localmente, as solicitações `POST` da Xsolla não alcançam URLs como <code>http://localhost:3000/my-webhook-endpoint</code>. Use serviços como o <a href=\"https://ngrok.com/\">Ngrok</a>, que permitem criar um túnel de acesso externo, possibilitando que você receba solicitações da Xsolla localmente. Por exemplo, você pode ler mais sobre isso na <a href=\"https://ngrok.com/docs/guides/share-localhost/webhooks#test-webhooks-locally\">documentação do ngrok</a>.</p>\n</div>\n\n## Por que a notificação da Xsolla não foi enviada para o URL do webhook?\n\nCertifique-se de que seu servidor de webhooks suporte os tipos `POST` e `GET` \nde solicitações HTTP.\n\n## Como faço para evitar IDs de transação duplicados durante o processamento?\n\nUse o ID externo — esse é o ID de transação no seu jogo, atribuído ao pedido no \nseu sistema. No lado da Xsolla, o ID externo é vinculado ao ID da transação, o \nque permite que a Xsolla evite pagamentos duplicados para a mesma transação. \nPara detalhes de configurações, consulte nossa [documentação](/pt/dev-resources/faq/payments/#faq_payments_q_new_transaction_external_id) para \ninformações mais detalhadas sobre a configuração.\n\n## Existem boas práticas para trabalhar com webhooks?\n\nNós recomendamos:\n\n* Retornar `204` ou `200` imediatamente após a verificação da assinatura.\n* Verificando a assinatura do webhook em relação ao corpo bruto da solicitação, \n  sem modificações.\n* Implementar a idempotência para todas as operações.\n* Registrar todos os eventos e configurar o monitoramento de erros.\n* Evitar passar dados sensíveis em URLs e não expor detalhes técnicos em \n  mensagens de erro.\n\nConsulte a seção de [Melhores Práticas](/pt/webhooks/section/best-practices) para \nmais informações.\n\n# Lista de verificação de integração de webhooks\n\nPara que os webhooks funcionem corretamente, certifique-se do seguinte antes da \npublicação:\n\n* Você está usando HTTPS.\n* A verificação de [assinaturas de webhooks](/pt/webhooks/section/webhook-listener/generation-of-signature) é implementada contra o corpo bruto da requisição, \n  sem modificações.\n* Uma resposta `204/200` é retornada assim que a assinatura é confirmada.\n* A idempotência está implementada para todas as operações.\n* O registro e o monitoramento de erros estão configurados.\n* Dados sensíveis não são passados em URLs, e dados técnicos não são expostos em \n  mensagens de erro.\n* As tentativas de webhook são suportadas de acordo com a [lógica de retentativa \n  da Xsolla ](/pt/webhooks/section/webhook-listener/sending-responses-to-webhook).\n* Toda a integração é documentada.\n\n# Lista de webhooks\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>O tipo de notificação é enviado no parâmetro <code>notification_type</code>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Webhook</th>\n        <th>Tipo de notificação</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><a href=\"/webhooks/operation/user-validation/\">Validação de usuário</a></td>\n        <td><code>user_validation</code></td>\n        <td>Enviado para verificar se um usuário existe no jogo.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/user-search/\">Pesquisa de usuário</a></td>\n        <td><code>user_search</code></td>\n        <td>Enviado para obter as informações do usuário com base no ID de usuário público.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/payment/\">Pagamento</a></td>\n        <td><code>payment</code></td>\n        <td>Enviado quando um usuário conclui um pagamento.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/refund/\">Reembolso</a></td>\n        <td><code>refund</code></td>\n        <td>Enviado quando um pagamento precisa ser cancelado por qualquer motivo.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/partial-refund/\">Reembolso parcial</a></td>\n        <td><code>partial_refund</code></td>\n        <td>Enviado quando um pagamento deve ser parcialmente cancelado por qualquer motivo.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/payment-declined/\">Pagamento recusado</a></td>\n        <td><code>ps_declined</code></td>\n        <td>Enviado quando um pagamento é recusado pelo sistema de pagamento.</td>\n    </tr>\n    <tr>\n        <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/afs-rejected-transaction/\">Transação rejeitada pelo AFS</a></td>\n        <td><code>afs_reject</code></td>\n        <td>Enviado quando uma transação é recusada durante uma verificação AFS.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/afs-rejected-blocklist/\">Lista de bloqueios atualizada do AFS</a></td>\n      <td><code>afs_black_list</code></td>\n      <td>Enviado quando a lista de bloqueio do AFS é atualizada.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/created-subscription/\">Assinatura criada</a></td>\n      <td><code>create_subscription</code></td>\n      <td>Enviado quando um usuário cria uma assinatura.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/updated-subscription/\">Assinatura atualizada</a></td>\n      <td><code>update_subscription</code></td>\n      <td>Enviado quando uma assinatura é renovada ou alterada.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/canceled-subscription/\">Assinatura cancelada</a></td>\n      <td><code>cancel_subscription</code></td>\n      <td>Enviado quando uma assinatura é cancelada.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/nonrenewing-subscription/\">Assinatura não renovável</a></td>\n      <td><code>non_renewal_subscription</code></td>\n      <td>Enviado quando o status é definido como não renovável.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/add-payment-account/\">Adicionar conta de pagamento</a></td>\n      <td><code>payment_account_add</code></td>\n      <td>Enviado quando um usuário adiciona ou salva uma conta de pagamento.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/remove-payment-account/\">Remover conta de pagamento</a></td>\n      <td><code>payment_account_remove</code></td>\n      <td>Enviado quando um usuário remove a conta de pagamento das contas salvas.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/user-validation-in-webshop\">Validação de usuário na Web Shop</a></td>\n      <td><code>-</code></td>\n      <td>Enviado de um site Web Shop para verificar se um usuário existe no jogo.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/personalized-partner-catalog\">Personalização de catálogo no lado do parceiro</a></td>\n      <td><code>partner_side_catalog</code></td>\n      <td>Enviado quando um usuário interage com a loja.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/successful-order-payment\">Pagamento bem-sucedido do pedido</a></td>\n      <td><code>order_paid</code></td>\n      <td>Enviado quando um pedido é pago.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/order-cancellation\">Cancelamento do pedido</a></td>\n      <td><code>order_canceled</code></td>\n      <td>Enviado quando um pedido é cancelado.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/pt/webhooks/operation/dispute\">Disputa</a></td>\n      <td><code>dispute</code></td>\n      <td>Enviado quando uma nova disputa é aberta.</td>\n    </tr>\n</tbody>\n</table>\n",
    "title": "Webhooks",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.xsolla.com/merchant/v2"
    }
  ],
  "tags": [
    {
      "name": "user-validation",
      "x-displayName": "Validação do usuário"
    },
    {
      "name": "payments",
      "x-displayName": "Pagamentos"
    },
    {
      "name": "game-services",
      "x-displayName": "Serviços de jogos"
    },
    {
      "name": "anti-fraud",
      "x-displayName": "Antifraude"
    },
    {
      "name": "subscriptions",
      "x-displayName": "Assinaturas"
    },
    {
      "name": "combined-webhooks",
      "x-displayName": "Webhooks combinados"
    },
    {
      "name": "separate-webhooks",
      "x-displayName": "Webhooks separados"
    },
    {
      "name": "personalization",
      "x-displayName": "Webhook de personalização"
    }
  ],
  "webhooks": {
    "add-payment-account": {
      "post": {
        "description": "A Xsolla envia um webhook com o tipo `payment_account_add` para o URL do webhook sempre que um usuário adiciona uma conta de pagamento ou salva uma conta de pagamento ao comprar algo dentro do jogo. Para receber este webhook, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.",
        "operationId": "add-payment-account",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_account": {
                    "description": "Detalhes da conta de pagamento (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/payment_account.country"
                      },
                      "id": {
                        "$ref": "#/components/schemas/payment_account.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/payment_account.name"
                      },
                      "payment_method": {
                        "$ref": "#/components/schemas/payment_account.payment_method"
                      },
                      "type": {
                        "$ref": "#/components/schemas/payment_account.type"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Adicionar conta de pagamento",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\":\"payment_account_add\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\",\n        \"zip\": \"12345\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"country\": \"US\",\n        \"type\": \"paypal\"\n    }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 255\ncontent-type:   application/json\nauthorization:  Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843\n\n{\n    \"notification_type\": \"payment_account_add\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\",\n        \"zip\": \"12345\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"country\": \"US\",\n        \"type\": \"paypal\"\n    }\n}"
          }
        ]
      }
    },
    "afs-rejected-blocklist": {
      "post": {
        "description": "Quando a lista de bloqueio do sistema antifraude é atualizada (um parâmetro é adicionado ou removido), a Xsolla envia um webhook com o tipo `afs_black_list` para o URL do webhook. A adição de parâmetros é executada automaticamente no lado Xsolla ou quando solicitado. A remoção de parâmetros só é possível mediante solicitação. Para receber este webhook, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.",
        "operationId": "afs-rejected-blocklist",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "event": {
                    "description": "Objeto com informações sobre o evento de lista de bloqueios do AFS.",
                    "properties": {
                      "action": {
                        "description": "Tipo de evento.",
                        "enum": [
                          "adding",
                          "removing"
                        ],
                        "type": "string"
                      },
                      "date_of_last_action": {
                        "description": "Hora do último evento de lista de bloqueio AFS no formato [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                        "type": "string"
                      },
                      "parameter": {
                        "description": "Nome do parâmetro pelo qual o evento ocorreu.",
                        "enum": [
                          "nick",
                          "email",
                          "ps_account",
                          "ip_address",
                          "card_issuer",
                          "phone"
                        ],
                        "type": "string",
                        "x-enumDescriptions": {
                          "card_issuer": "banco emissor do cartão de crédito do usuário",
                          "email": "endereço de e-mail do usuário",
                          "ip_address": "endereço IP do usuário",
                          "nick": "apelido do usuário",
                          "phone": "número de telefone do usuário",
                          "ps_account": "conta de faturamento do usuário"
                        }
                      },
                      "parameter_value": {
                        "description": "Valor do parâmetro pelo qual o evento ocorreu.",
                        "type": "string"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      },
                      "reason": {
                        "description": "Causa do evento.",
                        "enum": [
                          "chargeback",
                          "fraud_activity",
                          "suspicious_activity",
                          "ps_reported_fraud",
                          "linked_chargeback",
                          "partner_request",
                          "friendly_fraud",
                          "user_reported_fraud",
                          "linked_parameter",
                          "other_data_in_blacklist",
                          "by_afs_filters",
                          "wrongly_added",
                          "removed_by_cs_review",
                          "other_forgiveness_reason"
                        ],
                        "type": "string",
                        "x-enumDescriptions": {
                          "by_afs_filters": "Filtro AFS (adição)",
                          "chargeback": "estorno (adição)",
                          "fraud_activity": "fraude (adição)",
                          "friendly_fraud": "fraude amigável (adição)",
                          "linked_chargeback": "relação de estorno (adição)",
                          "linked_parameter": "parâmetro vinculado na lista de bloqueios AFS (adição)",
                          "other_data_in_blacklist": "outros parâmetros na lista de bloqueio AFS (adição)",
                          "other_forgiveness_reason": "outro motivo para remover (remoção)",
                          "partner_request": "quando solicitado (adição)",
                          "ps_reported_fraud": "notificação do sistema de pagamento sobre fraudes (adição)",
                          "removed_by_cs_review": "removido após reportar ao suporte técnico da Xsolla (remoção)",
                          "suspicious_activity": "atividade suspeita (adição)",
                          "user_reported_fraud": "relatório de usuário sobre fraude (adição)",
                          "wrongly_added": "adicionado por engano (remoção)"
                        }
                      },
                      "transaction_id": {
                        "description": "ID de transação associada ao parâmetro pelo qual o evento ocorreu.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  }
                },
                "required": [
                  "notification_type",
                  "event"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Atualização da lista de bloqueio antifraude",
        "tags": [
          "anti-fraud"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6' \\\n-d '{\n  \"event\": {\n    \"action\": \"adding\",\n    \"date_of_last_action\": \"2020-11-27T10:09:05+03:00\",\n    \"parameter\": \"email\",\n    \"parameter_value\": \"email@example.com\",\n    \"reason\": \"ps_reported_fraud\",\n    \"transaction_id\": \"111111111\",\n    \"project_id\": \"123456\"\n  },\n  \"notification_type\": \"afs_black_list\"\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 233\nauthorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6\n\n{\n  \"event\": {\n    \"action\": \"adding\",\n    \"date_of_last_action\": \"2020-11-27T10:09:05+03:00\",\n    \"parameter\": \"email\",\n    \"parameter_value\": \"email@example.com\",\n    \"reason\": \"ps_reported_fraud\",\n    \"transaction_id\": \"111111111\",\n    \"project_id\": \"123456\"\n  },\n  \"notification_type\": \"afs_black_list\"\n}"
          }
        ]
      }
    },
    "afs-rejected-transaction": {
      "post": {
        "description": "Quando uma transação é recusada durante uma verificação do sistema antifraude, \na Xsolla envia detalhes da transação no webhook com o tipo `afs_reject` para o \nURL do webhook. Para receber este webhook, entre em contato com seu Gerente de \nSucesso do Cliente ou envie um e-mail para <a \nhref=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.\n\nAo salvar o URL do webhook na Conta de Distribuidor, você pode conceder \npermissões para receber informações detalhadas nos webhooks. Para fazer isso, \ndefina a seguinte opção como ativa na Conta de Distribuidor na seção <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Project \nsettings &gt; Webhooks &gt; Advanced settings</a>.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se você se registrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou antes, você encontrará as opções na seção <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Project settings &gt; Webhooks &gt; Testing &gt; Payments &gt; Advanced settings</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Opção</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Exibir informações sobre transações pelos métodos de pagamento salvos</td>\n        <td><p>As informações são passadas nos seguintes parâmetros personalizados do webhook:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — o método de pagamento guardado não foi utilizado</li><li><code>1</code> — o método de pagamento foi salvo ao efetuar o pagamento atual</li><li><code>2</code> — o método de pagamento previamente guardado é utilizado</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — pagamento único</li><li><code>2</code> — pagamento recorrente</li></ul></li></ul></td>\n    </tr>\n</tbody>\n</table>\n",
        "operationId": "afs-rejected-transaction",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "refund_details": {
                    "description": "Detalhes do reembolso (objeto).",
                    "properties": {
                      "author": {
                        "description": "Iniciador de reembolso. O valor do campo é passado de acordo com a tabela:\n\n<table>\n    <thead>\n    <tr>\n        <th>Iniciador de reembolso</th>\n        <th>Valor do campo</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Jogo (via API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (reembolso automático).</td>\n        <td>E-mail do usuário</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "ID do código.\n\n<table>\n    <thead>\n    <tr>\n        <th>Código</th>\n        <th>Motivo</th>\n        <th>Descrição</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td><nt>Cancellation by the user request / the game request</nt></td>\n        <td>Cancelamento iniciado a partir da Publisher Account.</td>\n    </tr>\n    <tr>\n        <td>2</td>\n        <td><nt>Chargeback</nt></td>\n        <td>Estorno de transação solicitado.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td><nt>Integration error</nt></td>\n        <td>Problemas na integração entre a Xsolla e o jogo.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>4</td>\n        <td><nt>Potential fraud – AFS reject</nt></td>\n        <td>Transação rejeitada porque o sistema Xsolla Anti-fraud detectou uma fraude em potencial.</td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td><nt>Test payment</nt></td>\n        <td>Transação de teste seguida de cancelamento.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>6</td>\n        <td><nt>User invoice expired</nt></td>\n        <td>Invoice vencido (utilizado no modelo pós-pago).</td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td><nt>Fraud notification from PS</nt></td>\n        <td>Pagamento rejeitado porque o sistema de pagamento detectou uma fraude em potencial.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>8</td>\n        <td><nt>Cancellation by the PS request</nt></td>\n        <td>Cancelamento solicitado pelo sistema de pagamento.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td><nt>Cancellation by the user request</nt></td>\n        <td>O usuário não ficou satisfeito com o jogo ou a compra por qualquer motivo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td><nt>Cancellation by the game request</nt></td>\n        <td>Cancelamento solicitado pelo jogo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>11</td>\n        <td><nt>Account holder called to report fraud</nt></td>\n        <td>O proprietário da conta afirma que não fez a transação.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>12</td>\n        <td><nt>Potential fraud – friendly fraud</nt></td>\n        <td>O portador legítimo do cartão contestou a transação.</td>\n    </tr>\n    <tr>\n        <td>13</td>\n        <td><nt>Duplicate</nt></td>\n        <td>Duplique a transação para o mesmo invoice.</td>\n    </tr>\n    <tr>\n        <td>21</td>\n        <td><nt>Potential fraud – BIN attack</nt></td>\n        <td>Cartões roubados de um ou vários BINs em um lote. Um indicador-chave é uma sequência de tentativas compartilhando uma faixa de BIN em um curto intervalo de tempo, frequentemente com números de cartão enumerados.</td>\n    </tr>\n    <tr>\n        <td>22</td>\n        <td><nt>Potential fraud – monetization fraud</nt></td>\n        <td>Cartão roubado usado para comprar itens negociáveis para fins de revenda.</td>\n    </tr>\n    <tr>\n        <td>23</td>\n        <td><nt>Potential fraud – low-scale card fraud</nt></td>\n        <td>Cartões roubados de um ou vários BINs. Não tão difundido e coordenado quanto o ataque BIN (código de reembolso <code>21</code>).</td>\n    </tr>\n    <tr>\n        <td>24</td>\n        <td><nt>Potential fraud – regional price abuse</nt></td>\n        <td>Preços regionais ou abuso de revenda de chaves. Os usuários exploraram preços regionais — tipicamente por meio de indicações de localização ou de métodos de pagamento falsas — para adquirir itens baratos para revenda em mercados mais caros.</td>\n    </tr>\n    <tr>\n        <td>25</td>\n        <td><nt>Potential fraud – partner or PS exploit</nt></td>\n        <td>Roubo de credenciais e tomada de conta — abuso de uma conta ou integração do lado do parceiro ou do lado do sistema de pagamentos, em vez de abuso direto de cartão.</td>\n    </tr>\n    <tr>\n        <td>26</td>\n        <td><nt>Potential fraud – not definable</nt></td>\n        <td>Fraude confirmada, mas não há evidências suficientes para determinar o tipo exato de ataque.</td>\n    </tr>\n    <tr>\n        <td>27</td>\n        <td><nt>Fraud notification from PS – linked transactions</nt></td>\n        <td>A transação em si não foi especificada no relatório de fraude do sistema de pagamento, mas está conectada (ex.: através de um cartão ou dispositivo compartilhado) a transações que foram reembolsadas com base em fraudes.</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "integer"
                      },
                      "reason": {
                        "description": "Motivo do reembolso.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Detalhes da transação (objeto).",
                    "properties": {
                      "agreement": {
                        "description": "ID do contrato.",
                        "type": "integer"
                      },
                      "dry_run": {
                        "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "ID externo de transação.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID de transação.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "description": "Telefone do usuário.",
                        "type": "string"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "O sistema antifraude rejeitou a transação",
        "tags": [
          "anti-fraud"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n  \"notification_type\": \"afs_reject\",\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"phone\": \"18777976552\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"name\": \"John Smith\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": 1,\n    \"external_id\": 1,\n    \"dry_run\": 1,\n    \"agreement\": 1\n  },\n  \"refund_details\": {\n    \"code\": 4,\n    \"reason\": \"Potential fraud\"\n  }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n  'notification_type' => 'afs_reject',\n  'settings' => array(\n    'project_id' => 18404,\n    'merchant_id' => 2340\n  ),\n  'user' => array(\n    'ip' => '127.0.0.1',\n    'phone' => '18777976552',\n    'email' => 'email@example.com',\n    'id' => '1234567',\n    'country' => 'US'\n  ),\n  'transaction' => array(\n    'id' => 87654321,\n    'payment_method' => 1380,\n    'dry_run' => 1\n  ),\n  'refund_details' => array(\n    'code' => 4,\n    'reason' => 'Potential fraud'\n  )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1220\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n  \"notification_type\": \"afs_reject\",\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"phone\": \"18777976552\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"name\": \"John Smith\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": 1,\n    \"external_id\": 1,\n    \"dry_run\": 1,\n    \"agreement\": 1\n  },\n  \"refund_details\": {\n    \"code\": 4,\n    \"reason\": \"Potential fraud\"\n  }\n}"
          }
        ]
      }
    },
    "canceled-subscription": {
      "post": {
        "description": "Quando uma assinatura é cancelada, a Xsolla envia um webhook com o tipo `cancel_subscription` para o URL do webhook.",
        "operationId": "canceled-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Dados da assinatura (objeto).",
                    "properties": {
                      "date_create": {
                        "$ref": "#/components/schemas/subscription.date_create"
                      },
                      "date_end": {
                        "$ref": "#/components/schemas/subscription.date_end"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "product_id": {
                        "$ref": "#/components/schemas/subscription.product_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      },
                      "tags": {
                        "$ref": "#/components/schemas/subscription.tags"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Assinatura cancelada",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"cancel_subscription\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_end\": \"2015-01-22T19:25:25+04:00\"\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'cancel_subscription',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'name' => 'John Smith'\n    ),\n    'subscription' => array(\n        'plan_id' => 'b5dac9c8',\n        'subscription_id' => '10',\n        'product_id' => 'Demo Product',\n        'date_create' => '2014-09-22T19:25:25+04:00',\n        'date_end' => '2015-01-22T19:25:25+04:00',\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"cancel_subscription\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\":{\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"b5dac9c8\",\n        \"subscription_id\": \"10\",\n        \"product_id\": \"Demo Product\",\n        \"date_create\": \"2014-09-22T19:25:25+04:00\",\n        \"date_end\": \"2015-01-22T19:25:25+04:00\"\n    }\n}"
          }
        ]
      }
    },
    "created-subscription": {
      "post": {
        "description": "Quando um usuário cria uma assinatura, a Xsolla envia um webhook com o tipo `create_subscription` para o URL do webhook.",
        "operationId": "created-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Seus parâmetros personalizados.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Dados da assinatura (objeto).",
                    "properties": {
                      "date_create": {
                        "$ref": "#/components/schemas/subscription.date_create"
                      },
                      "date_next_charge": {
                        "$ref": "#/components/schemas/subscription.date_next_charge"
                      },
                      "is_gift": {
                        "$ref": "#/components/schemas/subscription.is_gift"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "product_id": {
                        "$ref": "#/components/schemas/subscription.product_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      },
                      "tags": {
                        "$ref": "#/components/schemas/subscription.tags"
                      },
                      "trial": {
                        "description": "Período experimental (objeto).",
                        "properties": {
                          "type": {
                            "description": "Tipo de período de avaliação: day.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Período de avaliação.",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Assinatura criada",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"create_subscription\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n            \"trial\": {\n                    \"value\": 90,\n                    \"type\": \"day\"\n                },\n            \"is_gift\": true\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'create_subscription',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'name' => 'John Smith'\n    ),\n    'subscription' => array(\n        'plan_id' => 'b5dac9c8',\n        'subscription_id' => '10',\n        'product_id' => 'Demo Product',\n        'date_create' => '2014-09-22T19:25:25+04:00',\n        'date_next_charge' => '2015-01-22T19:25:25+04:00',\n        'trial' =>  array(\n                'value' =>  90,\n                'type' =>  'day'\n            ),\n        'is_gift' => true,\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nHost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"create_subscription\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"b5dac9c8\",\n        \"subscription_id\": \"10\",\n        \"product_id\": \"Demo Product\",\n        \"date_create\": \"2014-09-22T19:25:25+04:00\",\n        \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n        \"trial\": {\n                \"value\": 90,\n                \"type\": \"day\"\n            },\n        \"is_gift\": true\n    }\n}"
          }
        ]
      }
    },
    "dispute": {
      "post": {
        "description": "Quando uma nova disputa é aberta ou quando seu status é alterado, a Xsolla envia um webhook com o tipo `dispute` ao URL do webhook. Para receber esse webhook, contate seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.",
        "operationId": "dispute",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "action": {
                    "description": "Tipo de ação.",
                    "enum": [
                      "adding",
                      "updating"
                    ],
                    "type": "string",
                    "x-enumDescriptions": {
                      "adding": "Uma nova disputa foi aberta.",
                      "updating": "O status de uma disputa foi alterado."
                    }
                  },
                  "dispute": {
                    "description": "Objeto com informações sobre a disputa.",
                    "properties": {
                      "incoming_date": {
                        "$ref": "#/components/schemas/dispute-date"
                      },
                      "reason": {
                        "$ref": "#/components/schemas/dispute-reason"
                      },
                      "status": {
                        "$ref": "#/components/schemas/dispute-status"
                      },
                      "type": {
                        "$ref": "#/components/schemas/dispute-type"
                      }
                    },
                    "required": [
                      "incoming_date",
                      "reason",
                      "type",
                      "status"
                    ],
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Objeto com informações sobre as configurações de projeto personalizadas.",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "required": [
                      "project_id",
                      "merchant_id"
                    ],
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Objeto com informações sobre a transação.",
                    "properties": {
                      "country_code": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "date_create": {
                        "$ref": "#/components/schemas/date-create"
                      },
                      "external_id": {
                        "$ref": "#/components/schemas/external-id"
                      },
                      "id": {
                        "$ref": "#/components/schemas/transaction-id"
                      },
                      "payment_method": {
                        "$ref": "#/components/schemas/dispute-payment-method"
                      },
                      "total": {
                        "description": "Objeto com informações sobre a quantia da transação.",
                        "properties": {
                          "amount": {
                            "$ref": "#/components/schemas/transaction-total-amount"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "required": [
                          "amount",
                          "currency"
                        ],
                        "type": "object"
                      }
                    },
                    "required": [
                      "id",
                      "date_create",
                      "total",
                      "payment_method",
                      "country_code"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Objeto com informações sobre um usuário.",
                    "properties": {
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "action",
                  "transaction",
                  "settings",
                  "user",
                  "dispute"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Disputa",
        "tags": [
          "anti-fraud"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6' \\\n-d '{\n  \"notification_type\": \"dispute\",\n  \"action\": \"adding\",\n  \"transaction\": {\n    \"id\": 123456789,\n    \"date_create\": \"2023-08-24T10:21:00+04:00\",\n    \"total\": {\n      \"amount\": 1,\n      \"currency\": \"EUR\"\n    },\n    \"payment_method\": \"credit_debit_card\"\n  },\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"id\": \"1234567\",\n    \"email\": \"email@example.com\",\n    \"country_code\": \"US\"\n  },\n  \"dispute\": {\n    \"incoming_date\": \"2024-01-25T01:02:03+04:00\",\n    \"reason\": \"not_as_described\",\n    \"type\": \"retrieval\",\n    \"status\": \"new\"\n  }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-Type: application/json\ncontent-Length: 578\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n  \"notification_type\": \"dispute\",\n  \"action\": \"adding\",\n  \"transaction\": {\n    \"id\": 123456789,\n    \"date_create\": \"2023-08-24T10:21:00+04:00\",\n    \"total\": {\n      \"amount\": 1,\n      \"currency\": \"EUR\"\n    },\n    \"payment_method\": \"credit_debit_card\"\n  },\n  \"settings\": {\n    \"project_id\": 18404,\n    \"merchant_id\": 2340\n  },\n  \"user\": {\n    \"id\": \"1234567\",\n    \"email\": \"email@example.com\",\n    \"country_code\": \"US\"\n  },\n  \"dispute\": {\n    \"incoming_date\": \"2024-01-25T01:02:03+04:00\",\n    \"reason\": \"not_as_described\",\n    \"type\": \"retrieval\",\n    \"status\": \"new\"\n  }\n}"
          }
        ]
      }
    },
    "nonrenewing-subscription": {
      "post": {
        "description": "Quando o status de uma assinatura é definido como não renovável, a Xsolla envia um webhook com o tipo `non_renewal_subscription` para o URL do webhook. Para receber este webhook, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.",
        "operationId": "nonrenewing-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "required": [
                      "project_id"
                    ],
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Dados da assinatura (objeto).",
                    "properties": {
                      "amount": {
                        "description": "Preço em moeda real.",
                        "format": "float",
                        "type": "number"
                      },
                      "currency": {
                        "$ref": "#/components/schemas/currency"
                      },
                      "date_create": {
                        "$ref": "#/components/schemas/subscription.date_create"
                      },
                      "date_next_charge": {
                        "description": "Próxima data de cobrança. Esta é a data em que um próximo pagamento era esperado antes que a assinatura do usuário fosse definida como \"não renovável\". Data e hora de acordo com o [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                        "type": "string"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Assinatura não renovável",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"non_renewal_subscription\",\n        \"settings\": {\n          \"project_id\": 12345,\n          \"merchant_id\": 1234\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"email\": \"email@example.com\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"a1bcd2e3\",\n            \"subscription_id\": \"10\",\n            \"date_create\": \"2014-12-22T15:25:25+04:00\",\n            \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 0.03\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'non_renewal_subscription',\n    'settings' => array(\n      'project_id' => 12345,\n      'merchant_id' => 1234\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'email' => 'email@example.com'\n    ),\n    'subscription' => array(\n        'plan_id' => 'a1bcd2e3',\n        'subscription_id' => '10',\n        'date_create' => '2014-12-22T15:25:25+04:00',\n        'date_next_charge' => '2015-01-22T19:25:25+04:00',\n        'currency' => 'USD',\n        'amount' => 0.03\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"non_renewal_subscription\",\n    \"settings\": {\n      \"project_id\": 12345,\n      \"merchant_id\": 1234\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"email\": \"email@example.com\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"a1bcd2e3\",\n        \"subscription_id\": \"10\",\n        \"date_create\": \"2014-12-22T15:25:25+04:00\",\n        \"date_next_charge\": \"2015-01-22T19:25:25+04:00\",\n        \"currency\": \"USD\",\n        \"amount\": 0.03\n    }\n}"
          }
        ]
      }
    },
    "order-cancellation": {
      "post": {
        "description": "A Xsolla envia o webhook <code>order_canceled</code> para o URL especificado \nquando o pagamento é cancelado pelo usuário, parceiro ou automaticamente. O \nwebhook contém informações sobre itens devolvidos, dados de pagamento e \ndetalhes do pedido cancelado.\n\nO webhook não é enviado se o pagamento não for bem-sucedido. Por exemplo:\n* o formulário da interface de pagamento foi aberto, mas o usuário não pagou pelo \n  pedido.\n* o formulário da interface de pagamento foi aberto, mas houve erros durante o \n  pagamento.\n\nO tempo recomendado para processamento do webhook é de dentro de 3 segundos.\n",
        "operationId": "order-cancellation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "billing": {
                    "description": "Detalhes da transação e do pagamento.",
                    "properties": {
                      "notification_type": {
                        "$ref": "#/components/schemas/notification_type"
                      },
                      "payment_details": {
                        "description": "Detalhes de pagamento (objeto).",
                        "properties": {
                          "country_wht": {
                            "$ref": "#/components/schemas/country_whc"
                          },
                          "direct_wht": {
                            "description": "Imposto retido direto na fonte.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Alíquota de retenção direta na fonte.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "payment": {
                            "description": "Valor pago pelo usuário (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_fee": {
                            "description": "Taxa do sistema de pagamento.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_sum": {
                            "description": "Valor debitado do sistema de pagamento.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout": {
                            "description": "Dados de pagamento (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout_currency_rate": {
                            "description": "Taxa de câmbio entre as moedas de pagamento e remuneração.",
                            "type": "string"
                          },
                          "repatriation_commission": {
                            "description": "Objeto com dados sobre os custos de repatriamento, imposto à Xsolla por terceiros.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "sales_tax": {
                            "description": "Imposto sobre vendas (objeto; apenas EUA e Canadá).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Alíquota de imposto sobre vendas.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "user_acquisition_fee": {
                            "description": "Valor total das taxas de aquisição de usuários deduzidas para as compras feitas por meio de redes afiliadas e influenciadores (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Proporção de taxa de aquisição de usuários, %.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "vat": {
                            "description": "Dados do IVA (objeto; apenas na UE).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Taxa de IVA.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_balance_sum": {
                            "description": "Valor debitado do saldo Xsolla.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_fee": {
                            "description": "Taxa Xsolla (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "purchase": {
                        "description": "Dados da compra (objeto).",
                        "properties": {
                          "subscription": {
                            "description": "Dados da assinatura (objeto).",
                            "properties": {
                              "amount": {
                                "$ref": "#/components/schemas/amount-float"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "date_create": {
                                "$ref": "#/components/schemas/subscription.date_create"
                              },
                              "plan_id": {
                                "$ref": "#/components/schemas/subscription.plan_id"
                              },
                              "subscription_id": {
                                "$ref": "#/components/schemas/subscription.subscription_id"
                              },
                              "tags": {
                                "$ref": "#/components/schemas/subscription.tags"
                              }
                            },
                            "type": "object"
                          },
                          "total": {
                            "description": "Preço total de compra (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Valor total do pagamento.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "required": [
                          "total"
                        ],
                        "type": "object"
                      },
                      "refund_details": {
                        "description": "Detalhes do reembolso (objeto).",
                        "properties": {
                          "author": {
                            "description": "Iniciador de reembolso. O valor do campo é passado de acordo com a tabela:\n\n<table>\n    <thead>\n    <tr>\n        <th>Iniciador de reembolso</th>\n        <th>Valor do campo</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Jogo (via API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (reembolso automático).</td>\n        <td>E-mail do usuário</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                            "type": "string"
                          },
                          "code": {
                            "description": "ID do código.",
                            "type": "integer"
                          },
                          "reason": {
                            "description": "Motivo do reembolso.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "settings": {
                        "description": "Configurações personalizadas do projeto (objeto).",
                        "properties": {
                          "merchant_id": {
                            "$ref": "#/components/schemas/settings.merchant_id"
                          },
                          "project_id": {
                            "$ref": "#/components/schemas/settings.project_id"
                          }
                        },
                        "type": "object"
                      },
                      "transaction": {
                        "description": "Detalhes da transação (objeto).",
                        "properties": {
                          "agreement": {
                            "description": "ID do contrato.",
                            "type": "integer"
                          },
                          "dry_run": {
                            "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                            "type": "integer"
                          },
                          "external_id": {
                            "description": "ID externo de transação.",
                            "type": "string"
                          },
                          "id": {
                            "description": "ID de transação.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "payment_method_order_id": {
                            "description": "ID de pagamento no sistema de pagamento.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "notification_type",
                      "transaction",
                      "payment_details"
                    ],
                    "type": "object"
                  },
                  "custom_parameters": {
                    "description": "Informações adicionais.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Lista de itens comprados pelo usuário.\n\nThe set of parameters included in the array depends on the webhook version. \nVersion 2 includes additional parameters: `is_free`, `is_bonus`, and \n`is_bundle_content`. To switch the version, pass its number in the `version` \nparameter in the [Update webhook version](/pt/api/catalog/common-webhooks/update-webhook-version/) API call.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "versão = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Se `true`, o item é um bônus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Se `true`, o item pertence a um conjunto.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Se `true`, o item é gratuito.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "versão = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Informações sobre o pedido.",
                    "properties": {
                      "amount": {
                        "description": "O custo total de um carrinho com base na moeda escolhida.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Comentário do usuário ao pedido.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Cupons aplicados. Se o cupom não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um cupom aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Moeda de ordem. A moeda virtual usa o SKU e a moeda real usa um código [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) de três letras.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Identificador exclusivo do pedido do usuário no lado da Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "ID da fatura de pagamentos em moeda real. Pagamentos em moedas virtuais ou itens grátis têm um valor `null`.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Modalidade de pagamento. `default` é usado para pagamentos reais; `sandbox` para pagamentos de testes.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Plataforma de pagamento. O valor `xsolla` é usado para pagamentos via Xsolla. Para outros pagamentos, o valor correspondente ao nome da plataforma de publicação de jogos é usado: `playstation_network`, `xbox_live`, `pc_standalone`, `nintendo_shop`, `google_play`, `app_store_ios`, `android_standalone`, `ios_standalone`, `android_other`, `ios_other`, `pc_other`.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Códigos promocionais aplicados. Se o código promocional não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um código promocional aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Status do pedido.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Informações do usuário.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "Endereço de e-mail do usuário.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "ID de usuário.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Retorne para indicar o processamento bem-sucedido."
          },
          "400": {
            "description": "Retorne em caso de erro nas informações fornecidas (por exemplo, um parâmetro obrigatório ausente, falha na autorização, etc.)."
          }
        },
        "summary": "Cancelamento do pedido (com detalhes de pagamento e transação)",
        "tags": [
          "combined-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"refund\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\": {\n              \"subscription\": {\n                  \"plan_id\": \"b5dac9c8\",\n                  \"subscription_id\": \"10\",\n                  \"date_create\": \"2014-09-22T19:25:25+04:00\",\n                  \"currency\": \"USD\",\n                  \"amount\": 9.99\n              },\n              \"total\":{\n                  \"currency\": \"USD\",\n                  \"amount\": 200\n              }\n          },\n      \"transaction\": {\n              \"id\": 1,\n              \"external_id\": 1,\n              \"dry_run\": 1,\n              \"agreement\": 1\n          },\n      \"refund_details\": {\n              \"code\": 4,\n              \"reason\": \"Potential fraud\"\n          },\n      \"payment_details\": {\n              \"sales_tax\": {\n                  \"currency\": \"USD\",\n                  \"amount\": 0\n              },\n              \"direct_wht\": {\n                  \"currency\": \"USD\",\n                  \"amount\": 0.70\n              },\n              \"xsolla_fee\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"10\"\n              },\n              \"payout\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"200\"\n              },\n              \"payment_method_fee\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"20\"\n              },\n              \"payment\": {\n                  \"currency\": \"USD\",\n                  \"amount\": \"230\"\n              },\n              \"repatriation_commission\": {\n                  \"currency\": \"USD\",\n                  \"amount\": 10\n              }\n          }\n    }\n}"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"refund\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\": {\n          \"subscription\": {\n              \"plan_id\": \"b5dac9c8\",\n              \"subscription_id\": \"10\",\n              \"date_create\": \"2014-09-22T19:25:25+04:00\",\n              \"currency\": \"USD\",\n              \"amount\": 9.99\n          },\n          \"total\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          }\n      },\n      \"transaction\": {\n          \"id\": 1,\n          \"external_id\": 1,\n          \"dry_run\": 1,\n          \"agreement\": 1\n      },\n      \"refund_details\": {\n          \"code\": 4,\n          \"reason\": \"Potential fraud\"\n      },\n      \"payment_details\": {\n          \"sales_tax\": {\n              \"currency\": \"USD\",\n              \"amount\": 0\n          },\n          \"direct_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 0.70\n          },\n          \"xsolla_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": \"10\"\n          },\n          \"payout\": {\n              \"currency\": \"USD\",\n              \"amount\": \"200\"\n          },\n          \"payment_method_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": \"20\"\n          },\n          \"payment\": {\n              \"currency\": \"USD\",\n              \"amount\": \"230\"\n          },\n          \"repatriation_commission\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          }\n        }\n      }\n    }"
          }
        ]
      }
    },
    "order-cancellation-separate": {
      "post": {
        "description": "A Xsolla envia o webhook <code>order_canceled</code> para o URL especificado \nquando o pagamento é cancelado pelo usuário, parceiro ou automaticamente. O \nwebhook contém informações sobre itens devolvidos e detalhes do pedido \ncancelado.\n\nO webhook não é enviado se o pagamento não for bem-sucedido. Por exemplo:\n* o formulário da interface de pagamento foi aberto, mas o usuário não pagou pelo \n  pedido.\n* o formulário da interface de pagamento foi aberto, mas houve erros durante o \n  pagamento.\n\nO tempo recomendado para processamento do webhook é de dentro de 3 segundos.\n",
        "operationId": "order-cancellation-separate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Informações adicionais.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Lista de itens comprados pelo usuário.\n\nThe set of parameters included in the array depends on the webhook version. \nVersion 2 includes additional parameters: `is_free`, `is_bonus`, and \n`is_bundle_content`. To switch the version, pass its number in the `version` \nparameter in the [Update webhook version](/pt/api/catalog/common-webhooks/update-webhook-version/) API call.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "versão = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Se `true`, o item é um bônus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Se `true`, o item pertence a um conjunto.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Se `true`, o item é gratuito.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "description": "Promoções aplicadas. Se uma promoção não foi aplicada,  é passada uma matriz vazia no parâmetro.",
                              "items": {
                                "properties": {
                                  "amount_with_discount": {
                                    "description": "Custo total dos itens com desconto.",
                                    "type": "string"
                                  },
                                  "amount_without_discount": {
                                    "description": "Custo total dos itens sem desconto.",
                                    "type": "string"
                                  },
                                  "sequence": {
                                    "description": "Ordem de aplicação de promoções.",
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "type": "array"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "versão = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Informações sobre o pedido.",
                    "properties": {
                      "amount": {
                        "description": "O custo total de um carrinho com base na moeda escolhida.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Comentário do usuário ao pedido.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Cupons aplicados. Se o cupom não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um cupom aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Moeda de ordem. A moeda virtual usa o SKU e a moeda real usa um código [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) de três letras.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Identificador exclusivo do pedido do usuário no lado da Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "ID da fatura de pagamentos em moeda real. Pagamentos em moedas virtuais ou itens grátis têm um valor `null`.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Modalidade de pagamento. `default` é usado para pagamentos reais; `sandbox` para pagamentos de testes.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Plataforma de pagamento. O valor `xsolla` é usado para pagamentos via Xsolla. Para outros pagamentos, o valor correspondente ao nome da plataforma de publicação de jogos é usado: `playstation_network`, `xbox_live`, `pc_standalone`, `nintendo_shop`, `google_play`, `app_store_ios`, `android_standalone`, `ios_standalone`, `android_other`, `ios_other`, `pc_other`.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Códigos promocionais aplicados. Se o código promocional não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um código promocional aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Status do pedido.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Informações do usuário.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "Endereço de e-mail do usuário.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "ID de usuário.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Retorne para indicar o processamento bem-sucedido."
          },
          "400": {
            "description": "Retorne em caso de erro nas informações fornecidas (por exemplo, um parâmetro obrigatório ausente, falha na autorização, etc.)."
          }
        },
        "summary": "Cancelamento do pedido (sem detalhes de pagamento e transação)",
        "tags": [
          "separate-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    }\n\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_canceled\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\": {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"email@example.com\",\n      \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "partial-refund": {
      "post": {
        "description": "Quando um reembolso parcial é feito, a Xsolla envia detalhes da transação \ncancelada em um webhook com o tipo `partial_refund` para o URL do webhook. \nSaiba mais sobre o processo de reembolso parcial nestas [instruções](/pt/doc/pay-station/features/refund/#pay_station_features_refund_how_it_works_partial_refund_flow).\n\nAo salvar o URL do webhook na Conta de Distribuidor, você pode conceder \npermissões para receber informações detalhadas nos webhooks. Para fazer isso, \ndefina a seguinte opção como ativa na Conta de Distribuidor na seção <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Project \nsettings &gt; Webhooks &gt; Advanced settings</a>.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se você se registrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou antes, você encontrará as opções na seção <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Project settings &gt; Webhooks &gt; Testing &gt; Payments &gt; Advanced settings</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Opção</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Exibir informações sobre transações pelos métodos de pagamento salvos</td>\n        <td><p>As informações são passadas nos seguintes parâmetros personalizados do webhook:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — o método de pagamento guardado não foi utilizado</li><li><code>1</code> — o método de pagamento foi salvo ao efetuar o pagamento atual</li><li><code>2</code> — o método de pagamento previamente guardado é utilizado</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — pagamento único</li><li><code>2</code> — pagamento recorrente</li></ul></li></ul></td>\n    </tr>\n</tbody>\n</table>\n\nCódigos de reembolso:\n\n<table>\n    <thead>\n    <tr>\n        <th>Código</th>\n        <th>Motivo</th>\n        <th>Descrição</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td><nt>Cancellation by the user request / the game request</nt></td>\n        <td>Cancelamento iniciado a partir da Publisher Account.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td><nt>Integration error</nt></td>\n        <td>Problemas na integração entre a Xsolla e o jogo.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td><nt>Test payment</nt></td>\n        <td>Transação de teste seguida de cancelamento.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td><nt>Fraud notification from PS</nt></td>\n        <td>Pagamento rejeitado porque o sistema de pagamento detectou uma fraude em potencial.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td><nt>Cancellation by the user request</nt></td>\n        <td>O usuário não ficou satisfeito com o jogo ou a compra por qualquer motivo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td><nt>Cancellation by the game request</nt></td>\n        <td>Cancelamento solicitado pelo jogo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    </tbody>\n</table>\n",
        "operationId": "partial-refund",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Seus parâmetros personalizados.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_details": {
                    "description": "Detalhes de pagamento (objeto).",
                    "properties": {
                      "direct_wht": {
                        "description": "Imposto retido direto na fonte.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Alíquota de retenção direta na fonte.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "payment": {
                        "description": "Valor pago pelo usuário (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_fee": {
                        "description": "Taxa do sistema de pagamento.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_sum": {
                        "description": "Valor debitado do sistema de pagamento.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout": {
                        "description": "Dados de pagamento (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout_currency_rate": {
                        "description": "Taxa de câmbio entre as moedas de pagamento e remuneração.",
                        "type": "string"
                      },
                      "repatriation_commission": {
                        "description": "Objeto com dados sobre os custos de repatriamento, imposto à Xsolla por terceiros.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "sales_tax": {
                        "description": "Imposto sobre vendas (objeto; apenas EUA e Canadá).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Alíquota de imposto sobre vendas.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "vat": {
                        "description": "Dados do IVA (objeto; apenas na UE).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Taxa de IVA.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_balance_sum": {
                        "description": "Valor debitado do saldo Xsolla.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_fee": {
                        "description": "Taxa Xsolla (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "purchase": {
                    "description": "Dados da compra (objeto).",
                    "properties": {
                      "checkout": {
                        "description": "Dados do checkout (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Valor da compra.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "total": {
                        "description": "Preço total de compra (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia do reembolso parcial.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "total"
                    ],
                    "type": "object"
                  },
                  "refund_details": {
                    "description": "Detalhes do reembolso (objeto).",
                    "properties": {
                      "author": {
                        "description": "Iniciador de reembolso. O valor do campo é passado de acordo com a tabela:\n\n<table>\n    <thead>\n    <tr>\n        <th>Iniciador de reembolso</th>\n        <th>Valor do campo</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Jogo (via API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (reembolso automático).</td>\n        <td>E-mail do usuário</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "ID do código.",
                        "type": "integer"
                      },
                      "date": {
                        "description": "Data do reembolso.",
                        "type": "string"
                      },
                      "reason": {
                        "description": "Motivo do reembolso.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Detalhes da transação (objeto).",
                    "properties": {
                      "agreement": {
                        "description": "ID do contrato.",
                        "type": "integer"
                      },
                      "date": {
                        "description": "Data da transação.",
                        "type": "string"
                      },
                      "dry_run": {
                        "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "ID externo de transação.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID de transação.",
                        "format": "int64",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Reembolso parcial",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n        \"notification_type\": \"partial_refund\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"purchase\": {\n            \"checkout\": {\n                \"currency\": \"USD\",\n                \"amount\": 50\n            },\n            \"total\":{\n                \"currency\": \"USD\",\n                \"amount\": 200\n            }\n        },\n        \"user\": {\n            \"ip\": \"127.0.0.1\",\n            \"phone\": \"18777976552\",\n            \"email\": \"email@example.com\",\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\",\n            \"country\": \"US\"\n        },\n        \"transaction\": {\n            \"id\": 1,\n            \"external_id\": 1,\n            \"dry_run\": 1,\n            \"agreement\": 1,\n            \"date\": \"2022-03-01 10:53:15\"\n        },\n        \"refund_details\": {\n            \"author\": \"email@example.com\",\n            \"date\": \"2022-03-01 10:56:48\"\n        },\n        \"payment_details\": {\n            \"sales_tax\": {\n                \"currency\": \"USD\",\n                \"amount\": 0\n            },\n            \"direct_wht\": {\n                \"currency\": \"USD\",\n                \"amount\": 0.70\n            },\n            \"xsolla_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"10\"\n            },\n            \"payout\": {\n                \"currency\": \"USD\",\n                \"amount\": \"200\"\n            },\n            \"payment_method_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"20\"\n            },\n            \"payment\": {\n                \"currency\": \"USD\",\n                \"amount\": \"230\"\n            },\n            \"repatriation_commission\": {\n                \"currency\": \"USD\",\n                \"amount\": 10\n            }\n        }\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'partial_refund',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'purchase' => array(\n        'total' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        )\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email' => 'email@example.com',\n        'id' => '1234567',\n        'country' => 'US'\n    ),\n    'transaction' => array(\n        'id' => 87654321,\n        'payment_date' => '2014-09-23T19:25:25+04:00',\n        'payment_method' => 1380,\n        'dry_run' => 1,\n        'date' => '2022-03-31 10:53:15'\n    ),\n    'refund_details' => array(\n            'author' => 'email@example.com',\n            'date' => '2022-03-01 10:56:48'\n    ),\n    'payment_details' => array(\n        'payment' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        ),\n        'vat' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'sales_tax' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'direct_wht' => array(\n            'currency' => 'USD',\n            'amount' => 70\n        ),\n        'payout_currency_rate' => 1,\n        'payout' => array(\n            'currency' => 'USD',\n            'amount' => 9.49\n        ),\n        'xsolla_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.19\n        ),\n        'payment_method_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.31\n        ),\n        'repatriation_commission' => array(\n            'currency' => 'USD',\n            'amount' => 0.2\n        )\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1220\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n    \"notification_type\": \"partial_refund\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\": {\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"dry_run\": 1,\n        \"agreement\": 1,\n        \"date\": \"2022-03-31 10:53:15\"\n    },\n    \"refund_details\": {\n        \"author\": \"email@example.com\",\n        \"date\": \"2022-03-31 10:56:48\"\n    },\n    \"payment_details\": {\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0.70\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"10\"\n        },\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": \"200\"\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"20\"\n        },\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": \"230\"\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    }\n}"
          }
        ]
      }
    },
    "payment": {
      "post": {
        "description": "Quando um usuário completa um pagamento, a Xsolla envia os dados do pagamento \nem um webhook com o tipo `payment` ao URL do webhook.\n\nOs códigos de resposta esperados estão descritos na seção <b>Responses</b>, mas \nvocê pode usar outros códigos de resposta também:\n\n<table>\n    <thead>\n    <tr>\n        <th>Código de resposta</th>\n        <th>Descrição</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Uma resposta bem-sucedida.</td>\n    </tr>\n    <tr>\n        <td><code>4xx</code></td>\n        <td>Ocorreu um erro. Por exemplo, se o usuário especificado não foi encontrado ou uma assinatura inválida foi passada.</td>\n    </tr>\n    <tr>\n        <td><code>5xx</code></td>\n        <td>Erro temporário de servidor. Quando essa resposta é recebida, a Xsolla tentará reenviar o webhook automaticamente, gradualmente aumentando o intervalo entre as tentativas até que o ouvinte confirme o recebimento. A quantidade máxima de tentativas é de 12 reenvios ao longo de um período de 48 horas.</td>\n    </tr>\n    </tbody>\n</table>\n\nQuando você salva o URL do webhook na <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Conta de \nDistribuidor</a>, você também pode configurar o recebimento de informações \nadicionais nos webhooks.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se você se registrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou antes, você encontrará as opções no seu projeto na seção <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Settings &gt; Webhooks &gt; Testing &gt; Payments &gt; Advanced settings</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Opção</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Exibir informações sobre a conta de pagamento salva</td>\n        <td>As informações sobre a forma de pagamento salva são passadas no objeto personalizado <code>payment_account</code>.</td>\n    </tr>\n    <tr>\n        <td>Exibir informações sobre transações pelos métodos de pagamento salvos</td>\n        <td><p>As informações são passadas nos seguintes parâmetros personalizados do webhook:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — o método de pagamento guardado não foi utilizado</li><li><code>1</code> — o método de pagamento foi salvo ao efetuar o pagamento atual</li><li><code>2</code> — o método de pagamento previamente guardado é utilizado</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — pagamento único</li><li><code>2</code> — pagamento recorrente</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td>Adicionar objeto de ordem ao webhook</td>\n        <td>As informações sobre o pedido são passadas no objeto  <code>order</code> do webhook <a href=\"/pt/webhooks/operation/payment/\">Pagamento</a>.</td>\n    </tr>\n    <tr>\n        <td>Enviar apenas os parâmetros de usuário necessários sem dados confidenciais</td>\n        <td><p>Somente as seguintes informações sobre o usuário são passadas no webhook:</p><ul><li>ID</li><li>país</li></ul></td>\n    </tr>\n    <tr>\n        <td>Exibir BIN e sufixo do cartão</td>\n        <td><p>As seguintes informações sobre o número do cartão bancário são passadas no webhook:</p><ul><li>os primeiros 6 dígitos no parâmetro <code>card_bin</code></li><li>os últimos 4 dígitos no <code>card_suffix</code></li></ul></td>\n    </tr>\n    <tr>\n        <td>Exibir marca do cartão</td>\n        <td>A bandeira do cartão utilizado para efetuar o pagamento. Por exemplo, Mastercard ou Visa.</td>\n    </tr>\n    <tr>\n        <td>Mostrar o WHC do país e as taxas de aquisição de usuários.</td>\n        <td>Os objetos <code>payment_details.​country_wht</code> e <code>payment_details.​user_acquisition_fee</code> serão passados no webhook. Essa opção fica ativada por padrão.</td>\n    </tr>\n    <tr>\n        <td>Enviar informações da 3DS.</td>\n        <td>O objeto <code>cards</code> contendo dados sobre a verificação 3-D Secure será passado no webhook.</td>\n    </tr>\n</tbody>\n</table>\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>O conjunto de campos enviados em um webhook depende de:<ul><li>as configurações avançadas definidas na Conta de Distribuidor</li><li>as configurações personalizadas definidas no lado da Xsolla</li></ul></p><p>Se tiver alguma dúvida, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n",
        "operationId": "payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Seus parâmetros personalizados.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_details": {
                    "description": "Detalhes de pagamento (objeto).",
                    "properties": {
                      "country_wht": {
                        "$ref": "#/components/schemas/country_whc"
                      },
                      "direct_wht": {
                        "description": "Imposto retido direto na fonte.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Alíquota de retenção direta na fonte.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "payment": {
                        "description": "Valor pago pelo usuário (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_fee": {
                        "description": "Taxa do sistema de pagamento.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_sum": {
                        "description": "Valor debitado do sistema de pagamento.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout": {
                        "description": "Dados de pagamento (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout_currency_rate": {
                        "description": "Taxa de câmbio entre as moedas de pagamento e remuneração.",
                        "type": "string"
                      },
                      "repatriation_commission": {
                        "description": "Objeto com dados sobre os custos de repatriamento, imposto à Xsolla por terceiros.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "sales_tax": {
                        "description": "Imposto sobre vendas (objeto; apenas EUA e Canadá).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Alíquota de imposto sobre vendas.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "user_acquisition_fee": {
                        "description": "Valor total das taxas de aquisição de usuários deduzidas para as compras feitas por meio de redes afiliadas e influenciadores (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Proporção de taxa de aquisição de usuários, %.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "vat": {
                        "description": "Dados do IVA (objeto; apenas na UE).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Taxa de IVA.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_balance_sum": {
                        "description": "Valor debitado do saldo Xsolla.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_fee": {
                        "description": "Taxa Xsolla (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "purchase": {
                    "description": "Dados da compra (objeto).",
                    "properties": {
                      "checkout": {
                        "description": "Dados do checkout (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Valor da compra.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "coupon": {
                        "description": "Dados do cupom (objeto; se um cupom foi usado ao criar a assinatura).",
                        "properties": {
                          "campaign_code": {
                            "description": "Código da campanha.",
                            "type": "string"
                          },
                          "coupon_code": {
                            "description": "Código de cupom.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "gift": {
                        "description": "Detalhes do presente (objeto).",
                        "properties": {
                          "giver_id": {
                            "description": "ID do doador.",
                            "type": "string"
                          },
                          "hide_giver_from_receiver": {
                            "description": "Se a identidade do doador deve ou não ser ocultada do recipiente.",
                            "type": "string"
                          },
                          "message": {
                            "description": "Mensagem do doador.",
                            "type": "string"
                          },
                          "receiver_email": {
                            "description": "E-mail do recipiente do presente.",
                            "type": "string"
                          },
                          "receiver_id": {
                            "description": "ID do recipiente do presente.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "order": {
                        "$ref": "#/components/schemas/order",
                        "properties": {
                          "id": {
                            "description": "ID do pedido.",
                            "type": "integer"
                          },
                          "lineitems": {
                            "description": "Matriz de parâmetros que contém informações sobre os itens.",
                            "items": {
                              "properties": {
                                "price": {
                                  "description": "Objeto que contém informações sobre um preço de item.",
                                  "properties": {
                                    "amount": {
                                      "description": "Preço total do item na moeda selecionada.",
                                      "format": "float",
                                      "type": "number"
                                    },
                                    "currency": {
                                      "description": "Moeda do preço do item.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                },
                                "quantity": {
                                  "description": "Quantidade do item.",
                                  "type": "integer"
                                },
                                "sku": {
                                  "description": "SKU do item.",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          }
                        }
                      },
                      "promotions": {
                        "description": "Promoções aplicadas a esta transação.",
                        "items": {
                          "properties": {
                            "id": {
                              "description": "ID da promoção.",
                              "type": "integer"
                            },
                            "technical_name": {
                              "description": "Nome técnico da promoção.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "subscription": {
                        "description": "Dados da assinatura (objeto).",
                        "properties": {
                          "amount": {
                            "$ref": "#/components/schemas/amount-float"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "date_create": {
                            "$ref": "#/components/schemas/subscription.date_create"
                          },
                          "date_next_charge": {
                            "description": "Data da próxima cobrança. Data e hora de acordo com o [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                            "type": "string"
                          },
                          "plan_id": {
                            "$ref": "#/components/schemas/subscription.plan_id"
                          },
                          "product_id": {
                            "description": "ID do produto (se enviado no token de acesso).",
                            "type": "string"
                          },
                          "subscription_id": {
                            "$ref": "#/components/schemas/subscription.subscription_id"
                          },
                          "tags": {
                            "$ref": "#/components/schemas/subscription.tags"
                          }
                        },
                        "type": "object"
                      },
                      "total": {
                        "description": "Preço total de compra (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Valor total do pagamento.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "total"
                    ],
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Detalhes da transação (objeto).",
                    "properties": {
                      "agreement": {
                        "description": "ID do contrato.",
                        "type": "integer"
                      },
                      "dry_run": {
                        "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                        "type": "integer"
                      },
                      "external_id": {
                        "$ref": "#/components/schemas/external-id"
                      },
                      "id": {
                        "description": "ID de transação.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "payment_date": {
                        "description": "Data de pagamento.",
                        "type": "string"
                      },
                      "payment_method": {
                        "description": "ID de método de pagamento.",
                        "type": "integer"
                      },
                      "payment_method_name": {
                        "description": "Nome do método de pagamento.",
                        "type": "string"
                      },
                      "payment_method_order_id": {
                        "description": "ID de pagamento no sistema de pagamento.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400-payment"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Pagamento",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n    \"notification_type\": \"payment\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\": {\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 9.99\n        },\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"promotions\": [{\n            \"technical_name\": \"Demo Promotion\",\n            \"id\": 853\n        }],\n        \"coupon\": {\n            \"coupon_code\": \"ICvj45S4FUOyy\",\n            \"campaign_code\": \"1507\"\n        },\n        \"order\": {\n          \"id\": 1234\n          \"lineitems\": [\n          {\n            \"sku\": \"com.xsolla.item_1\",\n            \"quantity\": 1,\n            \"price\": {\n              \"currency\": \"EUR\",\n              \"amount\": 6.5\n              }\n          }\n          ]\n          }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n        \"payment_method\": 1,\n        \"payment_method_name\": \"PayPal\",\n        \"payment_method_order_id\": 1234567890123456789,\n        \"dry_run\": 1,\n        \"agreement\": 1\n    },\n    \"payment_details\": {\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": 230\n        },\n        \"vat\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 20\n        },\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"payout_currency_rate\": \"1\",\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"country_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 10\n        },\n        \"user_acquisition_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 1\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 20\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    },\n    \"custom_parameters\": {\n        \"parameter1\": \"value1\",\n        \"parameter2\": \"value2\"\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'payment',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'purchase' => array(\n        'total' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        )\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email' => 'email@example.com',\n        'id' => '1234567',\n        'country' => 'US'\n    ),\n    'transaction' => array(\n        'id' => 87654321,\n        'payment_date' => '2014-09-23T19:25:25+04:00',\n        'payment_method' => 1380,\n        'payment_method_name' => 'PayPal'\n        'payment_method_order_id' => 1234567890123456789,\n        'dry_run' => 1\n    ),\n    'payment_details' => array(\n        'payment' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        ),\n        'vat' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'sales_tax' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'direct_wht' => array(\n            'currency' => 'USD',\n            'amount' => 70\n        ),\n        'payout_currency_rate' => '1',\n        'country_wht ' => array(\n            'currency' => 'USD',\n            'amount' => 2,\n            'percent' => 10\n        ),\n        'user_acquisition_fee' => array(\n            'currency' => 'USD',\n            'amount' => 2,\n            'percent' => 1\n        ),\n        'payout' => array(\n            'currency' => 'USD',\n            'amount' => 9.49\n        ),\n        'xsolla_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.19\n        ),\n        'payment_method_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.31\n        ),\n        'repatriation_commission' => array(\n            'currency' => 'USD',\n            'amount' => 0.2\n        )\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1721\nauthorization: Signature 34553d151e656110c656696c919f9a10e05de542\n\n{\n    \"notification_type\": \"payment\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\":{\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 9.99\n        },\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"promotions\": [{\n            \"technical_name\": \"Demo Promotion\",\n            \"id\": 853\n        }],\n        \"coupon\": {\n            \"coupon_code\": \"ICvj45S4FUOyy\",\n            \"campaign_code\": \"1507\"\n        },\n        \"order\": {\n          \"id\": 1234\n          \"lineitems\": [\n          {\n            \"sku\": \"com.xsolla.item_1\",\n            \"quantity\": 1,\n            \"price\": {\n              \"currency\": \"EUR\",\n              \"amount\": 6.5\n              }\n          }\n          ]\n          }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n        \"payment_method\": 1,\n        \"payment_method_name\": \"PayPal\"\n        \"payment_method_order_id\": 1234567890123456789,\n        \"dry_run\": 1,\n        \"agreement\": 1\n    },\n    \"payment_details\": {\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": 230\n        },\n        \"vat\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 20\n        },\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0,\n            \"percent\": 0\n        },\n        \"payout_currency_rate\": \"1\",\n        \"country_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 10\n        },\n        \"user_acquisition_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 2,\n            \"percent\": 1\n        },\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": 20\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    },\n    \"custom_parameters\": {\n        \"parameter1\": \"value1\",\n        \"parameter2\": \"value2\"\n    }\n}"
          }
        ]
      }
    },
    "payment-declined": {
      "post": {
        "description": "Se uma transação for recusada por um sistema de pagamento, a Xsolla enviará os \ndados da transação em um webhook do tipo `ps_declined` para o URL configurado \ndo webhook. O webhook é enviado durante o estágio de autorização ou \nprocessamento de pagamento. Nesse caso, o webhook \n[payment](/pt/webhooks/operation/payment/)\\ [order_paid](/pt/webhooks/operation/successful-order-payment/) não é enviado.\n\nRazões típicas para recusas do sistema de pagamento:\n\n* A autorização do cartão falhou (por exemplo, o sistema de pagamento não pôde \n  concluir o processo de autorização devido a um erro técnico ou nenhuma resposta \n  do banco) ou foi recusada (por exemplo, o banco respondeu, mas recusou a \n  transação devido a fundos insuficientes ou daods inválidos do cartão).\n* A verificação do 3-D Secure falhou, não foi concluída, ou a confirmação do \n  usuário expirou.\n* O processador ou banco adquirente está temporariamente indisponível ou retorna \n  uma recusa definitiva devido a um erro irreversível, tal como uma conta \n  encerrada ou um número de cartão inválido. É preciso resolver o problema \n  subjacente antes de tentar novamente, ou a transação não será bem-sucedida.\n\nNão deve ser confundido com:\n\n* Rejeições antifraude, que são relatadas por meio do webhook \n  [afs_reject](https://developers.xsolla.com/pt/webhooks/operation/afs-rejected-transaction/).\n* Reembolsos e reembolsos parciais após um pagamento bem-sucedido, que são \n  relatados por meio do \n  [reembolso](https://developers.xsolla.com/pt/webhooks/operation/refund/) e dos \n  webhooks [partial_refund](https://developers.xsolla.com/pt/webhooks/operation/partial-refund/).\n\n<div class=\"note\">\n<p><strong>Nota</strong></p>\n<p>Para receber o webhook <code>ps_declined</code>, entre em contato com o Gerente de sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n",
        "operationId": "payment-declined",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "refund_details": {
                    "description": "Detalhes do reembolso (objeto).",
                    "properties": {
                      "author": {
                        "description": "Iniciador de reembolso. O valor do campo é passado de acordo com a tabela:\n\n<table>\n    <thead>\n    <tr>\n        <th>Iniciador de reembolso</th>\n        <th>Valor do campo</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Jogo (via API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (reembolso automático).</td>\n        <td>E-mail do usuário</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "ID do código.\n\n<table>\n    <thead>\n    <tr>\n        <th>Código</th>\n        <th>Motivo</th>\n        <th>Descrição</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td><nt>Cancellation by the user request / the game request</nt></td>\n        <td>Cancelamento iniciado a partir da Publisher Account.</td>\n    </tr>\n    <tr>\n        <td>2</td>\n        <td><nt>Chargeback</nt></td>\n        <td>Estorno de transação solicitado.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td><nt>Integration error</nt></td>\n        <td>Problemas na integração entre a Xsolla e o jogo.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>4</td>\n        <td><nt>Potential fraud – AFS reject</nt></td>\n        <td>Transação rejeitada porque o sistema Xsolla Anti-fraud detectou uma fraude em potencial.</td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td><nt>Test payment</nt></td>\n        <td>Transação de teste seguida de cancelamento.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>6</td>\n        <td><nt>User invoice expired</nt></td>\n        <td>Invoice vencido (utilizado no modelo pós-pago).</td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td><nt>Fraud notification from PS</nt></td>\n        <td>Pagamento rejeitado porque o sistema de pagamento detectou uma fraude em potencial.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>8</td>\n        <td><nt>Cancellation by the PS request</nt></td>\n        <td>Cancelamento solicitado pelo sistema de pagamento.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td><nt>Cancellation by the user request</nt></td>\n        <td>O usuário não ficou satisfeito com o jogo ou a compra por qualquer motivo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td><nt>Cancellation by the game request</nt></td>\n        <td>Cancelamento solicitado pelo jogo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>11</td>\n        <td><nt>Account holder called to report fraud</nt></td>\n        <td>O proprietário da conta afirma que não fez a transação.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>12</td>\n        <td><nt>Potential fraud – friendly fraud</nt></td>\n        <td>O portador legítimo do cartão contestou a transação.</td>\n    </tr>\n    <tr>\n        <td>13</td>\n        <td><nt>Duplicate</nt></td>\n        <td>Duplique a transação para o mesmo invoice.</td>\n    </tr>\n    <tr>\n        <td>21</td>\n        <td><nt>Potential fraud – BIN attack</nt></td>\n        <td>Cartões roubados de um ou vários BINs em um lote. Um indicador-chave é uma sequência de tentativas compartilhando uma faixa de BIN em um curto intervalo de tempo, frequentemente com números de cartão enumerados.</td>\n    </tr>\n    <tr>\n        <td>22</td>\n        <td><nt>Potential fraud – monetization fraud</nt></td>\n        <td>Cartão roubado usado para comprar itens negociáveis para fins de revenda.</td>\n    </tr>\n    <tr>\n        <td>23</td>\n        <td><nt>Potential fraud – low-scale card fraud</nt></td>\n        <td>Cartões roubados de um ou vários BINs. Não tão difundido e coordenado quanto o ataque BIN (código de reembolso <code>21</code>).</td>\n    </tr>\n    <tr>\n        <td>24</td>\n        <td><nt>Potential fraud – regional price abuse</nt></td>\n        <td>Preços regionais ou abuso de revenda de chaves. Os usuários exploraram preços regionais — tipicamente por meio de indicações de localização ou de métodos de pagamento falsas — para adquirir itens baratos para revenda em mercados mais caros.</td>\n    </tr>\n    <tr>\n        <td>25</td>\n        <td><nt>Potential fraud – partner or PS exploit</nt></td>\n        <td>Roubo de credenciais e tomada de conta — abuso de uma conta ou integração do lado do parceiro ou do lado do sistema de pagamentos, em vez de abuso direto de cartão.</td>\n    </tr>\n    <tr>\n        <td>26</td>\n        <td><nt>Potential fraud – not definable</nt></td>\n        <td>Fraude confirmada, mas não há evidências suficientes para determinar o tipo exato de ataque.</td>\n    </tr>\n    <tr>\n        <td>27</td>\n        <td><nt>Fraud notification from PS – linked transactions</nt></td>\n        <td>A transação em si não foi especificada no relatório de fraude do sistema de pagamento, mas está conectada (ex.: através de um cartão ou dispositivo compartilhado) a transações que foram reembolsadas com base em fraudes.</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "integer"
                      },
                      "reason": {
                        "description": "Motivo do reembolso.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Detalhes da transação (objeto).",
                    "properties": {
                      "dry_run": {
                        "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "ID externo de transação.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID de transação.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "payment_method": {
                        "description": "ID de método de pagamento.",
                        "type": "integer"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400-payment"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Pagamento recusado",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'Accept: application/json' \\\n-H 'Content-Type: application/json' \\\n-H 'Authorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898' \\\n-d '{\n  \"notification_type\": \"ps_declined\",\n  \"settings\": {\n    \"project_id\": \"18404\",\n    \"merchant_id\": \"2340\"\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": \"1\",\n    \"dry_run\": \"1\",\n    \"payment_method\": \"1\"\n  },\n  \"refund_details\": {\n    \"author\": \"support@xsolla.com\",\n    \"code\": \"8\",\n    \"reason\": \"Cancellation by the PS request\",\n    \"reason_detail\": \"Insufficient funds\"\n  }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n  'notification_type' => 'ps_declined',\n  'settings' => array(\n    'project_id' => '18404',\n    'merchant_id' => '2340',\n  ),\n  'user' => array(\n    'ip' => '127.0.0.1',\n    'email' => 'email@example.com',\n    'id' => '1234567',\n    'country' => 'US',\n  ),\n  'transaction' => array(\n    'id' => '1',\n    'dry_run' => '1',\n    'payment_method' => '1',\n  ),\n  'refund_details' => array(\n    'author' => 'support@xsolla.com',\n    'code' => '8',\n    'reason' => 'Cancellation by the PS request',\n    'reason_detail' => 'Insufficient funds',\n  ),\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 338\nauthorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898\n\n{\n  \"notification_type\": \"ps_declined\",\n  \"settings\": {\n    \"project_id\": \"18404\",\n    \"merchant_id\": \"2340\"\n  },\n  \"user\": {\n    \"ip\": \"127.0.0.1\",\n    \"email\": \"email@example.com\",\n    \"id\": \"1234567\",\n    \"country\": \"US\"\n  },\n  \"transaction\": {\n    \"id\": \"1\",\n    \"dry_run\": \"1\",\n    \"payment_method\": \"1\"\n  },\n  \"refund_details\": {\n    \"author\": \"support@xsolla.com\",\n    \"code\": \"8\",\n    \"reason\": \"Cancellation by the PS request\",\n    \"reason_detail\": \"Insufficient funds\"\n  }\n}"
          }
        ]
      }
    },
    "personalized-partner-catalog": {
      "post": {
        "description": "A Xsolla enviará um webhook <code>partner_side_catalog</code> que contém os \nparâmetros do usuário e do projeto para o URL do webhook quando um usuário \ninteragir com a loja.\n\nRetorna uma lista de <code>item_id</code> ou SKU de itens que estão disponíveis \npara o usuário em resposta. Nesse caso, você também pode incluir informações de \nque um determinado usuário pode comprar um determinado produto um número \nespecificado de vezes. Esse recurso permite controlar o número e o tipo de \nprodutos que o usuário pode adicionar ao carrinho e comprar.\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>Ao processar o webhook, considere as seguintes limitações:<ul><li>O webhook deve ser processado em menos de 3 segundos. Se o processamento demorar mais, as chamadas de API <a href=\"/pt/api/catalog/virtual-items-currency-catalog/get-virtual-items\">obter lista de itens virtuais</a>, <a href=\"/api/catalog/payment-server-side/admin-create-payment-token\">criar token de pagamento</a> e <a href=\"/api/catalog/payment-client-side/create-order\">criar pedido</a> retornarão um erro.</li><li>O tamanho da resposta do webhook não pode exceder 64 KB. Respostas que excedam esse limite não são processadas — o usuário verá um catálogo vazio e não poderá comprar itens. Para alterar o tamanho máximo da resposta, contate seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</li></ul></p>\n</div>\n",
        "operationId": "personalized-partner-catalog",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "currency": {
                        "$ref": "#/components/schemas/currency"
                      },
                      "locale": {
                        "$ref": "#/components/schemas/locale"
                      },
                      "user_id": {
                        "description": "ID de Usuário. Se o usuário não estiver autenticado, o valor `null` será enviado.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "user_id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "date_from": "2024-08-11T23:59:59+08:00",
                    "date_until": "2024-08-12T23:59:59+08:00",
                    "quantity": 0,
                    "sku": "com.xsolla.boots_1"
                  },
                  {
                    "date_from": "2024-08-11T23:59:59+08:00",
                    "date_until": "2024-08-12T23:59:59+08:00",
                    "quantity": null,
                    "sku": "com.xsolla.sword_1"
                  },
                  {
                    "quantity": 1,
                    "sku": "com.xsolla.helmet_1"
                  },
                  {
                    "content": [
                      {
                        "description": "Description of custom content item",
                        "image_url": "https://example.com/content_image.png",
                        "name": "Custom content item",
                        "quantity": 5
                      }
                    ],
                    "description": "Custom description",
                    "image_url": "https://example.com/image.png",
                    "json_attributes": {
                      "purchased": 0,
                      "type": "lootbox"
                    },
                    "name": "Custom name",
                    "quantity": null,
                    "sku": "com.xsolla.custom_item_1"
                  },
                  {
                    "available": 7,
                    "sku": "com.xsolla.limited_item_1",
                    "total": 10
                  }
                ],
                "schema": {
                  "items": {
                    "anyOf": [
                      {
                        "oneOf": [
                          {
                            "properties": {
                              "available": {
                                "$ref": "#/components/schemas/available"
                              },
                              "total": {
                                "$ref": "#/components/schemas/total"
                              }
                            },
                            "title": "available"
                          },
                          {
                            "properties": {
                              "quantity": {
                                "$ref": "#/components/schemas/quantity"
                              }
                            },
                            "title": "quantity"
                          }
                        ],
                        "properties": {
                          "content": {
                            "$ref": "#/components/schemas/bundle_content"
                          },
                          "date_from": {
                            "$ref": "#/components/schemas/date_from"
                          },
                          "date_until": {
                            "$ref": "#/components/schemas/date_until"
                          },
                          "description": {
                            "$ref": "#/components/schemas/description"
                          },
                          "image_url": {
                            "$ref": "#/components/schemas/image_url"
                          },
                          "json_attributes": {
                            "$ref": "#/components/schemas/json_attributes"
                          },
                          "name": {
                            "$ref": "#/components/schemas/name"
                          },
                          "sku": {
                            "$ref": "#/components/schemas/sku"
                          }
                        },
                        "required": [
                          "sku"
                        ],
                        "title": "sku"
                      },
                      {
                        "oneOf": [
                          {
                            "properties": {
                              "available": {
                                "$ref": "#/components/schemas/available"
                              },
                              "total": {
                                "$ref": "#/components/schemas/total"
                              }
                            },
                            "title": "available"
                          },
                          {
                            "properties": {
                              "quantity": {
                                "$ref": "#/components/schemas/quantity"
                              }
                            },
                            "title": "quantity"
                          }
                        ],
                        "properties": {
                          "content": {
                            "$ref": "#/components/schemas/bundle_content"
                          },
                          "date_from": {
                            "$ref": "#/components/schemas/date_from"
                          },
                          "date_until": {
                            "$ref": "#/components/schemas/date_until"
                          },
                          "description": {
                            "$ref": "#/components/schemas/description"
                          },
                          "image_url": {
                            "$ref": "#/components/schemas/image_url"
                          },
                          "item_id": {
                            "$ref": "#/components/schemas/item_id"
                          },
                          "json_attributes": {
                            "$ref": "#/components/schemas/json_attributes"
                          },
                          "name": {
                            "$ref": "#/components/schemas/name"
                          }
                        },
                        "required": [
                          "item_id"
                        ],
                        "title": "item_id"
                      }
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Retorna uma lista de itens disponíveis para o usuário e o número de vezes que um determinado usuário pode comprar um determinado item."
          },
          "404": {
            "description": "Usuário não encontrado."
          }
        },
        "summary": "Personalização de catálogo no lado do parceiro",
        "tags": [
          "personalization"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d90d319f05df7b0f86d2485f48e7079f0f752523' \\\n-d '{\n        \"notification_type\": \"partner_side_catalog\",\n        \"user\": {\n            \"user_id\": \"12345\",\n            \"country\": \"US\"\n        }\n    }'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n{\n    \"notification_type\": \"partner_side_catalog\",\n    \"user\": {\n      \"user_id\": \"12345\",\n      \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "refund": {
      "post": {
        "description": "Quando um pagamento é cancelado, a Xsolla envia detalhes da transação cancelada \nem um webhook com o tipo `refund` para o URL do webhook.\n\nO mecanismo de repetição do webhook depende de quem iniciou o reembolso:\n* Se o reembolso foi iniciado do seu lado, o webhook não é reenviado. O pagamento \n  é reembolsado ao usuário independentemente da resposta ao webhook.\n* Se o reembolso foi iniciado por um terceiro — por exemplo, um sistema de \n  pagamento ou a equipe de Suporte ao Cliente da Xsolla — e, em resposta a um \n  webhook, um código de status `5xx` foi retornado, o webhook é reenviado em \n  intervalos crescentes. O número máximo de tentativas é 12 em até 48 horas a \n  partir da primeira tentativa.\n\nPara informações detalhadas sobre o processo de reembolso, consulte as \n[instruções](/pt/doc/pay-station/features/refund/).\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>O pagamento ainda será reembolsado ao usuário se todas as seguintes condições forem atendidas:<ul><li>O reembolso foi iniciado pela Xsolla.</li><li>Em resposta a um webhook, um código de status <code>4xx</code> foi retornado, ou nenhuma resposta foi recebida após todas as tentativas repetidas, ou um código de status <code>5xx</code> foi retornado.</li></ul></p>\n</div>\n\nQuando você salva o URL do webhook na <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Conta de \nDistribuidor</a>, você também pode configurar o recebimento de informações \nadicionais nos webhooks.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se você se registrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou antes, você encontrará as opções no seu projeto na seção <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Project settings &gt; Webhooks &gt; Testing &gt; Payments &gt; Advanced settings</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Opção</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Exibir informações sobre transações pelos métodos de pagamento salvos</td>\n        <td><p>As informações são passadas nos seguintes parâmetros personalizados do webhook:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — o método de pagamento guardado não foi utilizado</li><li><code>1</code> — o método de pagamento foi salvo ao efetuar o pagamento atual</li><li><code>2</code> — o método de pagamento previamente guardado é utilizado</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — pagamento único</li><li><code>2</code> — pagamento recorrente</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td>Exibir informações sobre o motivo do reembolso.</td>\n        <td>Informações detalhadas sobre os motivos do reembolso.</td>\n    </tr>\n</tbody>\n</table>\n\nCódigos de reembolso:\n\n<table>\n    <thead>\n    <tr>\n        <th>Código</th>\n        <th>Motivo</th>\n        <th>Descrição</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>1</td>\n        <td><nt>Cancellation by the user request / the game request</nt></td>\n        <td>Cancelamento iniciado a partir da Publisher Account.</td>\n    </tr>\n    <tr>\n        <td>2</td>\n        <td><nt>Chargeback</nt></td>\n        <td>Estorno de transação solicitado.</td>\n    </tr>\n    <tr>\n        <td>3</td>\n        <td><nt>Integration error</nt></td>\n        <td>Problemas na integração entre a Xsolla e o jogo.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>4</td>\n        <td><nt>Potential fraud – AFS reject</nt></td>\n        <td>Transação rejeitada porque o sistema Xsolla Anti-fraud detectou uma fraude em potencial.</td>\n    </tr>\n    <tr>\n        <td>5</td>\n        <td><nt>Test payment</nt></td>\n        <td>Transação de teste seguida de cancelamento.<br /><b>Recomendação: não adicione o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>6</td>\n        <td><nt>User invoice expired</nt></td>\n        <td>Invoice vencido (utilizado no modelo pós-pago).</td>\n    </tr>\n    <tr>\n        <td>7</td>\n        <td><nt>Fraud notification from PS</nt></td>\n        <td>Pagamento rejeitado porque o sistema de pagamento detectou uma fraude em potencial.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>8</td>\n        <td><nt>Cancellation by the PS request</nt></td>\n        <td>Cancelamento solicitado pelo sistema de pagamento.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>9</td>\n        <td><nt>Cancellation by the user request</nt></td>\n        <td>O usuário não ficou satisfeito com o jogo ou a compra por qualquer motivo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>10</td>\n        <td><nt>Cancellation by the game request</nt></td>\n        <td>Cancelamento solicitado pelo jogo.<br /><b>Recomendação: não adicionar o usuário à lista de bloqueio.</b></td>\n    </tr>\n    <tr>\n        <td>11</td>\n        <td><nt>Account holder called to report fraud</nt></td>\n        <td>O proprietário da conta afirma que não fez a transação.<br /><b>Recomendação: adicione o usuário à lista de bloqueios.</b></td>\n    </tr>\n    <tr>\n        <td>12</td>\n        <td><nt>Potential fraud – friendly fraud</nt></td>\n        <td>O portador legítimo do cartão contestou a transação.</td>\n    </tr>\n    <tr>\n        <td>13</td>\n        <td><nt>Duplicate</nt></td>\n        <td>Duplique a transação para o mesmo invoice.</td>\n    </tr>\n    <tr>\n        <td>21</td>\n        <td><nt>Potential fraud – BIN attack</nt></td>\n        <td>Cartões roubados de um ou vários BINs em um lote. Um indicador-chave é uma sequência de tentativas compartilhando uma faixa de BIN em um curto intervalo de tempo, frequentemente com números de cartão enumerados.</td>\n    </tr>\n    <tr>\n        <td>22</td>\n        <td><nt>Potential fraud – monetization fraud</nt></td>\n        <td>Cartão roubado usado para comprar itens negociáveis para fins de revenda.</td>\n    </tr>\n    <tr>\n        <td>23</td>\n        <td><nt>Potential fraud – low-scale card fraud</nt></td>\n        <td>Cartões roubados de um ou vários BINs. Não tão difundido e coordenado quanto o ataque BIN (código de reembolso <code>21</code>).</td>\n    </tr>\n    <tr>\n        <td>24</td>\n        <td><nt>Potential fraud – regional price abuse</nt></td>\n        <td>Preços regionais ou abuso de revenda de chaves. Os usuários exploraram preços regionais — tipicamente por meio de indicações de localização ou de métodos de pagamento falsas — para adquirir itens baratos para revenda em mercados mais caros.</td>\n    </tr>\n    <tr>\n        <td>25</td>\n        <td><nt>Potential fraud – partner or PS exploit</nt></td>\n        <td>Roubo de credenciais e tomada de conta — abuso de uma conta ou integração do lado do parceiro ou do lado do sistema de pagamentos, em vez de abuso direto de cartão.</td>\n    </tr>\n    <tr>\n        <td>26</td>\n        <td><nt>Potential fraud – not definable</nt></td>\n        <td>Fraude confirmada, mas não há evidências suficientes para determinar o tipo exato de ataque.</td>\n    </tr>\n    <tr>\n        <td>27</td>\n        <td><nt>Fraud notification from PS – linked transactions</nt></td>\n        <td>A transação em si não foi especificada no relatório de fraude do sistema de pagamento, mas está conectada (ex.: através de um cartão ou dispositivo compartilhado) a transações que foram reembolsadas com base em fraudes.</td>\n    </tr>\n    </tbody>\n</table>\n",
        "operationId": "refund",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Seus parâmetros personalizados.",
                    "type": "object"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_details": {
                    "description": "Detalhes de pagamento (objeto).",
                    "properties": {
                      "country_wht": {
                        "$ref": "#/components/schemas/country_whc"
                      },
                      "direct_wht": {
                        "description": "Imposto retido direto na fonte.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Alíquota de retenção direta na fonte.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "payment": {
                        "description": "Valor pago pelo usuário (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_fee": {
                        "description": "Taxa do sistema de pagamento.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payment_method_sum": {
                        "description": "Valor debitado do sistema de pagamento.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout": {
                        "description": "Dados de pagamento (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "payout_currency_rate": {
                        "description": "Taxa de câmbio entre as moedas de pagamento e remuneração.",
                        "type": "string"
                      },
                      "repatriation_commission": {
                        "description": "Objeto com dados sobre os custos de repatriamento, imposto à Xsolla por terceiros.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "sales_tax": {
                        "description": "Imposto sobre vendas (objeto; apenas EUA e Canadá).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Alíquota de imposto sobre vendas.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "user_acquisition_fee": {
                        "description": "Valor total das taxas de aquisição de usuários deduzidas para as compras feitas por meio de redes afiliadas e influenciadores (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Proporção de taxa de aquisição de usuários, %.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "vat": {
                        "description": "Dados do IVA (objeto; apenas na UE).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "percent": {
                            "description": "Taxa de IVA.",
                            "format": "float",
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_balance_sum": {
                        "description": "Valor debitado do saldo Xsolla.",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "xsolla_fee": {
                        "description": "Taxa Xsolla (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Quantia.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "purchase": {
                    "description": "Dados da compra (objeto).",
                    "properties": {
                      "checkout": {
                        "description": "Dados do checkout (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Valor da compra.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      },
                      "subscription": {
                        "description": "Dados da assinatura (objeto).",
                        "properties": {
                          "amount": {
                            "$ref": "#/components/schemas/amount-float"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          },
                          "date_create": {
                            "$ref": "#/components/schemas/subscription.date_create"
                          },
                          "plan_id": {
                            "$ref": "#/components/schemas/subscription.plan_id"
                          },
                          "subscription_id": {
                            "$ref": "#/components/schemas/subscription.subscription_id"
                          },
                          "tags": {
                            "$ref": "#/components/schemas/subscription.tags"
                          }
                        },
                        "type": "object"
                      },
                      "total": {
                        "description": "Preço total de compra (objeto).",
                        "properties": {
                          "amount": {
                            "description": "Valor total do pagamento.",
                            "format": "float",
                            "type": "number"
                          },
                          "currency": {
                            "$ref": "#/components/schemas/currency"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "total"
                    ],
                    "type": "object"
                  },
                  "refund_details": {
                    "description": "Detalhes do reembolso (objeto).",
                    "properties": {
                      "author": {
                        "description": "Iniciador de reembolso. O valor do campo é passado de acordo com a tabela:\n\n<table>\n    <thead>\n    <tr>\n        <th>Iniciador de reembolso</th>\n        <th>Valor do campo</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td>Jogo (via API).</td>\n        <td>API</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (reembolso automático).</td>\n        <td>E-mail do usuário</td>\n    </tr>\n    <tr>\n        <td>Usuário da Publisher Account (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    <tr>\n        <td>Xsolla (com assistência do suporte ao cliente Xsolla).</td>\n        <td>support@xsolla.com</td>\n    </tr>\n    </tbody>\n</table>\n",
                        "type": "string"
                      },
                      "code": {
                        "description": "ID do código.",
                        "type": "integer"
                      },
                      "reason": {
                        "description": "Motivo do reembolso.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "transaction": {
                    "description": "Detalhes da transação (objeto).",
                    "properties": {
                      "agreement": {
                        "description": "ID do contrato.",
                        "type": "integer"
                      },
                      "dry_run": {
                        "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                        "type": "integer"
                      },
                      "external_id": {
                        "description": "ID externo de transação.",
                        "type": "string"
                      },
                      "id": {
                        "description": "ID de transação.",
                        "format": "int64",
                        "type": "integer"
                      },
                      "payment_method_order_id": {
                        "description": "ID de pagamento no sistema de pagamento.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      },
                      "zip": {
                        "$ref": "#/components/schemas/user.zip"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Reembolso",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-d '{\n        \"notification_type\": \"refund\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"purchase\": {\n            \"subscription\": {\n                \"plan_id\": \"b5dac9c8\",\n                \"subscription_id\": \"10\",\n                \"date_create\": \"2014-09-22T19:25:25+04:00\",\n                \"currency\": \"USD\",\n                \"amount\": 9.99\n            },\n            \"checkout\": {\n                \"currency\": \"USD\",\n                \"amount\": 50\n            },\n            \"total\":{\n                \"currency\": \"USD\",\n                \"amount\": 200\n            }\n        },\n        \"user\": {\n            \"ip\": \"127.0.0.1\",\n            \"phone\": \"18777976552\",\n            \"email\": \"email@example.com\",\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\",\n            \"country\": \"US\"\n        },\n        \"transaction\": {\n            \"id\": 1,\n            \"external_id\": 1,\n            \"dry_run\": 1,\n            \"agreement\": 1\n        },\n        \"refund_details\": {\n            \"code\": 4,\n            \"reason\": \"Potential fraud\"\n        },\n        \"payment_details\": {\n            \"sales_tax\": {\n                \"currency\": \"USD\",\n                \"amount\": 0\n            },\n            \"direct_wht\": {\n                \"currency\": \"USD\",\n                \"amount\": 0.70\n            },\n            \"xsolla_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"10\"\n            },\n            \"payout\": {\n                \"currency\": \"USD\",\n                \"amount\": \"200\"\n            },\n            \"payment_method_fee\": {\n                \"currency\": \"USD\",\n                \"amount\": \"20\"\n            },\n            \"payment\": {\n                \"currency\": \"USD\",\n                \"amount\": \"230\"\n            },\n            \"repatriation_commission\": {\n                \"currency\": \"USD\",\n                \"amount\": 10\n            }\n        }\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'refund',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'purchase' => array(\n        'total' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        )\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email' => 'email@example.com',\n        'id' => '1234567',\n        'country' => 'US'\n    ),\n    'transaction' => array(\n        'id' => 87654321,\n        'payment_date' => '2014-09-23T19:25:25+04:00',\n        'payment_method' => 1380,\n        'dry_run' => 1\n    ),\n    'refund_details' => array(\n            'code' => 4,\n            'reason' => 'Potential fraud'\n    ),\n    'payment_details' => array(\n        'payment' => array(\n            'currency' => 'USD',\n            'amount' => 9.99\n        ),\n        'vat' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'sales_tax' => array(\n            'currency' => 'USD',\n            'amount' => 0\n        ),\n        'direct_wht' => array(\n            'currency' => 'USD',\n            'amount' => 70\n        ),\n        'payout_currency_rate' => 1,\n        'payout' => array(\n            'currency' => 'USD',\n            'amount' => 9.49\n        ),\n        'xsolla_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.19\n        ),\n        'payment_method_fee' => array(\n            'currency' => 'USD',\n            'amount' => 0.31\n        ),\n        'repatriation_commission' => array(\n            'currency' => 'USD',\n            'amount' => 0.2\n        )\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 1220\nauthorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7\n\n{\n    \"notification_type\": \"refund\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"purchase\": {\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"date_create\": \"2014-09-22T19:25:25+04:00\",\n            \"currency\": \"USD\",\n            \"amount\": 9.99\n        },\n        \"checkout\": {\n            \"currency\": \"USD\",\n            \"amount\": 50\n        },\n        \"total\": {\n            \"currency\": \"USD\",\n            \"amount\": 200\n        }\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    },\n    \"transaction\": {\n        \"id\": 1,\n        \"external_id\": 1,\n        \"dry_run\": 1,\n        \"agreement\": 1\n    },\n    \"refund_details\": {\n        \"code\": 4,\n        \"reason\": \"Potential fraud\"\n    },\n    \"payment_details\": {\n        \"sales_tax\": {\n            \"currency\": \"USD\",\n            \"amount\": 0\n        },\n        \"direct_wht\": {\n            \"currency\": \"USD\",\n            \"amount\": 0.70\n        },\n        \"xsolla_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"10\"\n        },\n        \"payout\": {\n            \"currency\": \"USD\",\n            \"amount\": \"200\"\n        },\n        \"payment_method_fee\": {\n            \"currency\": \"USD\",\n            \"amount\": \"20\"\n        },\n        \"payment\": {\n            \"currency\": \"USD\",\n            \"amount\": \"230\"\n        },\n        \"repatriation_commission\": {\n            \"currency\": \"USD\",\n            \"amount\": 10\n        }\n    }\n}"
          }
        ]
      }
    },
    "remove-payment-account": {
      "post": {
        "description": "Quando um usuário remove a conta de pagamento das contas salvas, a Xsolla envia um webhook com o tipo `payment_account_remove` para o URL do webhook. Para receber este webhook, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.",
        "operationId": "remove-payment-account",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "payment_account": {
                    "description": "Detalhes da conta de pagamento (objeto).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/payment_account.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/payment_account.name"
                      },
                      "payment_method": {
                        "$ref": "#/components/schemas/payment_account.payment_method"
                      },
                      "type": {
                        "$ref": "#/components/schemas/payment_account.type"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Remover conta de pagamento",
        "tags": [
          "payments"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"payment_account_remove\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"type\": \"paypal\"\n    }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"payment_account_remove\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"payment_account\": {\n        \"id\": \"12345678\",\n        \"name\": \"email@example.com\",\n        \"payment_method\": \"24\",\n        \"type\": \"paypal\"\n    }\n}"
          }
        ]
      }
    },
    "successful-order-payment": {
      "post": {
        "description": "A Xsolla envia o webhook <code>order_paid</code> para o URL especificado quando \no usuário paga pelo pedido com sucesso.\n\nO webhook <code>order_paid</code> contém informações sobre os itens comprados, \ndados de pagamento e os detalhes da transação.\n\nO webhook <code>order_paid</code> não é enviado se o pagamento não for bem-\nsucedido. Por exemplo:\n* o formulário de pagamento foi aberto, mas o usuário não pagou pelo pedido\n* o formulário de pagamento foi aberto, mas houve erros durante o pagamento\n\nRecomenda-se que o tempo de processamento do webhook <code>order_paid</code> \nseja inferior a 3 segundos.\n\n<div class=\"notice\">\n<p><strong>Aviso</strong></p>\n<p>O conjunto de campos enviados em um webhook depende das seguintes configurações:<ul><li>as que você configurou na Conta de Distribuidor na seção <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Project settings &gt; Webhooks &gt; Advanced settings</a>.</li><li>as configuradas no lado da Xsolla.</li></ul></p><p>Se você tiver alguma dúvida, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n\nAs respostas esperadas são descritas na seção <b>Respostas</b>. Você pode usar \noutros códigos de resposta. Dependendo do código da resposta e a conexão da \nfuncionalidade de reembolso automático do pagamento, a lógica de processamento \ndo webhook no lado da Xsolla funciona como a seguir:\n\n<table>\n    <thead>\n    <tr>\n        <th>Código de resposta</th>\n        <th>Reembolso automático de pagamento está desativado (por padrão)</th>\n        <th>Reembolso automático de pagamento está ativado</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>400</code>, <code>401</code>, <code>402</code>, <code>403</code>, <code>404</code>, <code>409</code>, <code>422</code>, <code>415</code></td>\n        <td>Nenhuma ação</td>\n        <td>Reembolso automático ao usuário</td>\n    </tr>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Nenhuma ação</td>\n        <td>Nenhuma ação</td>\n    </tr>\n    <tr>\n        <td>Código diferente ou nenhuma resposta ao webhook</td>\n        <td>Múltiplos webhooks são enviados dentro de um intervalo de tempo específico: 2 tentativas dentro de um intervalo de 5 minutos, 7 tentativas dentro de um intervalo de 15 minutos, 10 tentativas de dentro de um intervalo de 60 minutos.</td>\n        <td>Múltiplos webhooks são enviados dentro de um intervalo de tempo específico: 2 tentativas dentro de um intervalo de 5 minutos, 7 tentativas dentro de um intervalo de 15 minutos, 10 tentativas de dentro de um intervalo de 60 minutos. Se todos os webhooks forem enviados mas não for recebida uma resposta bem-sucedida, um reembolso automático é emitido ao usuário.</td>\n    </tr>\n    </tbody>\n</table>\n\nPara conectar a funcionalidade de reembolso automático, entre em contato com \nseus Gerentes de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.\n",
        "operationId": "successful-order-payment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "billing": {
                    "description": "Detalhes da transação e do pagamento.",
                    "properties": {
                      "notification_type": {
                        "$ref": "#/components/schemas/notification_type"
                      },
                      "payment_details": {
                        "description": "Detalhes de pagamento (objeto).",
                        "properties": {
                          "country_wht": {
                            "$ref": "#/components/schemas/country_whc"
                          },
                          "direct_wht": {
                            "description": "Imposto retido direto na fonte.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Alíquota de retenção direta na fonte.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "payment": {
                            "description": "Valor pago pelo usuário (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_fee": {
                            "description": "Taxa do sistema de pagamento.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payment_method_sum": {
                            "description": "Valor debitado do sistema de pagamento.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout": {
                            "description": "Dados de pagamento (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "payout_currency_rate": {
                            "description": "Taxa de câmbio entre as moedas de pagamento e remuneração.",
                            "type": "string"
                          },
                          "repatriation_commission": {
                            "description": "Objeto com dados sobre os custos de repatriamento, imposto à Xsolla por terceiros.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "sales_tax": {
                            "description": "Imposto sobre vendas (objeto; apenas EUA e Canadá).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Alíquota de imposto sobre vendas.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "user_acquisition_fee": {
                            "description": "Valor total das taxas de aquisição de usuários deduzidas para as compras feitas por meio de redes afiliadas e influenciadores (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Proporção de taxa de aquisição de usuários, %.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "vat": {
                            "description": "Dados do IVA (objeto; apenas na UE).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "percent": {
                                "description": "Taxa de IVA.",
                                "format": "float",
                                "type": "number"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_balance_sum": {
                            "description": "Valor debitado do saldo Xsolla.",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          },
                          "xsolla_fee": {
                            "description": "Taxa Xsolla (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Quantia.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "purchase": {
                        "description": "Dados da compra (objeto).",
                        "properties": {
                          "coupon": {
                            "description": "Dados do cupom (objeto; se um cupom foi usado ao criar a assinatura).",
                            "properties": {
                              "campaign_code": {
                                "description": "Código da campanha.",
                                "type": "string"
                              },
                              "coupon_code": {
                                "description": "Código de cupom.",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "gift": {
                            "description": "Detalhes do presente (objeto).",
                            "properties": {
                              "giver_id": {
                                "description": "ID do doador.",
                                "type": "string"
                              },
                              "hide_giver_from_receiver": {
                                "description": "Se a identidade do doador deve ou não ser ocultada do recipiente.",
                                "type": "string"
                              },
                              "message": {
                                "description": "Mensagem do doador.",
                                "type": "string"
                              },
                              "receiver_email": {
                                "description": "E-mail do recipiente do presente.",
                                "type": "string"
                              },
                              "receiver_id": {
                                "description": "ID do recipiente do presente.",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "promotions": {
                            "description": "Promoções aplicadas a esta transação.",
                            "items": {
                              "properties": {
                                "id": {
                                  "description": "ID da promoção.",
                                  "type": "integer"
                                },
                                "technical_name": {
                                  "description": "Nome técnico da promoção.",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "subscription": {
                            "description": "Dados da assinatura (objeto).",
                            "properties": {
                              "amount": {
                                "$ref": "#/components/schemas/amount-float"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              },
                              "date_create": {
                                "$ref": "#/components/schemas/subscription.date_create"
                              },
                              "date_next_charge": {
                                "description": "Data da próxima cobrança. Data e hora de acordo com o [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
                                "type": "string"
                              },
                              "plan_id": {
                                "$ref": "#/components/schemas/subscription.plan_id"
                              },
                              "product_id": {
                                "description": "ID do produto (se enviado no token de acesso).",
                                "type": "string"
                              },
                              "subscription_id": {
                                "$ref": "#/components/schemas/subscription.subscription_id"
                              },
                              "tags": {
                                "$ref": "#/components/schemas/subscription.tags"
                              }
                            },
                            "type": "object"
                          },
                          "total": {
                            "description": "Preço total de compra (objeto).",
                            "properties": {
                              "amount": {
                                "description": "Valor total do pagamento.",
                                "format": "float",
                                "type": "number"
                              },
                              "currency": {
                                "$ref": "#/components/schemas/currency"
                              }
                            },
                            "type": "object"
                          }
                        },
                        "required": [
                          "total"
                        ],
                        "type": "object"
                      },
                      "settings": {
                        "description": "Configurações personalizadas do projeto (objeto).",
                        "properties": {
                          "merchant_id": {
                            "$ref": "#/components/schemas/settings.merchant_id"
                          },
                          "project_id": {
                            "$ref": "#/components/schemas/settings.project_id"
                          }
                        },
                        "type": "object"
                      },
                      "transaction": {
                        "description": "Detalhes da transação (objeto).",
                        "properties": {
                          "agreement": {
                            "description": "ID do contrato.",
                            "type": "integer"
                          },
                          "dry_run": {
                            "description": "Transação de teste. O parâmetro tem valor 1 se for uma transação de teste ou não for enviado se a transação for real.",
                            "type": "integer"
                          },
                          "external_id": {
                            "$ref": "#/components/schemas/external-id"
                          },
                          "id": {
                            "description": "ID de transação.",
                            "format": "int64",
                            "type": "integer"
                          },
                          "payment_date": {
                            "description": "Data de pagamento.",
                            "type": "string"
                          },
                          "payment_method": {
                            "description": "ID de método de pagamento.",
                            "type": "integer"
                          },
                          "payment_method_name": {
                            "description": "Nome do método de pagamento.",
                            "type": "string"
                          },
                          "payment_method_order_id": {
                            "description": "ID de pagamento no sistema de pagamento.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "notification_type",
                      "transaction",
                      "payment_details"
                    ],
                    "type": "object"
                  },
                  "custom_parameters": {
                    "description": "Informações adicionais.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Lista de itens comprados pelo usuário.\n\nThe set of parameters included in the array depends on the webhook version. \nVersion 2 includes additional parameters: `is_free`, `is_bonus`, and \n`is_bundle_content`. To switch the version, pass its number in the `version` \nparameter in the [Update webhook version](/pt/api/catalog/common-webhooks/update-webhook-version/) API call.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "versão = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Se `true`, o item é um bônus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Se `true`, o item pertence a um conjunto.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Se `true`, o item é gratuito.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "versão = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Informações sobre o pedido.",
                    "properties": {
                      "amount": {
                        "description": "O custo total de um carrinho com base na moeda escolhida.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Comentário do usuário ao pedido.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Cupons aplicados. Se o cupom não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um cupom aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Moeda de ordem. A moeda virtual usa o SKU e a moeda real usa um código [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) de três letras.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Identificador exclusivo do pedido do usuário no lado da Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "ID da fatura de pagamentos em moeda real. Pagamentos em moedas virtuais ou itens grátis têm um valor `null`.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Modalidade de pagamento. `default` é usado para pagamentos reais; `sandbox` para pagamentos de testes.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Plataforma de pagamento. O valor `xsolla` é usado para pagamentos via Xsolla. Para outros pagamentos, é utilizado o valor correspondente ao nome da plataforma de publicação de jogos.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Códigos promocionais aplicados. Se o código promocional não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um código promocional aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Status do pedido.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Informações do usuário.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "Endereço de e-mail do usuário.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "ID de usuário.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user",
                  "transaction",
                  "payment_details"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Retorne para indicar o processamento bem-sucedido."
          },
          "400": {
            "description": "Retorne em caso de erro nas informações fornecidas (por exemplo, um parâmetro obrigatório ausente, falha na autorização, etc.)."
          }
        },
        "summary": "Pagamento bem-sucedido do pedido (com detalhes de pagamento e transação)",
        "tags": [
          "combined-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"payment\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\": {\n          \"subscription\": {\n              \"plan_id\": \"b5dac9c8\",\n              \"subscription_id\": \"10\",\n              \"product_id\": \"Demo Product\",\n              \"date_create\": \"2014-09-22T19:25:25+04:00\",\n              \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n              \"currency\": \"USD\",\n              \"amount\": 9.99\n          },\n          \"total\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"promotions\": [{\n              \"technical_name\": \"Demo Promotion\",\n              \"id\": 853\n          }],\n          \"coupon\": {\n              \"coupon_code\": \"ICvj45S4FUOyy\",\n              \"campaign_code\": \"1507\"\n          }\n        },\n      \"transaction\": {\n          \"id\": 1,\n          \"external_id\": 1,\n          \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n          \"payment_method\": 1,\n          \"payment_method_name\": \"PayPal\",\n          \"payment_method_order_id\": 1234567890123456789,\n          \"dry_run\": 1,\n          \"agreement\": 1\n      },\n      \"payment_details\": {\n          \"payment\": {\n              \"currency\": \"USD\",\n              \"amount\": 230\n          },\n          \"vat\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 20\n          },\n          \"sales_tax\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"direct_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"payout_currency_rate\": \"1\",\n          \"payout\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"country_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 10\n          },\n          \"user_acquisition_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 1\n          },\n          \"xsolla_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          },\n          \"payment_method_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 20\n          },\n          \"repatriation_commission\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          }\n      }\n    }\n ,\n  \"custom_parameters\": {\n    \"parameter1\": \"value1\",\n    \"parameter2\": \"value2\"\n  }\n}"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": null,\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    },\n    \"billing\": {\n      \"notification_type\": \"payment\",\n      \"settings\": {\n        \"project_id\": 18404,\n        \"merchant_id\": 2340\n      },\n      \"purchase\":{\n          \"subscription\": {\n              \"plan_id\": \"b5dac9c8\",\n              \"subscription_id\": \"10\",\n              \"product_id\": \"Demo Product\",\n              \"date_create\": \"2014-09-22T19:25:25+04:00\",\n              \"date_next_charge\": \"2014-10-22T19:25:25+04:00\",\n              \"currency\": \"USD\",\n              \"amount\": 9.99\n          },\n          \"total\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"promotions\": [{\n              \"technical_name\": \"Demo Promotion\",\n              \"id\": 853\n          }],\n          \"coupon\": {\n              \"coupon_code\": \"ICvj45S4FUOyy\",\n              \"campaign_code\": \"1507\"\n          }\n      },\n      \"transaction\": {\n          \"id\": 1,\n          \"external_id\": 1,\n          \"payment_date\": \"2014-09-24T20:38:16+04:00\",\n          \"payment_method\": 1,\n          \"payment_method_name\": \"PayPal\",\n          \"payment_method_order_id\": 1234567890123456789,\n          \"dry_run\": 1,\n          \"agreement\": 1\n      },\n      \"payment_details\": {\n          \"payment\": {\n              \"currency\": \"USD\",\n              \"amount\": 230\n          },\n          \"vat\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 20\n          },\n          \"sales_tax\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"direct_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 0,\n              \"percent\": 0\n          },\n          \"payout_currency_rate\": \"1\",\n          \"country_wht\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 10\n          },\n          \"user_acquisition_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 2,\n              \"percent\": 1\n          },\n          \"payout\": {\n              \"currency\": \"USD\",\n              \"amount\": 200\n          },\n          \"xsolla_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          },\n          \"payment_method_fee\": {\n              \"currency\": \"USD\",\n              \"amount\": 20\n          },\n          \"repatriation_commission\": {\n              \"currency\": \"USD\",\n              \"amount\": 10\n          }\n      }\n    },\n    \"custom_parameters\": {\n        \"parameter1\": \"value1\",\n        \"parameter2\": \"value2\"\n        }\n    }"
          }
        ]
      }
    },
    "successful-order-payment-separate": {
      "post": {
        "description": "A Xsolla envia o webhook <code>order_paid</code> para o URL especificado quando \nas seguintes condições são atendidas:\n1. O usuário pagou pelo pedido com sucesso.\n2. Xsolla recebeu uma resposta sobre o processamento bem-sucedido do webhook de \n   [pagamento](/pt/webhooks/operation/payment/).\n\nO webhook <code>order_paid</code> contém informações sobre os itens comprados e \nos dados da transação.\n\nO webhook <code>order_paid</code> não será enviado se:\n* O pagamento não foi bem-sucedido, por exemplo:\n  * o formulário de pagamento foi aberto, mas o usuário não pagou pelo pedido\n  * o formulário de pagamento foi aberto, mas houve erros durante o pagamento\n* A resposta sobre o processamento bem-sucedido do webhook \n  [pagamento](/pt/webhooks/operation/payment/) não foi recebida.\n\nRecomenda-se que o tempo de processamento do webhook <code>order_paid</code> \nseja inferior a 3 segundos.\n\nAs respostas esperadas são descritas na seção <b>Respostas</b>. Você pode usar \noutros códigos de resposta. Dependendo do código da resposta e a conexão da \nfuncionalidade de reembolso automático do pagamento, a lógica de processamento \ndo webhook no lado da Xsolla funciona como a seguir:\n\n<table>\n    <thead>\n    <tr>\n        <th>Código de resposta</th>\n        <th>Reembolso automático de pagamento está desativado (por padrão)</th>\n        <th>Reembolso automático de pagamento está ativado</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>400</code>, <code>401</code>, <code>402</code>, <code>403</code>, <code>404</code>, <code>409</code>, <code>422</code>, <code>415</code></td>\n        <td>Nenhuma ação</td>\n        <td>Reembolso automático ao usuário</td>\n    </tr>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Nenhuma ação</td>\n        <td>Nenhuma ação</td>\n    </tr>\n    <tr>\n        <td>Código diferente ou nenhuma resposta ao webhook</td>\n        <td>Múltiplos webhooks são enviados dentro de um intervalo de tempo específico: 2 tentativas dentro de um intervalo de 5 minutos, 7 tentativas dentro de um intervalo de 15 minutos, 10 tentativas de dentro de um intervalo de 60 minutos.</td>\n        <td>Múltiplos webhooks são enviados dentro de um intervalo de tempo específico: 2 tentativas dentro de um intervalo de 5 minutos, 7 tentativas dentro de um intervalo de 15 minutos, 10 tentativas de dentro de um intervalo de 60 minutos. Se todos os webhooks forem enviados mas não for recebida uma resposta bem-sucedida, um reembolso automático é emitido ao usuário.</td>\n    </tr>\n    </tbody>\n</table>\n\nPara conectar a funcionalidade de reembolso automático, entre em contato com \nseus Gerentes de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.\n",
        "operationId": "successful-order-payment-separate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "custom_parameters": {
                    "description": "Informações adicionais.",
                    "type": "object"
                  },
                  "items": {
                    "description": "Lista de itens comprados pelo usuário.\n\nThe set of parameters included in the array depends on the webhook version. \nVersion 2 includes additional parameters: `is_free`, `is_bonus`, and \n`is_bundle_content`. To switch the version, pass its number in the `version` \nparameter in the [Update webhook version](/pt/api/catalog/common-webhooks/update-webhook-version/) API call.\n",
                    "items": {
                      "oneOf": [
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order"
                          ],
                          "title": "versão = 1",
                          "type": "object"
                        },
                        {
                          "properties": {
                            "amount": {
                              "description": "Custo total dos itens com base na quantidade.",
                              "type": "string"
                            },
                            "custom_attributes": {
                              "description": "Um objeto JSON contendo atributos e valores de item.",
                              "type": "object"
                            },
                            "is_bonus": {
                              "description": "Se `true`, o item é um bônus.",
                              "type": "boolean"
                            },
                            "is_bundle_content": {
                              "description": "Se `true`, o item pertence a um conjunto.",
                              "type": "boolean"
                            },
                            "is_free": {
                              "description": "Se `true`, o item é gratuito.",
                              "type": "boolean"
                            },
                            "is_pre_order": {
                              "description": "Se `true`, o item está em pré-venda.",
                              "type": "boolean"
                            },
                            "promotions": {
                              "$ref": "#/components/schemas/items.promotions"
                            },
                            "quantity": {
                              "description": "Quantidade de itens.",
                              "type": "integer"
                            },
                            "sku": {
                              "$ref": "#/components/schemas/items.sku"
                            },
                            "type": {
                              "$ref": "#/components/schemas/items.type"
                            }
                          },
                          "required": [
                            "sku",
                            "type",
                            "quantity",
                            "amount",
                            "promotions",
                            "is_pre_order",
                            "is_free",
                            "is_bonus",
                            "is_bundle_content"
                          ],
                          "title": "versão = 2",
                          "type": "object"
                        }
                      ]
                    },
                    "type": "array"
                  },
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "order": {
                    "description": "Informações sobre o pedido.",
                    "properties": {
                      "amount": {
                        "description": "O custo total de um carrinho com base na moeda escolhida.",
                        "type": "string"
                      },
                      "comment": {
                        "description": "Comentário do usuário ao pedido.",
                        "nullable": true,
                        "type": "string"
                      },
                      "coupons": {
                        "description": "Cupons aplicados. Se o cupom não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um cupom aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "currency": {
                        "description": "Moeda de ordem. A moeda virtual usa o SKU e a moeda real usa um código [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) de três letras.",
                        "type": "string"
                      },
                      "currency_type": {
                        "$ref": "#/components/schemas/currency-type"
                      },
                      "id": {
                        "description": "Identificador exclusivo do pedido do usuário no lado da Xsolla.",
                        "type": "integer"
                      },
                      "invoice_id": {
                        "description": "ID da fatura de pagamentos em moeda real. Pagamentos em moedas virtuais ou itens grátis têm um valor `null`.",
                        "nullable": true,
                        "type": "string"
                      },
                      "mode": {
                        "description": "Modalidade de pagamento. `default` é usado para pagamentos reais; `sandbox` para pagamentos de testes.",
                        "enum": [
                          "default",
                          "sandbox"
                        ],
                        "type": "string"
                      },
                      "platform": {
                        "description": "Plataforma de pagamento. O valor `xsolla` é usado para pagamentos via Xsolla. Para outros pagamentos, é utilizado o valor correspondente ao nome da plataforma de publicação de jogos.",
                        "enum": [
                          "xsolla",
                          "playstation_network",
                          "xbox_live",
                          "pc_standalone",
                          "nintendo_shop",
                          "google_play",
                          "app_store_ios",
                          "android_standalone",
                          "ios_standalone",
                          "android_other",
                          "ios_other",
                          "pc_other"
                        ],
                        "nullable": true,
                        "type": "string"
                      },
                      "promocodes": {
                        "description": "Códigos promocionais aplicados. Se o código promocional não for aplicado, a matriz não retornará.",
                        "items": {
                          "properties": {
                            "code": {
                              "description": "O código de um código promocional aplicado.",
                              "type": "string"
                            },
                            "external_id": {
                              "description": "ID externo.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "promotions": {
                        "$ref": "#/components/schemas/order.promotions"
                      },
                      "status": {
                        "description": "Status do pedido.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "mode",
                      "currency_type",
                      "currency",
                      "amount",
                      "status",
                      "platform",
                      "comment",
                      "invoice_id",
                      "promotions"
                    ],
                    "type": "object"
                  },
                  "user": {
                    "description": "Informações do usuário.",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "description": "Endereço de e-mail do usuário.",
                        "type": "string"
                      },
                      "external_id": {
                        "description": "ID de usuário.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "external_id",
                      "email"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "items",
                  "order",
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Retorne para indicar o processamento bem-sucedido."
          },
          "400": {
            "description": "Retorne em caso de erro nas informações fornecidas (por exemplo, um parâmetro obrigatório ausente, falha na autorização, etc.)."
          }
        },
        "summary": "Pagamento bem-sucedido do pedido (sem detalhes de pagamento e transação)",
        "tags": [
          "separate-webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \\\n-d '{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    }\n\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost:           your.hostname\naccept:         application/json\ncontent-length: 258\ncontent-type:   application/json\nauthorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523\n\n\n{\n    \"notification_type\": \"order_paid\",\n    \"items\": [\n      {\n        \"sku\": \"com.xsolla.v.item_1\",\n        \"type\": \"virtual_good\",\n        \"is_pre_order\": false,\n        \"quantity\": 3,\n        \"amount\": \"1000\",\n        \"promotions\": [\n          {\n            \"amount_without_discount\": \"6000\",\n            \"amount_with_discount\": \"5000\",\n            \"sequence\": 1\n          },\n          {\n            \"amount_without_discount\": \"5000\",\n            \"amount_with_discount\": \"4000\",\n            \"sequence\": 2\n          }\n        ],\n        \"custom_attributes\":\n          {\n            \"purchased\": 0,\n            \"attr\": \"value\"\n          }\n      },\n      {\n        \"sku\": \"com.xsolla.v.item_new_1\",\n        \"type\": \"bundle\",\n        \"is_pre_order\": false,\n        \"quantity\": 1,\n        \"amount\": \"1000\",\n        \"promotions\": []\n      },\n      {\n        \"sku\": \"com.xsolla.gold_1\",\n        \"type\": \"virtual_currency\",\n        \"is_pre_order\": false,\n        \"quantity\": 1500,\n        \"amount\": \"[null]\",\n        \"promotions\": []\n      }\n    ],\n    \"order\": {\n      \"id\": 1,\n      \"mode\": \"default\",\n      \"currency_type\": \"virtual\",\n      \"currency\": \"sku_currency\",\n      \"amount\": \"2000\",\n      \"status\": \"paid\",\n      \"platform\": \"xsolla\",\n      \"comment\": null,\n      \"invoice_id\": \"1\",\n      \"promotions\": [\n        {\n          \"amount_without_discount\": \"4000\",\n          \"amount_with_discount\": \"2000\",\n          \"sequence\": 1\n        }\n      ],\n      \"promocodes\": [\n        {\n          \"code\": \"promocode_some_code\",\n          \"external_id\": \"promocode_sku\"\n        }\n      ],\n      \"coupons\": [\n        {\n          \"code\": \"WINTER2021\",\n          \"external_id\": \"coupon_sku\"\n        }\n      ]\n    },\n    \"user\": {\n      \"external_id\": \"id_xsolla_login_1\",\n      \"email\": \"gc_user@xsolla.com\",\n      \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "updated-subscription": {
      "post": {
        "description": "Se alguns parâmetros na assinatura (`plan_id`, `date_next_charge`) foram alterados, e no caso de cada renovação de assinatura, a Xsolla envia um webhook com o tipo `update_subscription` para o URL do webhook.",
        "operationId": "updated-subscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "subscription": {
                    "description": "Dados da assinatura (objeto).",
                    "properties": {
                      "date_next_charge": {
                        "$ref": "#/components/schemas/subscription.date_next_charge"
                      },
                      "plan_id": {
                        "$ref": "#/components/schemas/subscription.plan_id"
                      },
                      "product_id": {
                        "$ref": "#/components/schemas/subscription.product_id"
                      },
                      "subscription_id": {
                        "$ref": "#/components/schemas/subscription.subscription_id"
                      },
                      "tags": {
                        "$ref": "#/components/schemas/subscription.tags"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Assinatura atualizada",
        "tags": [
          "subscriptions"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n        \"notification_type\": \"update_subscription\",\n        \"settings\": {\n          \"project_id\": 18404,\n          \"merchant_id\": 2340\n        },\n        \"user\": {\n            \"id\": \"1234567\",\n            \"name\": \"John Smith\"\n        },\n        \"subscription\": {\n            \"plan_id\": \"b5dac9c8\",\n            \"subscription_id\": \"10\",\n            \"product_id\": \"Demo Product\",\n            \"date_next_charge\": \"2015-01-22T19:25:25+04:00\"\n        }\n    }'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'update_subscription',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'id' => '1234567',\n        'name' => 'John Smith'\n    ),\n    'subscription' => array(\n        'plan_id' => 'b5dac9c8',\n        'subscription_id' => '10',\n        'product_id' => 'Demo Product',\n        'date_next_charge' => '2015-01-22T19:25:25+04:00'\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"update_subscription\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\"\n    },\n    \"subscription\": {\n        \"plan_id\": \"b5dac9c8\",\n        \"subscription_id\": \"10\",\n        \"product_id\": \"Demo Product\",\n        \"date_next_charge\": \"2015-01-22T19:25:25+04:00\"\n    }\n}"
          }
        ]
      }
    },
    "user-search": {
      "post": {
        "description": "<nt>Public User ID</nt> é um parâmetro que identifica exclusivamente o usuário e é conhecido por ele, diferentemente de <nt>User ID</nt> (<nt>Public User ID</nt> pode ser um e-mail, apelido, etc). A Xsolla envia um webhook com o tipo `user_search` quando uma compra é feita fora da loja do jogo (por exemplo, através de quiosques de dinheiro).",
        "operationId": "user-search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "public_id": {
                        "$ref": "#/components/schemas/user.public_id"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type",
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Pesquisa do usuário",
        "tags": [
          "user-validation"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n    \"notification_type\": \"user_search\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"public_id\": \"email@example.com\"\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'user_search',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'public_id' => 'email@example.com'\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"user_search\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"public_id\": \"email@example.com\"\n    }\n}"
          }
        ]
      }
    },
    "user-validation": {
      "post": {
        "description": "A Xsolla envia um webhook com o tipo `user_validation` para o URL do webhook \npara verificar se um usuário está cadastrado no jogo. A solicitação é enviada \nvárias vezes como parte do processo de pagamento:\n\n* Quando um usuário escolhe uma forma de pagamento na interface de pagamento.\n* Quando um usuário insere dados no formulário de pagamento. Por exemplo, dados \n  de cartão bancário ou o CEP ao pagar via PayPal.\n* Quando um usuário clica em **Pagar agora** para prosseguir com o pagamento.\n* Quando o processo de pagamento for concluído e o status da transação for \n  alterado para `done`.\n\nA solicitação é enviada ao pagar com qualquer método de pagamento.\n\nAo salvar o URL do webhook na Conta de Distribuidor, você pode conceder \npermissões para receber informações detalhadas nos webhooks. Para fazer isso, \ndefina as opções necessárias como ativas na Conta de Distribuidor na seção <a \nhref=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Project \nsettings &gt; Webhooks &gt; Advanced settings</a>.\n\n<div class=\"note\">\n<p><strong>Observação</strong></p>\n<p>Se você se registrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou antes, você encontrará as opções na seção <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments\">Project settings &gt; Webhooks &gt; Testing &gt; Payments &gt; Advanced settings</a>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Opção</th>\n        <th>Descrição</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Enviar apenas os parâmetros de usuário necessários sem dados confidenciais</td>\n        <td><p>Somente as seguintes informações sobre o usuário são passadas no webhook:</p><ul><li>ID</li><li>país</li></ul></td>\n    </tr>\n    <tr>\n        <td>Enviar parâmetros personalizados</td>\n        <td>As informações sobre os <a href=\"/pt/api/pay-station/operation/create-token/\">parâmetros de token personalizados</a> são passadas no webhook.</td>\n    </tr>\n</tbody>\n</table>\n",
        "operationId": "user-validation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "notification_type": {
                    "$ref": "#/components/schemas/notification_type"
                  },
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "email": {
                        "$ref": "#/components/schemas/user.email"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      },
                      "ip": {
                        "$ref": "#/components/schemas/user.ip"
                      },
                      "name": {
                        "$ref": "#/components/schemas/user.name"
                      },
                      "phone": {
                        "$ref": "#/components/schemas/user.phone"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "notification_type"
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "500": {
            "$ref": "#/components/responses/500"
          }
        },
        "summary": "Validação do usuário",
        "tags": [
          "user-validation"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-H 'authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f' \\\n-d '{\n    \"notification_type\":\"user_validation\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    }\n}'"
          },
          {
            "label": "PHP",
            "lang": "PHP",
            "source": "<?php\n\n$request = array(\n    'notification_type' => 'user_validation',\n    'settings' => array(\n      'project_id' => 18404,\n      'merchant_id' => 2340\n    ),\n    'user' => array(\n        'ip' => '127.0.0.1',\n        'phone' => '18777976552',\n        'email'=> 'email@example.com',\n        'id'=> '1234567',\n        'country' => 'US'\n    )\n);"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\nauthorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f\n\n{\n    \"notification_type\": \"user_validation\",\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": \"1234567\",\n        \"name\": \"John Smith\",\n        \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    },
    "user-validation-in-webshop": {
      "post": {
        "description": "A Xsolla envia um webhook de um site Web Shop para verificar se um usuário existe no jogo. O webhook é enviado do seguinte endereço IP: `34.102.38.178`.\n<div class=\"note\"><strong>Observe</strong><br><br>\nO webhook é usado apenas para validação do usuário na Web Shop. Consulte essas <a target=\"_blank\" href=\"https://developers.xsolla.com/pt/solutions/web-shop/authentication-and-analytics/set-up-authentication/\">instruções</a> para obter mais informações sobre como configurar webhooks no Site Builder.</div>",
        "operationId": "user-validation-in-webshop",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "settings": {
                    "description": "Configurações personalizadas do projeto (objeto).",
                    "properties": {
                      "merchant_id": {
                        "$ref": "#/components/schemas/settings.merchant_id"
                      },
                      "project_id": {
                        "$ref": "#/components/schemas/settings.project_id"
                      }
                    },
                    "type": "object"
                  },
                  "user": {
                    "description": "Dados do usuário (objeto).",
                    "properties": {
                      "country": {
                        "$ref": "#/components/schemas/user.country"
                      },
                      "id": {
                        "$ref": "#/components/schemas/user.id"
                      }
                    },
                    "required": [
                      "id"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "user"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "attributes": [
                    {
                      "key": "level",
                      "value": "2"
                    },
                    {
                      "key": "register_country",
                      "value": "AE"
                    }
                  ],
                  "removingKeys": [
                    "company"
                  ],
                  "user": {
                    "appPlayerId": "cuid12345",
                    "id": "1234567890",
                    "name": "test-name",
                    "picture": "https://example.com"
                  }
                },
                "schema": {
                  "properties": {
                    "attributes": {
                      "description": "Atributos de usuário utilizados para personalização. Consulte a <a target=\"_blank\" href=\"https://developers.xsolla.com/pt/doc/login/features/user-attributes/#login_features_user_attributes\">documentação</a> para obter informações mais detalhadas.",
                      "items": {
                        "properties": {
                          "key": {
                            "description": "Nome do atributo.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Valor do atributo."
                          }
                        },
                        "required": [
                          "key",
                          "value"
                        ]
                      },
                      "type": "array"
                    },
                    "removingKeys": {
                      "description": "Lista de atributos que você deseja excluir. Se você especificar o mesmo atributo no parâmetro `attributes`, ele não será excluído.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "user": {
                      "description": "Dados do usuário (objeto).",
                      "properties": {
                        "appPlayerId": {
                          "$ref": "#/components/schemas/appPlayerId"
                        },
                        "id": {
                          "description": "ID de usuário.",
                          "type": "string"
                        },
                        "name": {
                          "description": "Nome de usuário.",
                          "type": "string"
                        },
                        "picture": {
                          "description": "Link ao avatar do usuário.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "user"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Retorna informações sobre o usuário."
          },
          "404": {
            "description": "Usuário não encontrado."
          }
        },
        "summary": "Validação de usuário na Web Shop",
        "tags": [
          "user-validation"
        ],
        "x-codeSamples": [
          {
            "label": "CURL",
            "lang": "cURL",
            "source": "curl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'accept: application/json' \\\n-H 'content-type: application/json' \\\n-d '{\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"country\": \"US\"\n    }\n}'"
          },
          {
            "label": "HTTP",
            "lang": "HTTP",
            "source": "POST /your/uri HTTP/1.1\nhost: your.hostname\naccept: application/json\ncontent-type: application/json\ncontent-length: 240\n\n{\n    \"settings\": {\n      \"project_id\": 18404,\n      \"merchant_id\": 2340\n    },\n    \"user\": {\n        \"id\": \"1234567\",\n        \"country\": \"US\"\n    }\n}"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "notification_type": {
        "description": "Tipo de notificação.",
        "type": "string"
      },
      "payment_account.country": {
        "description": "País da conta de pagamento. Por exemplo, o país do banco emissor do cartão ou o país especificado ao criar uma conta PayPal. Código de país de duas letras maiúsculas [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).",
        "type": "string"
      },
      "payment_account.id": {
        "description": "ID da conta de pagamento.",
        "type": "string"
      },
      "payment_account.name": {
        "description": "O nome da conta de pagamento no sistema de pagamento (exemplo: número do cartão de pagamento, e-mail).",
        "type": "string"
      },
      "payment_account.payment_method": {
        "description": "ID de método de pagamento.",
        "type": "integer"
      },
      "payment_account.type": {
        "description": "Tipo de conta de pagamento (exemplo: cartão, PayPal).",
        "type": "string"
      },
      "settings.merchant_id": {
        "description": "ID de comerciante.",
        "type": "integer"
      },
      "settings.project_id": {
        "description": "ID do projeto. Você pode encontrar esse parâmetro em sua [Conta de Distribuidor](https://publisher.xsolla.com/) ao lado do nome do projeto.",
        "type": "integer"
      },
      "user.country": {
        "description": "País do usuário. Código de país de duas letras maiúsculas, de acordo com o [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).",
        "type": "string"
      },
      "user.email": {
        "description": "E-mail do usuário.",
        "type": "string"
      },
      "user.id": {
        "description": "ID de usuário.",
        "type": "string"
      },
      "user.ip": {
        "description": "IP do usuário.",
        "type": "string"
      },
      "user.name": {
        "description": "Nome de usuário.",
        "type": "string"
      },
      "user.zip": {
        "description": "CEP ou código postal do usuário.",
        "type": "string"
      },
      "subscription.date_create": {
        "description": "Data de criação da assinatura. Data e hora de acordo com o [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
        "type": "string"
      },
      "subscription.date_end": {
        "description": "Data de término da assinatura. Data e hora de acordo com o [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
        "type": "string"
      },
      "subscription.plan_id": {
        "description": "ID do plano (externo se o plano foi criado via API).",
        "type": "string"
      },
      "subscription.product_id": {
        "description": "ID do produto (se enviado no token de acesso).",
        "type": "string"
      },
      "subscription.subscription_id": {
        "description": "ID de assinatura no banco de dados Xsolla.",
        "type": "integer"
      },
      "subscription.tags": {
        "description": "Rótulos do plano.",
        "items": {
          "type": "string"
        },
        "type": "array"
      },
      "subscription.date_next_charge": {
        "description": "Data da próxima cobrança. Data e hora de acordo com o [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).",
        "type": "string"
      },
      "subscription.is_gift": {
        "description": "Se a assinatura foi um presente. O parâmetro só é passado se o valor for `true`.",
        "type": "boolean"
      },
      "dispute-date": {
        "description": "Data da abertura da disputa de acordo com o padrão [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).",
        "type": "string"
      },
      "dispute-reason": {
        "description": "Motivo para a abertura da disputa. Consulte [documentation](/pt/payment-ui-and-flow/anti-fraud/chargeback/#payments_chargeback_reasons) para obter uma descrição dos grupos de motivos.",
        "enum": [
          "non_receipt",
          "not_as_described",
          "duplicate_processing",
          "paid_by_other_means",
          "incorrect_amount",
          "credit_not_processed",
          "general",
          "fraud",
          "cancelled_recurring",
          "cancelled_merchandise",
          "late_presentment",
          "no_authorization",
          "problem_with_remittance",
          "other"
        ],
        "type": "string"
      },
      "dispute-status": {
        "description": "Status da disputa.",
        "enum": [
          "new",
          "accepted",
          "no_actions_required",
          "won",
          "lost"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "accepted": "<b>Aceita</b>",
          "lost": "<b>Perdida</b>",
          "new": "<b>Nova</b>",
          "no_actions_required": "<b>Em progresso</b>",
          "won": "<b>Ganha</b>"
        }
      },
      "dispute-type": {
        "description": "Tipo de disputa.",
        "enum": [
          "1st_time_chargeback",
          "2nd_time_chargeback",
          "arbitration",
          "retrieval",
          "representment",
          "chargeback_reversal",
          "representment_reversal",
          "reimbursement",
          "dispute",
          "chargeback",
          "claim",
          "reimbursement_reversal",
          "inquiry",
          "other"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "1st_time_chargeback": "1º chargeback",
          "2nd_time_chargeback": "2º chargeback (pré-arbitragem).",
          "arbitration": "Resolvendo uma disputa entre o banco emissor e o comerciante quando o 1º chargeback e o 2º chargeback foram rejeitados.",
          "chargeback": "1º chargeback",
          "chargeback_reversal": "O chargeback foi revogado.",
          "claim": "Um disputa entre um cliente e um comerciante no PayPal.",
          "dispute": "Um titular de cartão solicitou dados de pagamento ao banco.",
          "inquiry": "Um titular de cartão solicitou dados de pagamento ao banco.",
          "other": "Utilizado para tipos de chargeback não cobertos por qualquer outro tipo.",
          "reimbursement": "O reembolso foi feito.",
          "reimbursement_reversal": "O chargeback foi revogado.",
          "representment": "A equipe de gerenciamento de chargebacks enviou evidências ao sistema de pagamento.",
          "representment_reversal": "O chargeback foi revogado.",
          "retrieval": "Um titular de cartão solicitou dados de pagamento ao banco."
        }
      },
      "date-create": {
        "description": "Data de pagamento.",
        "type": "string"
      },
      "external-id": {
        "description": "ID de transação externo. Consulte o [FAQs](/pt/doc/pay-station/references/faq/#faq_payments_q_new_transaction_external_id) para saber mais.",
        "type": "string"
      },
      "transaction-id": {
        "description": "ID de transação.",
        "format": "int64",
        "type": "integer"
      },
      "dispute-payment-method": {
        "description": "Método de pagamento.",
        "enum": [
          "credit_debit_card",
          "paypal"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "credit_debit_card": "Cartão de crédito ou débito",
          "paypal": "PayPal"
        }
      },
      "transaction-total-amount": {
        "description": "Quantia de pagamento.",
        "format": "float",
        "type": "number"
      },
      "currency": {
        "description": "Moeda. Código da moeda de três letras de acordo com o [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
        "type": "string"
      },
      "country_whc": {
        "description": "Objeto com dados sobre custos de retenção aplicados em países específicos devido a transações transfronteiriças.",
        "properties": {
          "amount": {
            "description": "Quantia.",
            "format": "float",
            "type": "number"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "percent": {
            "description": "Percentual da taxa de custo de retenção.",
            "format": "float",
            "type": "number"
          }
        },
        "type": "object"
      },
      "amount-float": {
        "description": "Preço em moeda real.",
        "format": "float",
        "type": "number"
      },
      "items.promotions": {
        "description": "Promoções aplicadas para itens específicos no pedido.\nA matriz é retornada nos seguintes casos:\n  - Uma promoção de desconto é configurada para um item específico.\n  - Um código promocional com a configuração **Desconto em itens selecionados** é aplicado.\n\nSe nenhuma promoção no nível de itens for aplicada, será retornada uma matriz vazia.",
        "items": {
          "properties": {
            "amount_with_discount": {
              "description": "Custo total dos itens com desconto.",
              "type": "string"
            },
            "amount_without_discount": {
              "description": "Custo total dos itens sem desconto.",
              "type": "string"
            },
            "sequence": {
              "description": "Ordem de aplicação de promoções.",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "items.sku": {
        "description": "ID do item único. Para itens com o tipo `game_key`, é usado um valor no formato `sku_drm`.",
        "type": "string"
      },
      "items.type": {
        "description": "Tipo de item.\nPara itens do tipo `bundle`, incluindo pacotes de moeda virtual, a matriz `items` exibirá:\n  - parâmetros do conjunto ou pacote de moeda virtual\n  - itens incluídos no conjunto ou moedas incluídas no pacote.\n  \nO tipo `value_point` é usado em operações de [pontos de fidelidade](/pt/solutions/loyalty-as-service/) – quando pontos são gastos ou concedidos.",
        "enum": [
          "virtual_good",
          "virtual_currency",
          "game_key",
          "bundle",
          "value_point"
        ],
        "type": "string"
      },
      "currency-type": {
        "description": "Tipo de moeda de pagamento. Para pedidos gratuitos, o valor `unknown` é especificado.",
        "enum": [
          "real",
          "virtual",
          "unknown",
          "loyalty_point"
        ],
        "type": "string",
        "x-enumDescriptions": {
          "loyalty_point": "pontos de fidelidade",
          "real": "moeda real",
          "unknown": "pedido gratuito",
          "virtual": "moeda virtual"
        }
      },
      "order.promotions": {
        "description": "Promoções aplicadas para o pedido inteiro.\nA matriz é retornada nos seguintes casos:\n  - Uma promoção afeta o valor total da compra, como um código promocional com a configuração **Desconto na compra**.\n  - Nenhum desconto é aplicado à compra, mas itens bônus são adicionados ao pedido. Nesse caso, os valores do custo com desconto ([amount_with_discount](/pt/webhooks/#operation/order-cancellation!path=order/promotions/amount_with_discount&t=request)) e sem desconto ([amount_without_discount](/pt/webhooks/#operation/order-cancellation!path=order/promotions/amount_without_discount&t=request)) são retornados e idênticos, já que nenhum desconto é aplicado.\n\nSe nenhuma promoção de nível de pedido for aplicada, é retornada uma matriz vazia.",
        "items": {
          "properties": {
            "amount_with_discount": {
              "description": "Custo total dos itens com desconto.",
              "type": "string"
            },
            "amount_without_discount": {
              "description": "Custo total dos itens sem desconto.",
              "type": "string"
            },
            "sequence": {
              "description": "Ordem de aplicação de promoções.",
              "type": "integer"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "user.phone": {
        "description": "Telefone do usuário.",
        "type": "string"
      },
      "order": {
        "description": "Objeto que contém informações sobre um pedido. Para receber essas informações, defina a opção **Adicionar objeto do pedido ao webhook** como **On** na [Conta de Distribuidor](https://publisher.xsolla.com/) na seção **Project settings &gt; Webhooks &gt; Advanced settings**.",
        "type": "object"
      },
      "locale": {
        "description": "Idioma do usuário. [Código de idioma](https://developers.xsolla.com/pt/doc/pay-station/features/localization/) de duas letras minúsculas.",
        "type": "string"
      },
      "available": {
        "description": "Quantidade restante de itens que o usuário pode comprar.\n\nPara exibir informações sobre o limite de compra no catálogo (ex.: \"7/10\"), passe o par `available` e `total`.",
        "type": "integer"
      },
      "total": {
        "description": "Quantidade máxima de itens que um único usuário pode comprar.\n\nPara exibir informações sobre o limite de compra no catálogo (ex.: \"7/10\"), passe o par `available` e `total`.",
        "exclusiveMinimum": 0,
        "type": "integer"
      },
      "quantity": {
        "deprecated": true,
        "description": "Quantidade de itens que um único usuário pode comprar. Para definir uma quantidade ilimitada, passe `null`. Para tornar o item indisponível para compra, mas mantê-lo visível no catálogo, passe o valor \"0\".\n\nSe você usar esse parâmetro, a informação do limite de compra não é exibida no catálogo. Para exibir informações sobre o limite de compra no catálogo (por exemplo, \"7/10\"), passe o par `available` e `total` em vez de `quantity`.",
        "type": "integer"
      },
      "bundle_content": {
        "description": "Matriz de objetos com conteúdo de pacote para exibição no catálogo. Ele pode ser usado apenas para o tipo de pacote [partner_side_content](https://developers.xsolla.com/pt/api/shop-builder/operation/admin-create-bundle/).",
        "items": {
          "properties": {
            "description": {
              "description": "Descrição do item para exibir no catálogo como parte do pacote. Se não for fornecido, será passado o valor `null`.",
              "maxLength": 255,
              "type": "string"
            },
            "image_url": {
              "description": "URL da imagem do item para exibição no catálogo como parte do pacote. Somente o protocolo HTTPS é suportado. Se não for fornecido, será passado o valor `null`.",
              "format": "uri",
              "maxLength": 255,
              "type": "string"
            },
            "name": {
              "description": "Nome do item para exibir no catálogo como parte do pacote. Se não for fornecido, será passada uma cadeia de caracteres vazia.",
              "maxLength": 255,
              "type": "string"
            },
            "quantity": {
              "default": 1,
              "description": "Quantidade do item no pacote.",
              "minimum": 1,
              "type": "integer"
            }
          },
          "type": "object"
        },
        "type": "array"
      },
      "date_from": {
        "description": "Data em que o item ficará disponível para venda. Formatado de acordo com o padrão [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).",
        "type": "string"
      },
      "date_until": {
        "description": "Data em que o item ficará indisponível para venda. Formatado de acordo com o padrão [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).",
        "type": "string"
      },
      "description": {
        "description": "Descrição do item para exibição no catálogo. Ele substitui a descrição armazenada em um item.",
        "maxLength": 255,
        "type": "string"
      },
      "image_url": {
        "description": "URL da imagem para exibição no catálogo. Ele substitui o URL da imagem armazenado em um item. Somente o protocolo HTTPS é suportado. Se o URL não estiver em conformidade com os requisitos, ele será ignorado.",
        "format": "uri",
        "maxLength": 255,
        "type": "string"
      },
      "json_attributes": {
        "description": "Um objeto JSON que contém atributos e valores de item. Ele substitui [custom_attributes](https://developers.xsolla.com/pt/webhooks/operation/successful-order-payment/#!path=items/0/custom_attributes&t=request) armazenado em um item. Se o JSON não estiver em conformidade com os requisitos ou for maior que o comprimento máximo, ele será ignorado.",
        "format": "json",
        "maxLength": 500,
        "type": "object"
      },
      "name": {
        "description": "Nome do item para exibição no catálogo. Ele substitui o nome armazenado em um item.",
        "maxLength": 255,
        "type": "string"
      },
      "sku": {
        "description": "O ID do item único especificado em sua Publisher Account. Você deve passar o `sku` ou `item_id`.",
        "type": "string"
      },
      "item_id": {
        "description": "ID de item único no lado de Xsolla. Você deve passar o `sku` ou o `item_id`.",
        "type": "integer"
      },
      "user.public_id": {
        "description": "ID de usuário público.",
        "type": "string"
      },
      "appPlayerId": {
        "description": "ID de usuário atribuído pelo dono do aplicativo no momento do registro (ID de usuário do cliente).\n<div lang=\"en\" class=\"note\"><strong>Observação</strong><br><br> A Xsolla passa esses dados no objeto <code>custom_parameters</code> da chamada para obter um token de pagamento.</div>",
        "type": "string"
      }
    },
    "responses": {
      "204": {
        "description": "Retorne para indicar o processamento bem-sucedido."
      },
      "400": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "error": {
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Retorne em caso de erro nas informações fornecidas (por exemplo, um parâmetro obrigatório ausente, falha na autorização, etc.).",
        "x-examples": {
          "application/json": {
            "INCORRECT_AMOUNT": {
              "summary": "Incorrect amount",
              "value": {
                "error": {
                  "code": "INCORRECT_AMOUNT",
                  "message": "Incorrect amount"
                }
              }
            },
            "INCORRECT_INVOICE": {
              "summary": "Incorrect invoice",
              "value": {
                "error": {
                  "code": "INCORRECT_INVOICE",
                  "message": "Incorrect invoice"
                }
              }
            },
            "INVALID_PARAMETER": {
              "summary": "Invalid parameter",
              "value": {
                "error": {
                  "code": "INVALID_PARAMETER",
                  "message": "Invalid parameter"
                }
              }
            },
            "INVALID_SIGNATURE": {
              "summary": "Invalid signature",
              "value": {
                "error": {
                  "code": "INVALID_SIGNATURE",
                  "message": "Invalid signature"
                }
              }
            },
            "INVALID_USER": {
              "summary": "Invalid user",
              "value": {
                "error": {
                  "code": "INVALID_USER",
                  "message": "Invalid user"
                }
              }
            }
          }
        }
      },
      "500": {
        "description": "Retorne para indicar erros temporários com seus servidores."
      },
      "400-payment": {
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "error": {
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              },
              "type": "object"
            }
          }
        },
        "description": "Retorne em caso de erro nas informações fornecidas (por exemplo, um parâmetro obrigatório ausente, falha na autorização, etc.). Nesse caso, o dinheiro do usuário é debitado, mas a compra falha. Para fazer um reembolso, entre em contato com o suporte ao cliente Xsolla via support@xsolla.com.",
        "x-examples": {
          "application/json": {
            "INCORRECT_AMOUNT": {
              "summary": "Incorrect amount",
              "value": {
                "error": {
                  "code": "INCORRECT_AMOUNT",
                  "message": "Incorrect amount"
                }
              }
            },
            "INCORRECT_INVOICE": {
              "summary": "Incorrect invoice",
              "value": {
                "error": {
                  "code": "INCORRECT_INVOICE",
                  "message": "Incorrect invoice"
                }
              }
            },
            "INVALID_PARAMETER": {
              "summary": "Invalid parameter",
              "value": {
                "error": {
                  "code": "INVALID_PARAMETER",
                  "message": "Invalid parameter"
                }
              }
            },
            "INVALID_SIGNATURE": {
              "summary": "Invalid signature",
              "value": {
                "error": {
                  "code": "INVALID_SIGNATURE",
                  "message": "Invalid signature"
                }
              }
            },
            "INVALID_USER": {
              "summary": "Invalid user",
              "value": {
                "error": {
                  "code": "INVALID_USER",
                  "message": "Invalid user"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Validação do usuário",
      "tags": [
        "user-validation"
      ]
    },
    {
      "name": "Pagamentos",
      "tags": [
        "payments"
      ]
    },
    {
      "name": "Serviços de jogos",
      "tags": [
        "combined-webhooks",
        "separate-webhooks",
        "personalization"
      ]
    },
    {
      "name": "Antifraude",
      "tags": [
        "anti-fraud"
      ]
    },
    {
      "name": "Assinaturas",
      "tags": [
        "subscriptions"
      ]
    }
  ]
}