Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Renovação automática do WooCommerce Subscription atrapalha o fluxo de renovação da Vindi #116

Open
devaguia opened this issue Sep 2, 2022 · 3 comments

Comments

@devaguia
Copy link
Contributor

devaguia commented Sep 2, 2022

A rotina de renovação automática do plugin WooCommerce Subscription está interferindo diretamente nas renovações de assinaturas realizadas pela Vindi.
Isso acontece pois o plugin de assinaturas faz a renovação da assinatura, enquanto no fluxo estabelecido pela Vindi, ela deveria disparar essa ação.
No fluxo correto, a assinatura só teria o status alterado para on-hold quando a vindi disparasse o evento de "bill_created", mandando assim para Vindi o cancelamento temporário da assinatura(Que estão aguardando o pagamento).
image (2)

Como a renovação por padrão altera o status para on-hold, isso acaba disparando o cancelamento fora do contexto apresentado acima, gerando assim o cancelamento da assinatura na Vindi, antes da renovação.

Basicamente o problema gira entorno do status de "on-hold", por ser um status padrão e já ter um comportamento pré definido dentro do funcionamento do WooCommerce Subscription.
A proposta de solução é a utilização de outro status para fazer a suspensão de assinaturas inadimplentes. Isso resolveria o problema sem alterar a regra de negócio do plugin da Vindi nem a Subscription.

Obs: Assim como o WooCommerce o plugin Subscriptions também permite a criação de novos status.

@devaguia
Copy link
Contributor Author

devaguia commented Sep 5, 2022

Fiz a criação de um fluxograma do funcionamento após as alterações feitas.
Vindi Workflow (1)

Nessas alteração mantemos o fluxo de renovação padrão do WooCommerce Subscriptions. Isso significa que as renovações vão continuar acontecendo normalmente, mas o plugin não vai quebrar se elas acontecerem.

O que mudamos foi a forma como o plugin da Vindi gerencia a "suspensão" das assinaturas. Criamos um novo status "waiting-payment" para disparar os eventos de cancelamento, que antes era responsabilidade do status “on-hold”.

Dessa forma, quando o Subscription criar o pedido de renovação e mudar o seu status para “on-hold”, não vai afetar o fluxo da Vindi, pois o cancelamento só será enviado mediante a mudança para o status “waiting-payment”.

Quando a Vindi enviar o webhook de “bill_created” o plugin vai adicionar os meta_values ao último pedido de renovação, e alterar o status para “waiting-payment”, que vai disparar o cancelamento para Vindi e seguir com o fluxo padrão.

Caso o WooCommerce Subscription não gere o pedido de renovação o plugin da Vindi vai fazer a renovação durante o recebimento do evento “bill_created”.

@laerte-guimaraes
Copy link
Contributor

É importante ressaltar que esse comportamento é dado com a ativação da funcionalidade Sincronismo de Status das assinaturas.

Eu fiz uma proposta que também resolve esse problema, só que nesse caso não adicionei um novo status para não interferir no ambiente do cliente. Apenas impeço que o Woocommerce gere um novo pedido, pois a responsabilidade de criação de pedidos (entendo que deva ser exclusiva da Vindi).

Se quiser dar uma olhada, acredito que possa ser útil nesse cenário 😉

@devaguia
Copy link
Contributor Author

devaguia commented Sep 6, 2022

@laerte-guimaraes Não sabia que iríamos manter um desenvolvimento em paralelo.

A alteração que fiz também não interfere na sua proposta. A ideia não é deixar a responsabilidade para o Subscription, mas bindar o plugin para que, se houver alguma falha, o fluxo não parar.
Hoje 90% dos chamados de suporte na nossa plataforma são referentes a esse problema, tem alguma previsão de quando essa proposta vai ser revisada e enviada? Precisamos passar essa previsão para os clientes.

Caso não forem usar, acredito que podemos fechar a minha PR #119.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants