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

Corrige data de próximo pagamento e desabilita renovação automática de pedido do WC Subscriptions #102

Merged

Conversation

cristian-rossi
Copy link
Contributor

Motivação

A data de próximo pagamento usada no webhook bill_created não é a data correta de próximo pagamento sendo que essa data não está disponível nos dados desse webhook, estando somente disponível na busca da assinatura em /subscriptions/{id} (depois da fatura paga).
Isso acarreta que a data visualizada pelo cliente no site não é a data efetiva da próxima cobrança do Vindi.

Outro problema em que essa data interfere é: quando é atualizada em Vindi_Webhook_Handler->update_next_payment o WC Subscriptions ajusta seu schedule para preparar o pedido de renovação da assinatura na data de final do período + 3 dias. Ocorre que podem existir assinaturas com períodos diferentes da data de cobrança.

Exemplo: assinatura com período entre 23/09/2018 - 22/10/2018 e data de cobrança 04/10/2018.
Na próxima cobrança (04/10) o hook bill_created cria o pedido de renovação e ajusta o next_payment para 22/11 + 3 dias, exibindo para o cliente o dia 25/11 mas ele só será cobrado no dia 04/11.
No dia 25/11 o WC Subscriptions irá criar o pedido de renovação e suspender a assinatura, aguardando a fatura/pagamento que ocorrerá somente no dia 04/11 (que é quando os hooks do plugin fariam esse trabalho).

Solução Proposta

  • Chamar a função update_next_payment no hook bill_paid buscando na API a assinatura e utilizando a data correta de próximo pagamento.
  • Desativar a função WC_Subscriptions_Manager::prepare_renewal quando estiver lidando com uma assinatura da Vindi deixando todo o controle para os webhooks.

Cristian Rossi added 3 commits September 20, 2018 17:14
- Corrigida função de atualizar próximo pagamento para buscar a subscription
do Vindi e usar a data correta
@cristian-rossi
Copy link
Contributor Author

Olá pessoal,

Quanto às assinaturas com período diferente da data de cobrança entendo que fazem sentido para o sistema (Vindi), mas não sei exatamente como lidar com elas em um site com assinaturas mensais sendo que o cliente teria sua assinatura suspensa e teria que aguardar vários dias até a próxima cobrança que liberaria ela novamente.

@laerte-guimaraes
Copy link
Contributor

laerte-guimaraes commented Sep 21, 2018

@cristian-rossi posso realizar algumas alterações bem simples no seu PR? 😬

@cristian-rossi
Copy link
Contributor Author

Claro, se precisar conversar sobre algo específico estou à disposição.

@laerte-guimaraes
Copy link
Contributor

@cristian-rossi obrigado 😄

Se eu entendi corretamente;

No webhook de fatura paga o Next Payment será alterado para o valor correto, porém o hook automático de geração de pedido no WooCommerce não será executado é isso?

@cristian-rossi
Copy link
Contributor Author

Exato. Como a data estava incorreta acontecia do WC Subscriptions suspender a assinatura e gerar o pedido muito antes da próxima fatura/pagamento (em casos que o período da assinatura não condiz com a data de pagamento). Mais especificamente em: WC_Subscriptions_Manager::init() , add_action( 'woocommerce_scheduled_subscription_payment', __CLASS__ . '::prepare_renewal', 1, 1 );.

Nesse PR a proposta é corrigir essa data (informando corretamente o cliente no frontend).

A segunda proposta é mais para consistência do funcionamento da assinatura desabilitando o action acima (somente para assinaturas Vindi).
Como o webhook bill_created é disparado na data exata de cobrança e já faz o fluxo de suspender a assinatura e criar o pedido de renovação no Woocommerce é melhor deixar ele rodar do que ter outro controle do WC_Subscriptions rodando também.

@laerte-guimaraes
Copy link
Contributor

Iremos realizar os testes para adicionar esse PR 😄

@laerte-guimaraes laerte-guimaraes merged commit e14680f into vindi:master Oct 8, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants