Como permitir que um usuário altere um plano de assinatura

Observação
Se você quiser permitir que os usuários alterem o plano em seu projeto, você precisa configurar o funcionamento correto da interface de pagamento. Para fazer isso, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.
Você pode permitir que os usuários alterem o plano de assinatura no período atual ou no próximo período e também permitir que eles alterem o plano várias vezes ao dia.

Como funciona

  • Ao escolher um novo plano, é feito um reembolso no saldo do usuário pelo período não utilizado da assinatura atual.
  • O pagamento do novo plano de assinatura é feito inteiramente a partir do saldo do usuário. Se o saldo for insuficiente, um pagamento adicional é feito por qualquer um dos métodos de pagamento permitidos no projeto.
  • Ao alterar o plano, os fundos são debitados imediatamente após a confirmação do pagamento, mesmo que o projeto esteja configurado para alterar o plano a partir do próximo período de cobrança.
  • Se a moeda do novo plano for diferente da moeda do plano atual, a compra do novo plano será feita com uma conversão de moeda.

A alteração do plano não será possível se:
  • o usuário já tem uma assinatura ativa com o plano para o qual o plano atual está sendo alterado
  • a assinatura que o usuário deseja alterar não está no status Active
  • o plano de assinatura que o usuário deseja alterar é do tipo Plano Vitalício: tal assinatura só pode ser cancelada dentro do período de reembolso especificado
Observação
Se os grupos de planos estiverem configurados em seu projeto, a alteração de plano só poderá ser feita dentro de um grupo. Para obter mais informações sobre como os grupos funcionam, consulte as instruções Como configurar produtos e grupos de planos baseados em assinaturas.

Como obtê-lo

  1. Abra seu projeto na Conta de Distribuidor.
  2. Clique em Subscriptions na barra lateral e vá para a seção Settings.
  3. Na seção Changing plan, defina a opção Ability to choose a different plan como On.
  4. As alterações de plano são permitidas a partir do próximo período por padrão. Para permitir a alteração do plano no período atual, selecione Now. Se você selecionar essa opção, o plano será alterado imediatamente após a confirmação do pagamento.
  5. Para permitir alterações de plano mais de uma vez por dia, defina a opção Ability to choose a different plan several times on the same day como On.
  6. Ao abrir a interface de pagamento, use:

Abrindo a interface de pagamento por meio da chamada de API Criar token do lado do servidor

  1. Obtenha um token para abrir a interface de pagamento passando o seguinte ao método:
    • change_plan valor no parâmetro purchase.subscription.operation.
    • ID do novo plano no parâmetro purchase.subscription.plan_id.
    • ID do produto baseado em assinatura no parâmetro purchase.subscription.product_id se você estiver usando produtos baseados em assinatura. Para obtê-lo, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.
  2. Abra a interface de pagamento de uma das seguintes maneiras:

Abrindo a interface de pagamento na página de gerenciamento de assinaturas usando a chamada de API do lado do cliente

Se o Xsolla Login estiver configurado em seu projeto, você poderá usar a chamada de API do lado do cliente para obter um link para abrir a interface de pagamento. O link retornado na resposta permite que você abra a interface de pagamento na página de gerenciamento de assinaturas, onde os usuários podem selecionar uma assinatura ativa e alterá-la.

Para fazer isso, no lado do cliente do seu aplicativo, implemente um link à interface de pagamento usando uma solicitação HTTP POST: https://subscriptions.xsolla.com​/api/user/v1/projects/{project_id}/subscriptions/manage. A solicitação deve conter um cabeçalho Authorization: Bearer <client_user_jwt>, onde <client_user_jwt> é o JSON Web Token (JWT) do usuário — um token exclusivo codificado em Base64. Para obter o token:

Especifique a ID do projeto como o parâmetro de caminho projectId. Você pode encontrar esse parâmetro em sua Conta de Distribuidor ao lado do nome do projeto. Especifique country como parâmetro de consulta — a designação de duas letras do país do usuário de acordo com o padrão ISO 3166-1 alfa-2. Afeta a escolha de localidade e moeda. Se esse parâmetro não for passado, o país será determinado pelo endereço IP do usuário.

Passe parâmetros adicionais para personalização, se necessário.

Parâmetros do corpo da solicitação:

ParâmetroTipoDescrição
plan_external_id
stringObrigatório. O ID externo do plano de assinatura. Você pode encontrá-lo na seção Conta de Distribuidor > Subscriptions > Subscription Plans.
settings
objectConfigurações personalizadas do projeto (objeto).
settings.ui
objectConfigurações da interface (objeto).
settings.ui.size
stringTamanho da interface de pagamento. Pode ser:
  • small: o menor tamanho possível da interface de pagamento. Use este valor quando o tamanho da janela for estritamente limitado (dimensões: 620 x 630 px)
  • medium: tamanho recomendado. Use esse valor para exibir a interface de pagamento em uma lightbox (dimensões: 740 x 760 px)
  • large: o tamanho ideal para exibir a interface de pagamento em uma nova janela ou aba (dimensões: 820 x 840 px)
