Talvez seja necessário realizar ações de gerenciamento em assinaturas ou compras únicas como parte das atividades diárias. Por exemplo, talvez o atendimento ao cliente precise emitir reembolsos totais ou parciais para os usuários, ou talvez seja necessário revogar os direitos em determinados casos. É possível gerenciar pedidos no Play Console ou, se você quiser fazer isso no seu próprio sistema, use a API Google Play Developer.
Cancelar assinaturas
Os cancelamentos de assinaturas podem ser iniciados por usuários ou desenvolvedores.
Cancelamentos iniciados pelo usuário
Os usuários podem cancelar uma assinatura do Google Play a qualquer momento usando a Play Store. Se aplicável, também é necessário oferecer aos usuários uma opção para cancelar as assinaturas no app e no site.
A maneira mais fácil de permitir que os usuários cancelem voluntariamente é fornecer links diretos no app para a Play Store, onde eles podem conferir e gerenciar as assinaturas.
Cancelamentos iniciados por desenvolvedores
Como desenvolvedor, talvez você também precise acionar cancelamentos no seu back-end.
A API purchases.subscriptions.cancel
permite cancelar uma compra de assinatura.
Por exemplo, você pode usar esse método para desativar um serviço legado.
O cancelamento de uma assinatura não gera reembolso, e o usuário mantém o acesso
até o fim do período de faturamento atual.
Esse método permite especificar os seguintes tipos de cancelamentos no
parâmetro do corpo da solicitação cancellationType
:
USER_REQUESTED_STOP_RENEWALS: cancela a assinatura como se os usuários tivessem cancelado na Play Store. Os pagamentos em parcelas vão continuar pelo restante do período de compromisso atual. Na Play Store, os usuários podem restaurar a assinatura antes que ela expire ou renovar a assinatura após o vencimento, se o plano básico estiver ativado.
DEVELOPER_REQUESTED_STOP_PAYMENTS: cancela a assinatura e impede outros pagamentos. Os usuários não podem restaurar ou assinar novamente a assinatura na Play Store, mas você pode permitir que eles assinem novamente no app.
Permitir que os usuários restaurem assinaturas que ainda não expiraram
Em alguns casos, pode ser útil permitir que os usuários restaurem assinaturas não expiradas na central de assinaturas do Google Play depois que você acionar o cancelamento como desenvolvedor. Por exemplo, você pode fornecer um fluxo de cancelamento personalizado no app. Com base na lógica de negócios, você pode decidir quais cancelamentos acionados pelo back-end podem ser restaurados pelos usuários.
Para indicar que um usuário pode restaurar o cancelamento, emita uma solicitação POST
para a API purchases.subscriptions.cancel
e defina o parâmetro de solicitação cancellationType
para o valor USER_REQUESTED_STOP_RENEWAL
.
Exemplo:
- Token de compra da assinatura
1a2b3c4d5e6f7g8h9i0j
- Nome do pacote do app
com.your.app
- ID da assinatura
your-subscription-product
Solicitação POST HTTP:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel
Corpo da solicitação:
{
"cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}
Permitir que os usuários renovem assinaturas expiradas
Para permitir a renovação de uma assinatura expirada, ative
a opção Renovar assinatura no plano básico da assinatura e
cancele a assinatura definindo o parâmetro cancellationType
como o
valor USER_REQUESTED_STOP_RENEWAL
.
Permitir que os usuários assinem novamente apenas no seu app
Se você tiver definido o parâmetro cancellationType
como DEVELOPER_REQUESTED_STOP
_PAYMENTS
ou não tiver definido o parâmetro cancellationType
, os usuários não poderão
restaurar a assinatura na Central de assinaturas do Google Play. No entanto, os usuários podem
se inscrever novamente para a assinatura pelo app, se necessário.
Essa ação aciona uma notificação do desenvolvedor em tempo real
SUBSCRIPTION_CANCELED
. Processe esses cancelamentos conforme descrito em
Cancelamentos.
Adiar o faturamento
Use subscriptions.defer
para estender o período de direito de uma assinatura. Durante o período de adiamento,
o usuário continua assinando o conteúdo, mas não recebe cobranças pelo tempo
extra. Quando você adia o faturamento de uma assinatura, as informações de status são
atualizadas e aparecem no campo expiryTime
nas
informações de status da compra:
- Para assinaturas recorrentes ativas, o faturamento diferido estende a próxima data de renovação.
- Para planos pré-pagos, o faturamento diferido estende o tempo de expiração.
Confira alguns exemplos de como usar o faturamento diferido:
- Ofereça aos usuários acesso sem custo como uma oferta especial, por exemplo, uma semana de uso sem custo financeiro para assinantes que preencherem uma pesquisa de feedback.
- Ofereça aos clientes acesso sem custo como uma ação de atendimento ao cliente, por exemplo, após uma interrupção prolongada que pode ter afetado a capacidade de usar seu serviço.
O faturamento pode ser adiado de um dia a um ano por chamada de API. Para adiar ainda mais o fim do direito de acesso, chame a API novamente antes da nova data de validade.
Essa ação aciona uma notificação do desenvolvedor em tempo real
SUBSCRIPTION_DEFERRED
. Consulte Adiar o faturamento de um assinante em Sobre as assinaturas para saber como lidar com esses eventos.
Exemplo:
O serviço de streaming FitnessGoals quer fazer uma promoção para incentivar a prática de exercícios regulares em fevereiro.
Eles decidem oferecer um mês adicional de serviço a qualquer assinante que se exercite com o FitnessGoals pelo menos 10 vezes durante o mês de fevereiro.
Eles rastreiam os resultados do desafio e, em 1º de março, chamam a API
subscriptions.defer
para cada compra de assinatura ativa pertencente a usuários que atenderam ao desafio em fevereiro.Esses usuários têm o benefício de um mês extra de vídeos de exercícios regulares sem custo financeiro, e contam a todos os amigos como o FitnessGoals ajuda a manter a saúde.
Emitir reembolsos e revogar
Há muitas situações em que você pode emitir um reembolso ou revogar o acesso a uma assinatura ou compra única.
Reembolsar totalmente um pedido pelo ID
Com a API orders.refund
, é possível emitir reembolsos totais para qualquer pedido em até três anos após a compra.
O método orders.refund
recebe um parâmetro de revogação que indica se o
acesso precisa ser revogado ou não, além de fornecer o reembolso.
Se você emitir uma revogação com a chamada de reembolso para compra de assinatura, a
assinatura será encerrada imediatamente e uma
Notificação do desenvolvedor em tempo real SUBSCRIPTION_REVOKED
será acionada. Leia a seção de revogações
do guia de gerenciamento do ciclo de vida da assinatura
para saber como processar esses eventos.
Exemplo:
Para comemorar o início da nova Copa do Mundo, o app de e-sports Football-Not-Soccer decide sortear camisas virtuais sem custo financeiro para todos os usuários que comprarem novos kits de times nas primeiras 24 horas.
O Football-Not-Soccer usa a API
orders.refund
sem transmitir um parâmetro de revogação para reembolsar as compras de camisas aos vencedores.
Revogar e reembolsar uma assinatura por token de compra
Em alguns casos, talvez seja necessário revogar o acesso à assinatura de um usuário
e oferecer um reembolso. O Play Faturamento oferece métodos de revogação, incluindo reembolsos
totais e proporcionais pela API
subscriptionsv2.revoke
. Com esse endpoint, é possível especificar revocationContext
para determinar como o reembolso é calculado.
Essa ação aciona uma notificação do desenvolvedor em tempo real
SUBSCRIPTION_REVOKED
. Seu app precisa processar esses cancelamentos conforme descrito em
Revogações.
Exemplo:
- Comprar com o token de compra
1a2b3c4d5e6f7g8h9i0j
- Aplicativo com o nome do pacote
com.your.app
- Intenção de emitir um reembolso proporcional
Solicitação POST HTTP:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke
Corpo da solicitação:
{
"revocationContext": {
"proratedRefund": {}
}
}
Reembolsos totais
Se você precisar encerrar uma assinatura e reembolsar o valor total do
período de faturamento atual, faça um reembolso total. Use a função
purchases.subscriptionsv2.revoke
e defina "fullRefund": {}
como o tipo de reembolso.
Exemplo:
Maria tem uma assinatura de 30 dias com renovação automática do plano mensal de streaming do SuperMovies. Maria encontrou alguns problemas técnicos que impedem o acesso ao conteúdo. Ela entra em contato com o atendimento ao cliente no dia 3 do ciclo de faturamento informando que nunca teve acesso à assinatura.
O atendimento ao cliente localiza os detalhes da compra da assinatura de Maria no sistema e aciona uma chamada para
purchases.subscriptionsv2.revoke
solicitando um reembolso total.O atendimento ao cliente informa a Maria que ela vai receber o reembolso de 100% do preço da assinatura e que ela não está mais inscrita no plano.
Reembolsos proporcionais
Se você precisar encerrar uma assinatura e reembolsar parcialmente o tempo restante
de acesso, faça um reembolso proporcional. Use a função
purchases.subscriptionsv2.revoke
e defina "proratedRefund": {}
como o tipo de reembolso.
Exemplo:
Maria tem uma assinatura de 30 dias com renovação automática do plano mensal de streaming do SuperMovies. Ela usa o serviço há algum tempo. Maria entra em contato com o atendimento ao cliente no dia 15 do ciclo de faturamento informando que está se mudando para o exterior e não poderá mais usar o serviço a partir do dia seguinte.
O atendimento ao cliente localiza os detalhes da compra da assinatura de Maria no sistema e aciona uma chamada para
purchases.subscriptionsv2.revoke
solicitando um reembolso proporcional.O atendimento ao cliente informa a Maria que ela vai receber um reembolso de cerca de 50% do preço da assinatura e que o acesso ao serviço será encerrado imediatamente.