
Olá, aqui é o Renat do Apphud . Neste artigo, informaremos quais são os níveis de assinaturas renováveis automaticamente, como configurá-las corretamente e em que casos o usuário é reembolsado por um período pago não utilizado.
Qual é o nível de assinatura?
Essa é a designação da classe de assinatura, dependendo do nível de serviço que ela oferece. Assinatura da primeira classe significa o nível mais alto de serviço, a segunda classe - mais baixa e assim por diante. De fato, raramente em qual aplicativo você pode encontrar dois níveis de assinaturas, sem mencionar três ou mais.

Dois níveis de assinatura no aplicativo de jornal The New York Times.
Como configurar os níveis de assinatura?
Para configurar seus níveis de assinatura, acesse o App Store Connect , selecione seu aplicativo e vá para a guia Recursos . Na seção de compras no aplicativo, mova sua assinatura um nível para cima ou para baixo. Para fazer isso, selecione a assinatura desejada pressionando e segurando o ícone de arrastar e soltar e mova a assinatura para o nível desejado.

Arraste e solte uma assinatura para um nível superior.
A assinatura número 1 deve oferecer o mais alto nível de serviço, por exemplo, assinatura para todas as categorias de revistas. Não há dependência entre a duração da assinatura e seu nível. Portanto, a assinatura mais alta pode ser anual e uma assinatura em nível inferior a um mês.
Alterar assinatura
O usuário pode alterar a assinatura no aplicativo App Store após seu registro. Pode aumentar (atualizar), diminuir (rebaixar) um nível ou alterar uma assinatura em um nível (classificação cruzada).
Atualização do nível de assinatura (atualização)
Se a assinatura atual do usuário estiver ativa, ele mudará imediatamente para uma nova tarifa e a parte não utilizada do período pago será devolvida ao cartão.

Notificação de que parte dos fundos será reembolsada ao atualizar a assinatura.
No final do artigo, veremos como capturar o aumento no nível de assinatura e calcular a quantidade de retorno.
Downgrade de assinatura (downgrade)
Ao baixar o nível, o usuário muda para um novo no final do período pago atual. Os fundos não são reembolsados e o custo de uma nova assinatura é debitado na ativação.
Alteração da assinatura no mesmo nível (classificação cruzada)
Essa é uma situação comum, está dividida em dois tipos: uma alteração de assinatura de uma duração e diferente. Ao alterar uma assinatura com uma duração diferente, o mesmo ocorrerá com um downgrade: a assinatura será aplicada no final do período pago atual.
Se as durações corresponderem, a assinatura atual será cancelada e uma nova será iniciada imediatamente. O dinheiro será debitado pela nova assinatura e a parte não utilizada da assinatura antiga será devolvida ao usuário.
Como descobrir como alterar a assinatura no servidor?
Você pode validar a verificação da App Store ou ouvir as notificações do servidor Apple.
Ao verificar cada nova transação, você precisa verificar se product_id mudou. Alterar product_id significa que o usuário alterou sua assinatura nas configurações da App Store.
Além disso, você pode ver o valor de auto_renew_product_id
em pending_renewal_info
. Isso ajudará você a aprender sobre uma alteração no product_id antes que uma nova assinatura entre em vigor.
Se você tiver notificações de servidor configuradas, ouça a notificação DID_CHANGE_RENEWAL_PREF que é chamada quando um produto é alterado . Você pode limitar-se a esta notificação e obter o novo product_id a partir dos parâmetros de solicitação ou pode verificar novamente o recibo da App Store. Neste último caso, as notificações do servidor Apple servirão apenas como gatilho para uma verificação não programada.
Como calcular a quantidade de retorno para atualizações?
Para entender se houve uma atualização, é necessário verificar o valor do campo is_upgraded
. Um valor true
significa que a próxima transação já está na nova assinatura.
Observe que is_upgraded
será true
mesmo ao alterar uma assinatura com a mesma duração no mesmo nível. Ou seja, is_upgraded = true
não significa um aumento de nível, mas o fato de uma alteração na assinatura ter sido feita com um reembolso.
Além do campo is_upgraded
, o campo cancellation_date
aparecerá nesta transação, o que indica a hora do cancelamento. É igual ou quase coincide com a data de início da próxima transação.
Acontece que o campo cancellation_date
aparece não apenas quando a assinatura é retornada , mas também durante a atualização.
Observe que, ao atualizar as assinaturas do Sandbox, o campo cancellation_date
está ausente . Portanto, ao testar no Sandbox, você precisa usar a data de purchase_date
próxima transação em vez de data de cancellation_date
. Leia mais sobre a data de cancelamento na documentação da Apple .
Para calcular a quantia que deve ser devolvida ao usuário, é necessário dividir o período não utilizado pelo período completo da assinatura anterior e multiplicar pelo custo:
Como isso é implementado no Apphud?
O Apphud rastreia automaticamente as alterações nas assinaturas e calcula o retorno de peças não utilizadas.

Um exemplo de alteração de assinatura no mesmo nível com o retorno de parte dos fundos no Apphud.
Um desenvolvedor iOS não é necessário para lidar com essas situações. Você só precisa integrar o SDK, o resto será feito pelo Apphud.
Conclusão
Acontece que apenas atualizar o valor de product_id
não product_id
suficiente: você também precisa considerar o reembolso de atualizações. Trabalhar com assinaturas requer a manipulação de muitas situações limítrofes. Nós criamos o Apphud - um serviço que simplifica bastante o trabalho com assinaturas. Você pode começar a usá-lo gratuitamente. Registro - neste link .