Gerenciar assinaturas e compras únicas

Talvez seja necessário realizar ações de gerenciamento em assinaturas ou compras únicas como parte das atividades comerciais diárias. Por exemplo, o atendimento ao cliente pode precisar emitir reembolsos totais ou parciais para os usuários, ou talvez seja necessário revogar direitos em determinados casos. É possível gerenciar pedidos no Play Console ou, se quiser gerenciá-los 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 Google Play Store. Se aplicável, você também precisa oferecer uma opção para que os usuários cancelem as assinaturas no app e no site.

A maneira mais fácil de permitir que os usuários cancelem voluntariamente é fornecendo links diretos no app para a Google Play Store, onde eles podem visualizar e gerenciar as assinaturas.

Cancelamentos iniciados pelo desenvolvedor

Como desenvolvedor, você também pode precisar acionar cancelamentos no back-end. A purchases.subscriptions.cancel API 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 emite um reembolso, e o usuário mantém o acesso até o final 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 Google Play Store. Todos os pagamentos parcelados vão continuar pelo restante do período de fidelidade atual. Na Google Play Store, os usuários podem restaurar a assinatura antes que ela expire ou fazer uma nova assinatura após a expiração, se ativada para o plano básico.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: cancela a assinatura e impede pagamentos futuros. Os usuários não podem restaurar ou fazer uma nova assinatura na Google Play Store, mas você pode permitir que eles assinem novamente no app.

Permitir que os usuários restaurem assinaturas não expiradas

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 no 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 purchases.subscriptions.cancel API e defina o parâmetro de solicitação cancellationType como o valor USER_REQUESTED_STOP_RENEWALS.

Exemplo:

  • Token de compra da assinatura 1a2b3c4d5e6f7g8h9i0j
  • Nome do pacote do aplicativo com.your.app
  • ID da assinatura your-subscription-product

Solicitação HTTP POST:

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_RENEWALS"
}

Permitir que os usuários façam uma nova assinatura de assinaturas expiradas

Para permitir a nova assinatura de uma assinatura expirada, você deve ativar a opção Assinar de novo no plano básico da assinatura e cancelar a assinatura definindo o parâmetro cancellationType como o valor USER_REQUESTED_STOP_RENEWALS.

Permitir que os usuários façam uma nova assinatura apenas no aplicativo

Se você definiu o parâmetro cancellationType como DEVELOPER_REQUESTED_STOP_PAYMENTS ou não o definiu 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 na 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

É possível estender o período de direitos de uma assinatura usando o subscriptionsv2.defer método. Ao adiar uma assinatura com complementos, todos os itens da assinatura são adiados pela mesma duração. Durante o período de adiamento, o usuário permanece assinante do conteúdo, mas não é cobrado pelo tempo extra. Ao adiar o faturamento de uma assinatura, as informações de status são atualizadas de acordo e refletidas no campo expiryTime nas informações de status da compra:

  • Para assinaturas recorrentes ativas, o faturamento adiado estende a próxima data de renovação.
  • Para planos pré-pagos, o faturamento adiado estende o prazo de validade.

Confira alguns exemplos de como usar o faturamento adiado:

  • Ofereça aos usuários acesso sem custo financeiro como uma oferta especial, por exemplo, oferecendo uma semana sem custo financeiro aos assinantes atuais para preencher uma pesquisa de feedback.
  • Ofereça aos clientes acesso sem custo financeiro como uma ação de atendimento ao cliente, por exemplo, após uma interrupção prolongada que possa ter afetado a capacidade de usar o 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, 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 assinaturas para saber como processar esses eventos.

Exemplo:

  1. O serviço de streaming FitnessGoals quer veicular uma promoção para incentivar exercícios regulares em fevereiro.

  2. A empresa decide oferecer mais um mês de serviço a qualquer assinante que se exercitar com o FitnessGoals pelo menos 10 vezes durante o mês de fevereiro.

  3. Eles acompanham os resultados do desafio e, em 1º de março, chamam o método subscriptionsv2.defer para cada compra de assinatura ativa pertencente a usuários que atenderam ao desafio em fevereiro.

  4. Esses usuários recebem o benefício de um mês extra de vídeos de exercícios regulares sem custo financeiro, e os usuários contam a todos os amigos como o FitnessGoals os ajuda a se manterem saudáveis.

Emitir reembolsos e revogações

Há muitas situações em que você pode querer emitir um reembolso ou revogar o acesso a uma assinatura ou compra única.

Reembolsar totalmente um pedido por ID

Com a orders.refund API, é 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 deve ser revogado, além de fornecer o reembolso.

Se você emitir uma revogação com a chamada de reembolso para compra de assinatura, ela será encerrada imediatamente e acionará uma notificação do desenvolvedor em tempo real SUBSCRIPTION_REVOKED. Leia o guia de gerenciamento do ciclo de vida da assinatura na seção Revogações para saber como processar esses eventos.

Exemplo:

  1. 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.

  2. O Football-Not-Soccer usa a orders.refund API 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

Para determinados casos de uso, talvez seja necessário revogar o acesso à assinatura de um usuário e fornecer um reembolso. O Play Faturamento oferece métodos de revogação, incluindo reembolsos totais e proporcionais, pela subscriptionsv2.revoke API. 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 deve processar esses cancelamentos conforme descrito em Revogações.

Exemplo:

  • Compra com token de compra 1a2b3c4d5e6f7g8h9i0j
  • Aplicativo com o nome do pacote com.your.app
  • Intenção de emitir um reembolso proporcional

Solicitação HTTP POST:

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, emita um reembolso total. Use a função purchases.subscriptionsv2.revoke e defina "fullRefund": {} como o tipo de reembolso.

Exemplo:

  1. Maria tem uma assinatura de renovação automática de 30 dias do plano mensal de streaming do SuperMovies. Maria encontrou alguns problemas técnicos que a impedem de acessar o conteúdo. Ela entra em contato com o atendimento ao cliente no terceiro dia do ciclo de faturamento, afirmando que nunca teve acesso à assinatura.

  2. 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.

  3. O atendimento ao cliente informa a Maria que ela receberá 100% do preço da assinatura reembolsado e que não está mais inscrita no plano.

Reembolsos proporcionais

Se você precisar encerrar uma assinatura e reembolsar parcialmente o tempo de direito restante, emita um reembolso proporcional. Use a purchases.subscriptionsv2.revoke função e defina "proratedRefund": {} como o tipo de reembolso.

Exemplo:

  1. Maria tem uma assinatura de renovação automática de 30 dias 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 15º dia do ciclo de faturamento, afirmando que está se mudando para o exterior e não poderá mais usar o serviço a partir do dia seguinte.

  2. 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.

  3. O atendimento ao cliente informa a Maria que ela receberá cerca de 50% do preço da assinatura reembolsado e que o acesso ao serviço foi encerrado imediatamente.