As compras de assinaturas podem passar por vários estados diferentes durante o ciclo de vida. Isso depende de muitos fatores, incluindo comportamento de renovação automática, situações de pagamento recusado e ações de gerenciamento do desenvolvedor.
Processar o ciclo de vida das assinaturas de renovação automática
Quando o estado de assinatura de um usuário muda, o servidor de back-end recebe uma
mensagem SubscriptionNotification
.
Para atualizar o estado no back-end, chame a API
purchases.subscriptionsv2.get
com o token de compra incluído na notificação. Esse endpoint fornece
o estado mais recente da assinatura considerando um token de compra e é tido como a
fonte da verdade para o gerenciamento de assinaturas.
Observação: o token de compra é válido até 60 dias após a data de validade das assinaturas. Após essa data, o token de compra não será mais válido para chamar a API Google Play Developer.
Novas compras de assinaturas de renovação automática
Quando um usuário compra uma assinatura, uma mensagem SubscriptionNotification
com
o tipo SUBSCRIPTION_PURCHASED
é enviada ao cliente de RTDN. Independente de você receber
essa notificação ou registrar uma nova compra no app com
PurchasesUpdatedListener
ou buscar compras manualmente no
método onResume()
, processe a nova compra no seu back-end
seguro. Para isso, siga estas etapas:
- Consulte o endpoint
purchases.subscriptionsv2.get
para conferir um recurso de assinatura que contenha o estado mais recente. - Confira se o valor do campo
subscriptionState
éSUBSCRIPTION_STATE_ACTIVE
. - Verifique a compra.
- Conceda ao usuário o acesso ao conteúdo. A conta de usuário associada à
compra pode ser identificada com o objeto
ExternalAccountIdentifiers
do recurso de assinatura. Isso será possível se os identificadores tiverem sido definidos no momento da compra usandosetObfuscatedAccountId
esetObfuscatedProfileId
.
A Biblioteca Play Faturamento também inclui um método para confirmar uma assinatura,
acknowledgePurchase()
,
e um método para conferir o status de confirmação,
isAcknowledged()
.
No entanto, recomendamos processar as compras no back-end para
maior segurança.
O recurso de assinatura para novas compras é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
Renovações de assinaturas
Uma notificação SUBSCRIPTION_RENEWED
é enviada quando uma assinatura automática
é renovada. Confira se o usuário ainda tem o direito de acesso à assinatura e, em seguida,
atualize o estado dela com o novo expiryTime
fornecido no
recurso de
assinatura
retornado da API Google Play Developer. O recurso de assinatura é parecido
com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
]
}
Não é necessário confirmar as renovações de assinatura.
Período de carência
O período de carência foi criado para ajudar a reduzir a desistência involuntária de usuários. Se o período de carência estiver ativado para um plano básico de renovação automática, uma compra de assinatura entrará nesse período quando houver problemas de pagamento no final de um ciclo. Durante esse período, o usuário ainda terá acesso à assinatura enquanto o Google Play tenta fazer a cobrança periodicamente.
O
método queryPurchasesAsync()
continua retornando compras que estão no período de carência. Se o app
depender exclusivamente de queryPurchasesAsync
para conferir se um usuário tem o direito de acesso uma
assinatura, ele processará automaticamente os períodos de carência, já que
essas assinaturas aparecem como ativas na Biblioteca Play Faturamento.
A sincronização do estado da assinatura com seu back-end permite que você esteja mais ciente
das recusas de pagamento e fornece mais contexto conforme você tenta reduzir a desistência
involuntária. Ouça
mensagens SubscriptionNotification
com o tipo SUBSCRIPTION_IN_GRACE_PERIOD
para receber uma notificação quando o usuário entrar em um
período de carência. Enquanto o usuário está no período de carência, o
recurso de assinatura
contém autoRenewEnabled = true
. O Google Play estende dinamicamente o
valor expiryTime
até o período de carência terminar, porque o direito
precisa durar até que ele cancele a assinatura ou o período de carência
termine. O valor do campo subscriptionState
durante esse período é
SUBSCRIPTION_STATE_IN_GRACE_PERIOD
. O recurso de assinatura é parecido com
este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
O Google Play informa aos usuários que estão em um período de carência que o pagamento foi recusado e solicita que corrijam os problemas com a forma de pagamento na Play Store. Quando um usuário entra em um período de carência, você também precisa incentivá-lo a corrigir a forma de pagamento, caso a falha tenha sido involuntária. Uma maneira simples de fazer isso é usando a API In-App Messaging. Se você chamar essa API quando o usuário abrir o app, ele receberá uma mensagem do Google Play em uma snackbar temporária informando que o pagamento foi recusado. Essa mensagem também inclui um link direto para que ele corrija a forma de pagamento no Google Play.
Assim que o usuário corrige a forma de pagamento, a assinatura é renovada com a data de renovação original, e você pode processar essa ação conforme descrito em Renovações.
Se o usuário não corrigir a forma de pagamento durante o período de carência, a assinatura vai ativar a suspensão de conta, e ele perderá o direito de acesso.
Acesso e recuperação no período de carência
A Figura 2 mostra uma linha do tempo de uma assinatura que entra em um período de carência e é recuperada quando o usuário corrige a forma de pagamento. Após o término do período de carência, o usuário perderá os benefícios da assinatura e a conta entrará em suspensão.

