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 e acesse a seção Items catalog > Subscriptions > 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_planvalor 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_idse 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 > Items catalog > 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
1curl -X 'POST' \
2'https://subscriptions.xsolla.com/api/user/v1/projects/{project_id}/subscriptions/manage?country=RU ' \
3 -H 'accept: application/json' \
4 -H 'Authorization: Bearer client_user_jwt'
5{
6 "settings": {
7 "ui": {
8 "size": "large",
9 "theme": "string",
10 "version": "desktop",
11 "desktop": {
12 "header": {
13 "is_visible": true,
14 "visible_logo": true,
15 "visible_name": true,
16 "type": "compact",
17 "close_button": true
18 }
19 },
20 "mobile": {
21 "mode": "saved_accounts",
22 "footer": {
23 "is_visible": true
24 },
25 "header": {
26 "close_button": true
27 }
28 },
29 "license_url": "string",
30 "mode": "user_account",
31 "user_account": {
32 "history": {
33 "enable": true,
34 "order": 1
35 },
36 "payment_accounts": {
37 "enable": true,
38 "order": 1
39 },
40 "info": {
41 "enable": true,
42 "order": 1
43 },
44 "subscriptions": {
45 "enable": true,
46 "order": 1
47 }
48 }
49 },
50 "currency": "str",
51 "locale": "st",
52 "external_id": "string",
53 "payment_method": 1,
54 "return_url": "string",
55 "redirect_policy": {
56 "redirect_conditions": "none",
57 "delay": 0,
58 "status_for_manual_redirection": "none",
59 "redirect_button_caption": "string"
60 }
61 }
62}
Exemplo de resposta:
- json
1{
2 "link_to_ps": "https://secure.xsolla.com/paystation2/?access_token=<access_token>"
3}
Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.