Gerenciar assinaturas e compras únicas

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:

  1. O serviço de streaming FitnessGoals quer fazer uma promoção para incentivar a prática de exercícios regulares em fevereiro.

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

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

  4. 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:

  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 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:

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

  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 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:

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

  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 vai receber um reembolso de cerca de 50% do preço da assinatura e que o acesso ao serviço será encerrado imediatamente.