É importante se lembrar dos seguintes pontos:
- Durante o período de carência, o usuário precisa manter o acesso aos benefícios da assinatura.
- Quando uma assinatura é recuperada durante um período de carência, a data de renovação não é redefinida.
- Se você aumentar o período de carência, por exemplo, de 7 para 14 dias, os usuários que estiverem nesse período terão acesso estendido aos benefícios da assinatura.
- Se você diminuir o período de carência, os usuários que tiverem excedido o novo período de carência terão os benefícios da assinatura revogados imediatamente. Por exemplo, se você diminuir o período de carência de 14 para 7 dias, os usuários que estiverem entre os dias 8 e 14 do período de carência antigo terão os benefícios da assinatura revogados imediatamente.
Suspensão de conta
A suspensão de conta é um recurso que reduz a desistência involuntária de usuários devido a pagamentos recusados. O estado da assinatura de suspensão de conta começa quando a forma de pagamento de um usuário falha na renovação automática e qualquer período de carência associado termina sem a resolução do pagamento. Quando uma assinatura entra na suspensão de conta, você precisa bloquear o acesso ao seu conteúdo ou serviço. O período de suspensão de conta dura até 30 dias.
Durante a suspensão de conta, continue a processar os cancelamentos, as restaurações ou as recompras das suas assinaturas, conforme necessário, já que o usuário pode fazer essas mudanças enquanto a assinatura está suspensa.
As RTDNs notificam você quando a conta entra no período de suspensão. Assim, você pode informar o mais rápido possível ao usuário por que o acesso à assinatura foi suspenso. Uma maneira simples de fazer isso é usando a API In-App Messaging. Chamar essa API quando o usuário abrir o app mostrará uma mensagem em uma snackbar temporária informando que o pagamento foi recusado. Essa mensagem também inclui um link direto para que o usuário corrija a forma de pagamento no Google Play.
Se os usuários tiverem acesso ao conteúdo da assinatura fora do app, eles poderão descobrir que perderam o acesso em diferentes plataformas. Envie uma notificação push ou um e-mail para informar que a assinatura não está mais ativa devido a uma recusa de pagamento.
A assinatura não é retornada pelo método
queryPurchasesAsync()
durante a suspensão da conta. Portanto, se o app depende desse método para mostrar
compras, é necessário oferecer suporte à suspensão de conta por padrão.
Com as Notificações do desenvolvedor
em tempo real, você recebe uma
mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_ON_HOLD
quando uma assinatura entra em suspensão de conta. Chame
o método
purchases.subscriptionsv2.get
do servidor de back-end seguro para acessar as novas informações
da assinatura. Durante a suspensão da conta, o campo expiryTime
do recurso de
assinatura
é definido como um carimbo de data/hora no passado, e o campo subscriptionState
é definido como
SUBSCRIPTION_STATE_ON_HOLD
:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
Para restaurar o acesso, os usuários precisam corrigir a forma de pagamento. O Google Play informa aos usuários na suspensão de conta a recusa do pagamento. Você também precisa incentivá-los a corrigir a forma de pagamento.
Depois que o usuário corrige a forma de pagamento, a assinatura retorna a
um estado ativo, e você precisa restaurar o acesso ao conteúdo assinado. Nesse caso,
o token de compra é o mesmo de antes da suspensão da conta, já que
a mesma compra está sendo recuperada, e você recebe uma RTDN com o tipo
SUBSCRIPTION_RECOVERED
.
Após a recuperação, a Biblioteca Play Faturamento retorna a assinatura novamente pelo
método queryPurchasesAsync()
. Se você usar esse método para determinar se
um usuário tem direito de acesso a uma assinatura, o app vai processar automaticamente
a assinatura que está sendo recuperada.
Ouça uma mensagem de
SubscriptionNotification
com o tipo SUBSCRIPTION_RECOVERED
para receber uma notificação quando uma assinatura é
recuperada e o acesso do usuário é restabelecido. Se você consultar uma assinatura
após receber essa notificação, o campo expiryTime
será definido como um carimbo de data/hora
no futuro, e o campo subscriptionState
será definido como
SUBSCRIPTION_STATE_ACTIVE
novamente:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
...
}
],
}
Se o usuário não corrigir a forma de pagamento antes do final do período de suspensão de
conta, você receberá uma RTDN com o tipo SUBSCRIPTION_CANCELED
. Para
conferir instruções para o processamento de cancelamentos, consulte Cancelamentos. Quando você
consulta uma assinatura que foi cancelada dessa maneira, o campo
expiryTime
retornado é definido como um carimbo de data/hora no passado:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
Imediatamente após receber a notificação do cancelamento durante a suspensão da conta, você
também receberá uma RTDN com o tipo SUBSCRIPTION_EXPIRED
, já que o usuário não
terá o direito de pagamento e a assinatura terá sido cancelada.
Processe essa expiração normalmente.
O usuário pode recuperar o acesso comprando o mesmo plano de assinatura ou qualquer outro
oferecido pelo app durante o período de suspensão de conta
da compra original. Nesse caso, um novo token de compra será emitido, e o
novo valor será retornado como parte de um evento SUBSCRIPTION_PURCHASED
que
representa essa nova instância.
Acesso e recuperação de suspensão de conta
A Figura 3 mostra uma linha do tempo de uma assinatura que entra na suspensão de conta e é recuperada quando o usuário corrige a forma de pagamento.

