vindi / vindi-woocommerce

Plugin Vindi para pagamento recorrente no Woocommerce
https://vindi.com.br
GNU General Public License v3.0
6 stars 12 forks source link

Function is_wc_memberships_active não existe #73

Closed st3llaris closed 3 years ago

st3llaris commented 3 years ago

Descrição do problema :bomb:

O plugin, ao ser utilizado com o Memberships, está retornando um fatal error pois não possui a function is_wc_memberships_active().

Solução de contorno :warning:

Não há.

Como reproduzir :cop:

Com a loja do WooCommerce configurada:

  1. Instalar o plugin Vindi WooCommerce
  2. Instalar o plugin WooCommerce Memberships
  3. Criar uma assinatura
  4. Cancelar a assinatura na Vindi

Comportamento atual

O WooCommerce devolverá um fatal error.

Comportamento esperado

A assinatura deveria ser atualizada para o status pending cancellation

Impacto do problema :boom:

Nenhum cliente utilizando o plugin e o WooCommerce Memberships está tendo suas assinaturas atualizadas corretamente.

Prioridade :memo:

Alta:

Proposta de correção :heavy_check_mark:

Adicionar a função inexistente;

Critérios de aceite

verbomedia commented 3 years ago

Olá, eu gostaria de complementar também que o erro ocorre comigo mesmo quando o Memberships não está instalado ou desativado.

No meu teste, eu substitui a função is_wc_memberships_active() por function_exists( 'wc_memberships' ) e o problema parou de ocorrer. Não sei se é a solução adequada, mas o erro parou e os cancelamentos voltaram a ser processados.

Fiz esta alteração nas linhas 289 de "/src/services/Webhooks.php" e 50 de "/src/utils/SubscriptionStatusHandler.php".

Espero que ajude de alguma forma.

st3llaris commented 3 years ago

@verbomedia Faz sentido, no caso você não precisa mais manter essa alteração pois esse comportamento foi corrigido no PR https://github.com/vindi/vindi-woocommerce/pull/74 e está disponível na versão 1.1.3 do plugin (só acabei esquecendo de fechar a issue aqui 😆)

Se encontrar algum outro comportamento estranho, nos avise!

verbomedia commented 3 years ago

Olá, acabei de ver que vocês criaram a função. Obrigado!

Vou testar aqui, mas me pareceu muito boa a solução! Não sou dev, apenas um entusiasta de WordPress :)

A única questão que eu tenho, por experiência, é que nem sempre um plugin estará instalado em um diretório com a nomeclatura padrão, e por isso eu decidi checar a função wc_memberships ao invés de checar o plugin com a função "is_plugin_active", que localiza o plugin pelo diretório.

Não sei se vocês acham relevante ou não, mas em alguns casos, o usuário pode baixar o plugin de forma não tradicional e subir os arquivos por FTP com outra nomeclatura.

De qualquer forma, muito obrigado pela atualização!