Como permitir que um usuário altere um plano de assinatura
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.
- 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
Como obtê-lo
- Abra seu projeto na Conta de Distribuidor.
- Clique em Subscriptions na barra lateral e vá para a seção Settings.
- Na seção Changing plan, defina a opção Ability to choose a different plan como On.
- 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.
- 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.
- Ao abrir a interface de pagamento, use:
- chamada de API Criar token do lado do servidor
- para obter um link para abrir uma interface de pagamento se você usar o Xsolla Login em seu projeto
Abrindo a interface de pagamento por meio da chamada de API Criar token do lado do servidor
- Obtenha um token para abrir a interface de pagamento passando o seguinte ao método:
change_plan
valor no parâmetropurchase.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.
- 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:
- Use
Register new user eAuth by username , e as chamadas de API de senha se seu aplicativo usar autorização de login e senha. - Use a chamada de API
Auth via social network se seu aplicativo usar autorização por meio de redes sociais.
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âmetro | Tipo | Descrição |
---|---|---|
| string | Obrigatório. O ID externo do plano de assinatura. Você pode encontrá-lo na seção Conta de Distribuidor > Subscriptions > Subscription Plans. |
| object | Configurações personalizadas do projeto (objeto). |
| object | Configurações da interface (objeto). |
| string | Tamanho da interface de pagamento. Pode ser:
|
| string | Tema da interface de pagamento. Pode ser default , default_dark ou ID de tema personalizado. |
| string | Tipo de dispositivo. Pode ser desktop (padrão) ou mobile . |
| object | Configurações de interface para a versão desktop (objeto). |
| object | Configurações de cabeçalho (objeto). |
| boolean | Se 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. |
| boolean | Se o cabeçalho deve ser exibido na interface de pagamento ou não. |
| string | Aparê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 . |
| boolean | Se true , o cabeçalho mostra seu logotipo (primeiro forneça a imagem ao seu Gerente de Sucesso do Cliente). |
| boolean | Se o nome do projeto no cabeçalho deve ser exibido ou não. |
| string | Como mostrar o cabeçalho. Pode ser compact (oculta o nome do projeto e o ID do usuário) ou normal (padrão). |
| string | Um usuário só pode pagar usando métodos de pagamento salvos. Pode ser saved_accounts . |
| boolean | Se o rodapé na versão móvel da interface de pagamento deve ser oculto ou não. |
| boolean | Se 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. |
| string | Modo 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. |
| string | Moeda de pagamento preferida. Código de moeda de três letras ISO 4217. |
| string | ID da transação no jogo. Deve ser único para cada pagamento de usuário. |
| integer | ID do método de pagamento. Você pode obter a lista de IDs de métodos de pagamento na Conta de Distribuidor. |
| string | Pá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. |
| object | Configurações de política de redirecionamento (objeto). |
| string | Um 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 | integer | Atraso (em segundos) após o qual um usuário é redirecionado automaticamente para o URL de retorno. |
| string | Um 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 . |
| string | Texto no botão para redirecionamento manual. |
- curl
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:
- javascript
{
"link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
}
Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.