Como no exemplo anterior, a Figura 4 mostra uma linha do tempo de uma assinatura que primeiro entra em um período de carência antes de entrar na suspensão de conta e ser recuperada durante a suspensão.

É importante se lembrar dos seguintes pontos:
- Antes que uma assinatura entre em suspensão de conta, o Google Play faz outras tentativas de cobrança na forma de pagamento por até 48 horas. O usuário mantém os benefícios da assinatura durante esse período. Após o período de nova tentativa, a assinatura entra em suspensão de conta, e o usuário perde o acesso aos benefícios associados a ela.
- A assinatura entra em suspensão de conta diretamente quando é retomada de um estado pausado com uma forma de pagamento com falha.
- Quando a assinatura se recupera da suspensão de conta, a data de renovação é redefinida.
Expirações
Quando uma assinatura expira, o usuário perde o acesso a ela. Nesse
caso, uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_EXPIRED
é enviada. Quando você receber essa notificação, consulte a API Google Play
Developer para conferir o recurso
de assinatura mais recente.
Depois de confirmar que subscriptionState
é SUBSCRIPTION_STATE_EXPIRED
,
remova o direito e registre o estado de compra como inválido no
back-end. O recurso de assinatura é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time_in_past,
...
}
],
}
Cancelamentos
Um usuário pode cancelar uma assinatura na central de assinaturas do Google Play
por vontade própria ou ter a assinatura cancelada automaticamente se não a recuperar depois de
uma suspensão de conta. Os desenvolvedores também podem acionar um
cancelamento com
purchases.subscriptions.cancel
.
Quando uma assinatura é cancelada, o usuário mantém o acesso ao conteúdo até
o fim do ciclo de faturamento atual. Quando o ciclo de faturamento termina, o acesso é
revogado.
O cancelamento de uma assinatura aciona uma notificação SUBSCRIPTION_CANCELED
. Quando
você recebe essa notificação, o recurso
de assinatura
retornado da API Google Play Developer tem o campo subscriptionState
definido como SUBSCRIPTION_STATE_CANCELED
, e o campo expiryTime
contém a
data em que o usuário vai perder o acesso à assinatura. Se essa data estiver no
passado, o usuário perderá o direito imediatamente. Isso pode acontecer,
por exemplo, se um usuário cancelar uma assinatura enquanto estiver em suspensão de
conta devido a um pagamento recusado.
O recurso de assinatura para uma compra cancelada é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
],
}
Consulte o campo canceledStateContext
no recurso de assinatura para
saber por que a assinatura foi cancelada. Por exemplo, ela pode ter sido
cancelada pelo usuário, pelo sistema ou por você. Se a assinatura tiver sido
cancelada pelo usuário, analise o campo userInitiatedCancellation
para
saber por que o usuário a cancelou. Isso pode ajudar a informar estratégias de
comunicação.
Quando uma assinatura é cancelada, mas ainda não expirou, ela
ainda é retornada de
queryPurchasesAsync()
.
Você pode mostrar uma mensagem no app informando ao usuário que a
assinatura foi cancelada e informando a data de validade.
Revogações
A assinatura pode ser revogada por vários motivos, incluindo a
revogação pelo back-end usando
purchases.subscriptions.revoke
ou devido ao estorno da compra. Nessa situação, revogue o direito do usuário
imediatamente. Uma mensagem SubscriptionNotification
com o tipo
SUBSCRIPTION_REVOKED
é enviada quando isso ocorre. Quando você recebe essa
notificação, o recurso
de assinatura
retornado da API Google Play Developer tem o campo subscriptionState
definido como SUBSCRIPTION_STATE_EXPIRED
.
O recurso de assinatura para uma compra revogada é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
]
}
Assinaturas adiadas
Há vários motivos para estender o direito de um
usuário. Por exemplo, você pode oferecer aos usuários uma promoção
especial, como uma semana grátis na compra de um filme ou acesso gratuito
como gesto de boa vontade. Use o método
purchases.subscriptions.defer
da API Play Developer para adiantar a próxima data de faturamento de uma
assinatura com renovação automática. Quando você fizer isso, uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_DEFERRED
será enviada. Durante o período de adiamento,
o usuário será assinante do conteúdo com acesso total, mas não será cobrado. A
data de renovação da assinatura é atualizada para a nova data.
Para planos pré-pagos, use a API de adiamento de faturamentos para adiar o prazo de vencimento.
O recurso de assinatura adiada é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
...
}
],
}
Assinaturas pausadas
Você pode reduzir a desistência voluntária de usuários permitindo que eles pausem a assinatura. Quando o recurso de pausa é ativado, os usuários podem optar por pausar a assinatura por um período entre uma semana e três meses, dependendo do período recorrente.
Uma pausa de assinatura entra em vigor somente após o término do período de faturamento atual. Enquanto estiver em pausa, o usuário não terá acesso à assinatura e não pagará o preço da renovação. No final do período de pausa, a assinatura será retomada, e o Google tentará fazer a renovação. Se a retomada for bem-sucedida, a assinatura será reativada. Se a retomada falhar devido a um problema de pagamento, o usuário vai entrar no estado de suspensão da conta, conforme mostrado nas Figuras 5 e 6:


