Ao realizar a pausa de uma assinatura no WooCommerce através do painel minha conta, se a opção Sincronismo de status das assinaturas estiver ativada, no momento da reativação da assinatura, caso a mesma já tenha passado da data de renovação, ocorrerá o cancelamento indevido da assinatura.
Exemplo:
Caso eu tenha uma assinatura que renove todo dia 4, se eu realizar a pausa desta assinatura e reativa-la apenas no dia 5, ocorrerá a ativação da assinatura e cancelamento automático no mesmo instante.
Solução de contorno :warning:
Não há uma solução para contorno.
Como reproduzir :cop:
Para reproduzir, poderá seguir estes passos:
Criar uma assinatura diária;
Pausar a assinatura através do painel minha conta;
Reativar a assinatura no dia seguinte.
Comportamento atual
A assinatura será reativada e cancelada no mesmo momento.
Comportamento esperado
Apenas realizar a ativação da assinatura.
Impacto do problema :boom:
Clientes poderão perder assinantes por cancelamento indevido.
Prioridade :memo:
Normal:
Funcionalidade não está operando conforme expectativa e especificação;
Análise técnica:
Abaixo um print dos eventos que ocorreram na assinatura em que foi possível replicar o cenário apresentado pelo cliente:
Conforme o print, o problema ocorre pois quando há a reativação da assinatura, será realizada uma cobrança na Vindi, o que gera a criação de um pedido no WooCommerce. Como a criação do pedido ocorre antes do tratamento da reativação da assinatura no WooCommerce, a assinatura irá tornar ao status on hold que tendo o Sincronismo do status das assinaturas habilitado impactará no cancelamento da assinatura na Vindi.
Neste cenário o problema ocorre pois o cancelamento devido ao status On Hold foi processo apenas após a reativação da assinatura através do webhook de assinatura reativada, sendo assim, como a assinatura se encontrava com o status ativo, a assinatura foi cancelada no WooCommerce.
Proposta de correção :heavy_check_mark:
Há uma validação onde caso o status da assinatura seja diferente de "On Hold", "Pending Cancel" ou 'Cancelled' ocorrerá o cancelamento da assinatura no WooCommerce no envio do webhook de subscription_canceled.
Neste caso, acredito que possamos realizar uma verificação do último pedido da assinatura no tratamento do webhook de assinatura reativada, e caso o mesmo esteja com o status de pago, realizamos a atualização do status da assinatura para ativo, senão apenas mantemos o status da assinatura. Exemplo:
Critérios de aceite
[x] Impossibilitar o cancelamento incorreto da assinatura;
Descrição do bug :bomb:
Ao realizar a pausa de uma assinatura no WooCommerce através do painel minha conta, se a opção Sincronismo de status das assinaturas estiver ativada, no momento da reativação da assinatura, caso a mesma já tenha passado da data de renovação, ocorrerá o cancelamento indevido da assinatura.
Exemplo: Caso eu tenha uma assinatura que renove todo dia 4, se eu realizar a pausa desta assinatura e reativa-la apenas no dia 5, ocorrerá a ativação da assinatura e cancelamento automático no mesmo instante.
Solução de contorno :warning:
Não há uma solução para contorno.
Como reproduzir :cop:
Para reproduzir, poderá seguir estes passos:
Comportamento atual
A assinatura será reativada e cancelada no mesmo momento.
Comportamento esperado
Apenas realizar a ativação da assinatura.
Impacto do problema :boom:
Clientes poderão perder assinantes por cancelamento indevido.
Prioridade :memo:
Normal:
Análise técnica:
Abaixo um print dos eventos que ocorreram na assinatura em que foi possível replicar o cenário apresentado pelo cliente:
Conforme o print, o problema ocorre pois quando há a reativação da assinatura, será realizada uma cobrança na Vindi, o que gera a criação de um pedido no WooCommerce. Como a criação do pedido ocorre antes do tratamento da reativação da assinatura no WooCommerce, a assinatura irá tornar ao status on hold que tendo o Sincronismo do status das assinaturas habilitado impactará no cancelamento da assinatura na Vindi.
Neste cenário o problema ocorre pois o cancelamento devido ao status On Hold foi processo apenas após a reativação da assinatura através do webhook de assinatura reativada, sendo assim, como a assinatura se encontrava com o status ativo, a assinatura foi cancelada no WooCommerce.
Proposta de correção :heavy_check_mark:
Há uma validação onde caso o status da assinatura seja diferente de "On Hold", "Pending Cancel" ou 'Cancelled' ocorrerá o cancelamento da assinatura no WooCommerce no envio do webhook de subscription_canceled.
Neste caso, acredito que possamos realizar uma verificação do último pedido da assinatura no tratamento do webhook de assinatura reativada, e caso o mesmo esteja com o status de pago, realizamos a atualização do status da assinatura para ativo, senão apenas mantemos o status da assinatura. Exemplo:
Critérios de aceite