settings.ui.theme
stringTema da interface de pagamento. Pode ser default, default_dark ou ID de tema personalizado.
settings.ui.version
stringTipo de dispositivo. Pode ser desktop (padrão) ou mobile.
settings.ui.desktop
objectConfigurações de interface para a versão desktop (objeto).
settings.ui.desktop.header
objectConfigurações de cabeçalho (objeto).
settings.ui.desktop.header.close_button
booleanSe deseja mostrar um botão Fechar na Pay Station para desktop ou não. O botão fecha a Pay Station e redireciona o usuário para o URL especificado no parâmetro settings.return_url. false por padrão.
settings.ui.desktop.header.is_visible
booleanSe o cabeçalho deve ser exibido na interface de pagamento ou não.
settings.ui.desktop.header.is_visible.type
stringAparência do cabeçalho. Pode ser compact (caso em que o nome do jogo e ID do usuário não será exibido no cabeçalho) ou normal.
booleanSe true, o cabeçalho mostra seu logotipo (primeiro forneça a imagem ao seu Gerente de Sucesso do Cliente).
settings.ui.desktop.header.visible_name
booleanSe o nome do projeto no cabeçalho deve ser exibido ou não.
settings.ui.desktop.header.type
stringComo mostrar o cabeçalho. Pode ser compact (oculta o nome do projeto e o ID do usuário) ou normal (padrão).
settings.ui.mobile.mode
stringUm usuário só pode pagar usando métodos de pagamento salvos. Pode ser saved_accounts.
booleanSe o rodapé na versão móvel da interface de pagamento deve ser oculto ou não.
settings.ui.mobile.header.close_button
booleanSe deseja mostrar um botão Fechar na Pay Station para dispositivos móveis ou não. O botão fecha a Pay Station e redireciona o usuário para o URL especificado no parâmetro settings.return_url. false por padrão.
settings.ui.mode
stringModo de interface na Pay Station. Pode ser user_account apenas: o cabeçalho contém apenas o menu de navegação da conta e o usuário não pode selecionar um produto ou fazer um pagamento. Esse modo só está disponível na versão para desktop.
settings.currency
stringMoeda de pagamento preferida. Código de moeda de três letras ISO 4217.
settings.external_id
stringID da transação no jogo. Deve ser único para cada pagamento de usuário.
settings.payment_method
integerID do método de pagamento. Você pode obter a lista de IDs de métodos de pagamento na Conta de Distribuidor ou usando a chamada de API Get payment methods.
settings.return_url
stringPágina para redirecionar o usuário após o pagamento. Parâmetros user_id, foreigninvoice, invoice_id e status serão adicionados automaticamente ao link.
settings.redirect_policy
objectConfigurações de política de redirecionamento (objeto).
settings.redirect_policy.redirect_conditions
stringUm status de pagamento que redireciona o usuário para um URL de retorno após fazer um pagamento. Pode ser none, successful, successful_or_canceled ou any.
settings.redirect_policy.delay
integerAtraso (em segundos) após o qual um usuário é redirecionado automaticamente para o URL de retorno.
settings.redirect_policy.status_for_manual_redirection
stringUm status de pagamento que redireciona o usuário para um URL de retorno após fazer um pagamento. Pode ser none, successful, successful_or_canceled ou any.
settings.redirect_policy.redirect_button_caption
stringTexto no botão para redirecionamento manual.
Exemplo de solicitação:
Copy
Full screen
Small screen
curl -X 'POST' \
'https://subscriptions.xsolla.com​/api/user/v1/projects/{project_id}/subscriptions/manage?country=RU  ' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer client_user_jwt'
{
  "settings": {
    "ui": {
      "size": "large",
      "theme": "string",
      "version": "desktop",
      "desktop": {
        "header": {
          "is_visible": true,
          "visible_logo": true,
          "visible_name": true,
          "type": "compact",
          "close_button": true
        }
      },
      "mobile": {
        "mode": "saved_accounts",
        "footer": {
          "is_visible": true
        },
        "header": {
          "close_button": true
        }
      },
      "license_url": "string",
      "mode": "user_account",
      "user_account": {
        "history": {
          "enable": true,
          "order": 1
        },
        "payment_accounts": {
          "enable": true,
          "order": 1
        },
        "info": {
          "enable": true,
          "order": 1
        },
        "subscriptions": {
          "enable": true,
          "order": 1
        }
      }
    },
    "currency": "str",
    "locale": "st",
    "external_id": "string",
    "payment_method": 1,
    "return_url": "string",
    "redirect_policy": {
      "redirect_conditions": "none",
      "delay": 0,
      "status_for_manual_redirection": "none",
      "redirect_button_caption": "string"
    }
  }
}

Exemplo de resposta:

Copy
Full screen
Small screen
{
  "link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
Este artigo foi útil?
Obrigado!
Podemos melhorar alguma coisa? Mensagem
Que pena ouvir isso
Explique porque este artigo não foi útil para você. Mensagem
Obrigado pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.
Avalie esta página
Avalie esta página
Podemos melhorar alguma coisa?

Não quero responder

Obrigado pelo seu feedback!
Última atualização: 22 de Janeiro de 2024

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

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