Um usuário também pode retomar manualmente uma assinatura a qualquer momento durante o período de pausa, conforme mostrado na Figura 6. Quando isso acontece, a data de faturamento muda para a data de retomada manual.
Quando a assinatura de um usuário é pausada, a Biblioteca Play Faturamento não a retorna
pelo
método
queryPurchasesAsync()
. Se a assinatura for retomada, o método queryPurchasesAsync()
vai retorná-la de novo.
Ouça as RTDNs para saber quando um usuário pausar a assinatura. Essas notificações também permitem que você informe seus usuários no app que eles pausaram a assinatura e não têm acesso a ela. Ofereça também uma maneira para o usuário retomar manualmente a assinatura a qualquer momento usando um link direto para o Google Play.
Uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED
é enviada quando o usuário inicia
uma pausa na assinatura. Nesse momento, o usuário mantém o acesso à
assinatura até a próxima data de renovação, e o recurso
da assinatura
contém autoRenewEnabled = true
. O valor do campo subscriptionState
é SUBSCRIPTION_STATE_ACTIVE
.
Uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_PAUSED
é enviada quando a
pausa entra em vigor. Quando isso acontece, o usuário perde o acesso à
assinatura, o recurso de assinatura contém autoRenewEnabled = true
e o campo subscriptionState
está definido como SUBSCRIPTION_STATE_PAUSED
. É possível
conferir quando a assinatura será renovada novamente no
objeto
PausedStateContext
.
Uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_RENEWED
será enviada se a
assinatura for retomada automaticamente no final do período de pausa
ou se o usuário retomar a assinatura manualmente. Isso precisa ser
processado conforme descrito em Renovações.
Uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_ON_HOLD
será enviada se
houver uma falha no pagamento ao tentar retomar a assinatura após a pausa.
Isso precisa ser processado conforme descrito em Suspensão da conta.
Restaurações
Um usuário renova a assinatura de um plano básico com renovação automática quando a assinatura é reiniciada após o cancelamento voluntário no passado com vencimento do período de direito restante. Por outro lado, uma restauração é uma assinatura renovada enquanto o usuário ainda tem o direito de acesso.
Uma assinatura cancelada sempre permanece visível no app Play Store até expirar. Um usuário pode restaurar uma assinatura cancelada antes que ela expire clicando em Renovar assinatura na central de assinaturas do app Google Play Store.
Você também pode permitir que os usuários renovem a assinatura de um plano básico com renovação automática após a expiração configurando-o de acordo com a opção Renovar assinatura.

