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 preferir gerenciar 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, você também precisa oferecer uma opção para os usuários cancelarem 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 Play Store, onde eles podem ver e gerenciar as assinaturas.

Cancelamentos iniciados pelo desenvolvedor

Como desenvolvedor, talvez você também precise acionar cancelamentos no seu back-end. A API purchases.subscriptions.cancel permite cancelar a compra de uma assinatura. Por exemplo, você pode usar esse método para desativar um serviço legado. O cancelamento não gera reembolso, e o usuário mantém o acesso até o fim do período de faturamento atual.

Com esse método, é possível especificar os seguintes tipos de cancelamentos no parâmetro de corpo da solicitação cancellationType:

  • USER_REQUESTED_STOP_RENEWALS: cancela a assinatura como se os usuários tivessem feito o cancelamento na Play Store. As parcelas vão continuar sendo cobradas pelo restante do período de fidelidade atual. Na Play Store, os usuários podem restaurar a assinatura antes que ela expire ou assinar novamente depois que ela expirar, se essa opção estiver 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 assinar novamente na Play Store, mas você pode permitir que eles assinem de novo no seu 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 querer fornecer um fluxo de cancelamento no app personalizado. Com base na sua 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 API purchases.subscriptions.cancel e defina o parâmetro de solicitação cancellationType com 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 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_RENEWAL"
}

Permitir que os usuários assinem de novo 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 de novo apenas no seu aplicativo

Se você definiu o parâmetro cancellationType como DEVELOPER_REQUESTED_STOP _PAYMENTS ou não o definiu, os usuários não poderão restaurar a assinatura na Central de assinaturas do Google Play.cancellationType No entanto, os usuários podem fazer uma nova 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 direito de uma assinatura usando o método subscriptionsv2.defer. Quando você adia uma assinatura com complementos, todos os itens dela são adiados pelo mesmo período. Durante o período de adiamento, o usuário continua assinante do conteúdo, mas não é cobrado pelo tempo extra. Quando você adia o faturamento de uma assinatura, as informações de status são atualizadas de acordo e aparecem 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:

  • Oferecer aos usuários acesso sem custos como uma oferta especial, por exemplo, oferecendo uma semana sem custo financeiro para assinantes atuais que preencherem uma pesquisa de feedback.
  • Ofereça acesso sem custo financeiro aos clientes como uma ação de atendimento ao cliente, por exemplo, após uma interrupção prolongada que possa 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, chame a API novamente antes da nova data de expiração.

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 veicular uma promoção para incentivar a prática de exercícios regulares em fevereiro.

  2. Eles decidiram oferecer mais um mês de serviço a qualquer assinante que treinar 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 concluíram o desafio em fevereiro.

  4. Esses usuários ganham um mês extra de vídeos de exercícios regulares sem custo financeiro, e eles contam para todos os amigos como o FitnessGoals ajuda a manter a saúde.

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 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 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 vai acionar uma Notificação do desenvolvedor em tempo real SUBSCRIPTION_REVOKED. Leia o guia de gerenciamento do ciclo de vida de assinaturas, seção "Revogações", para saber como lidar com esses eventos.

Exemplo:

  1. Para comemorar o início da nova Copa do Mundo, o app de e-sports Football-Not-Soccer decidiu 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 camisetas 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 Google 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 deve processar esses cancelamentos conforme descrito em Revogações.

Exemplo:

  • Comprar com o token de compra 1a2b3c4d5e6f7g8h9i0j
  • App 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 30 dias com renovação automática do plano mensal de streaming do SuperMovies. Maria teve alguns problemas técnicos que a impediram de acessar o conteúdo. Ela entra em contato com o atendimento ao cliente no terceiro dia 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 100% do valor da assinatura de volta e que não está mais inscrita no plano.

Reembolsos proporcionais

Se você precisar encerrar uma assinatura e reembolsar parcialmente o tempo restante de direito, emita 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 e está satisfeita. No 15º dia do ciclo de faturamento, Maria entra em contato com o atendimento ao cliente para informar que vai morar no 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 cerca de 50% do valor da assinatura de volta e que o acesso ao serviço será encerrado imediatamente.