Restaurações antes da expiração
Caso seu app dependa apenas do método
queryPurchasesAsync()
para determinar se um usuário tem direito de acesso a uma assinatura,
as restaurações serão processadas automaticamente, já que o método queryPurchasesAsync()
continua retornando compras canceladas antes da data de validade. Uma
assinatura restaurada continuará sendo renovada como se não tivesse sido cancelada.
Se o app sincronizar o estado da assinatura com um back-end, ouça
uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_RESTARTED
. Depois de receber essa RTDN,
seu app poderá responder à notificação, registrar que a assinatura está configurada
para ser renovada e parar de mostrar mensagens de restauração. O
recurso de assinatura é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date
...
}
],
}
Renovações de assinaturas após a expiração
Se um produto por assinatura estiver configurado para permitir a renovação após a expiração,
os usuários poderão iniciar uma compra no app Play Store. Nesse caso,
o Google Play emite um novo token de compra, e seu back-end recebe uma RTDN
com o tipo SUBSCRIPTION_PURCHASED
. Nesse caso, o status desse tipo de
compra fora do app não inclui um linkedPurchaseToken
associado à
compra original, já que a assinatura original expirou
totalmente.
Upgrades, downgrades e novas assinaturas
Quando um usuário faz upgrade, downgrade ou inscrição após o cancelamento do app antes do vencimento, a assinatura antiga é invalidada, e uma nova assinatura é criada com um novo token de compra.
Além disso, o recurso
de assinatura
retornado da API Google Play Developer contém um campo linkedPurchaseToken
que indica a compra antiga que o usuário usou para fazer upgrade, downgrade ou
renovação. Use o token de compra nesse campo para procurar a assinatura
antiga e identificar a conta de usuário existente. Assim, é possível associar
a nova compra à mesma conta.
Antes de oferecer as opções de upgrade, downgrade ou renovação de assinatura a um usuário no app, confirme a assinatura atual. Qualquer mudança ou renovação do plano é bloqueada se a assinatura atual está com confirmação pendente.
Após a mudança ou renovação da assinatura do plano, você também precisará confirmar a compra da nova assinatura depois de processá-la. A maneira recomendada de fazer isso é usando a API Google Play Developer para confirmar a compra e evitar o cancelamento dela. O recurso de assinatura é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"linkedPurchaseToken": old_purchase_token,
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
Mudanças no preço
Consulte o guia de práticas recomendadas para mudanças de preço para saber mais sobre a mudança dos preços de renovação automática e como notificar os usuários quando for adequado.
Quando as mudanças de preço forem aplicadas para pedir a permissão do usuário, você receberá uma RTDN se o usuário tomar medidas para confirmar ou rejeitar o novo preço.
Processar a confirmação do usuário sobre uma mudança de preço
Quando um usuário aceita o aumento no preço da assinatura, você recebe uma
mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_PRICE_CHANGED_CONFIRMED
. Quando ocorrer uma desistência de redução
no preço ou quando o aumento no preço da assinatura for renovado, você receberá uma
mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_RENEWED
. Trate essa
notificação como qualquer outra renovação.
Processar casos em que um aumento de preço não é aceito
Se um usuário não concordar com um aumento de preço antes de precisar renovar
com o novo valor, a assinatura será cancelada automaticamente, e você receberá uma
mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_CANCELED
. Processe esse evento conforme descrito em
Cancelamentos.
Os usuários também podem cancelar as assinaturas para recusar o aumento no preço seguindo o mesmo mecanismo.
Processar o ciclo de vida dos planos pré-pagos
Assim como acontece com as assinaturas de renovação automática, você precisa confirmar o recebimento dos planos pré-pagos após cada nova compra. No caso de planos pré-pagos, você precisa processar completamente a compra inicial e as recargas, já que o usuário sempre precisa passar pelo fluxo de compra.
Alguns planos pré-pagos podem ter prazos de duração curtos. Por isso, é importante confirmar a compra o mais rápido possível. Planos pré-pagos com prazo de uma semana ou mais precisam ser confirmados dentro de três dias. Planos com prazo menor que uma semana precisam ser confirmados em até metade do período de assinatura do plano. Por exemplo, para a compra de um plano pré-pago de três dias, os desenvolvedores têm até um dia e meio para enviar a confirmação.
Uma mensagem SubscriptionNotification
com o tipo SUBSCRIPTION_PURCHASED
é enviada ao cliente RTDN sempre que uma
assinatura do plano pré-pago é comprada, incluindo todas as recargas. Chame o método
purchases.subscriptionsv2.get
para conferir o estado mais recente da assinatura do plano pré-pago.
Um novo token de compra é emitido para recargas, e você recebe o
token anterior no campo linkedPurchaseToken
como parte do novo
estado de compra da assinatura.
O recurso de assinatura para uma compra de plano pré-pago é parecido com este exemplo:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "prepaid_plan01",
"expiryTime": expiry_date,
"prepaidPlan": {
"allowExtendAfterTime": timestamp_after_which_topups_are_allowed
}
}
]
}
Confira quando o direito de acesso termina no campo expiryTime
. As compras de recarga
acumulam o período do direito para aumentar a duração. Isso significa que, se
o usuário fizer a recarga antes do término do direito original, o novo período será adicionado
sobre a data de validade anterior.
Mostre uma mensagem no app informando ao usuário que as
assinaturas pré-pagas podem ser estendidas com uma recarga. Para saber quando um usuário poderá
fazer a recarga, confira o campo allowExtendAfterTime
no recurso
de assinatura.
Os planos pré-pagos não são renovados automaticamente, então não podem ser cancelados. Se um usuário quiser cancelar, ele pode deixar que o plano pré-pago atinja a data de validade.