Git Product home page Git Product logo

vindi-woocommerce-subscriptions's People

Contributors

asagalo avatar augustofbento avatar carolina-y avatar cristian-rossi avatar frisoni avatar laerte-guimaraes avatar leogermani avatar lramos1994 avatar lucca65 avatar lyoncesar avatar rodrigo avatar rtakauti avatar soareseneves avatar st3llaris avatar talesgalvao avatar tkusuki avatar vindi-deploy avatar vitorrene03 avatar wagner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vindi-woocommerce-subscriptions's Issues

Plano com 1 período - campo "next_billing_at" não aparece como nulo

Descreva o bug
Caso seja criado um plano de cobrança única, o campo next payment do WooCommerce aparecerá preenchido. Isso não deve ocorrer, pois não haverá uma nova cobrança dessa assinatura.

Como reproduzir
Basta realizar a criação de uma assinatura:

image

Há uma data de próxima cobrança, mesmo que não haverá uma próxima:

image

O campo "end date" também é nulo, mesmo que o fim da assinatura existe, que no caso seria daqui três meses.

Comportamento Esperado
As datas, ao acessar a assinatura via painel de administração, deveriam ser exibidas corretamente.

Uncaught Error: Call to a member function get_status() ...

Boa tarde

Meu debug.log está apontando seguidamente esse erro:

[21-Aug-2017 19:14:37 UTC] PHP Fatal error:  Uncaught Error: Call to a member function get_status() on boolean in /home/.../public_html/wp-content/plugins/vindi-woocommerce-subscriptions/includes/class-vindi-webhook-handler.php:185
Stack trace:
#0 /home/.../public_html/wp-content/plugins/vindi-woocommerce-subscriptions/includes/class-vindi-webhook-handler.php(68): Vindi_Webhook_Handler->charge_rejected(Object(stdClass))
#1 /home/.../public_html/wp-content/plugins/vindi-woocommerce-subscriptions/includes/class-vindi-webhook-handler.php(35): Vindi_Webhook_Handler->process_event(Object(stdClass))
#2 /home/.../public_html/wp-includes/class-wp-hook.php(298): Vindi_Webhook_Handler->handle('')
#3 /home/.../public_html/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters('', Array)
#4 /home/.../public_html/wp-includes/plugin.php(453): WP_Hook->do_action(Array)
#5 /home/.../public_html/wp-content/plugins/woocommerce/includes/class-wc-api.php(96): do_action('woocommerce_api...')
#6 /home/.../public_html/wp-includes/cl in /home/.../public_html/wp-content/plugins/vindi-woocommerce-subscriptions/includes/class-vindi-webhook-handler.php on line 185

Exibição de parcelas no woocommerce

Quando o cliente assina um plano recorrente parcelado, nenhuma informação sobre o parcelamento é exibida nos detalhes do pedido. A impressão que passa é que o valor não foi parcelado e irá ser cobrado integralmente de uma única vez.

Descreva a solução que você gostaria que a gente implementasse
O ideal é inserir o número de parcelas nos metadados do pedido, de forma a exibir na página de detalhes da assinatura e no email de confirmação o número de vezes em que o valor será parcelado.

Descreva o que você pode considerar como solução alternativa
Uma opção mais simples seria exibir a palavra "Parcelado" ou algo do tipo nos detalhes da assinatura.

Contexto adicional
A exibição dessa informação é essencial para a transparência do processo de assinatura. Sem ela provavelmente teremos uma enxurrada de emails questionando sobre o aparente "não parcelamento" dos pedidos.

Problemas com anti-fraude

Gostaria de saber se terei problemas com o anti-fraude da Vindi se alterar campos do cartão de crédito via jQuery.

Adicionei esse script para selecionar a bandeira de cartão de acordo com o número de cartão informado:

var types = [
		{
			type: 'american_express',
			pattern: /^3([47]\d*)?$/,
		},
		{
			type: 'diners_club',
			pattern: /^(3(0[0-5]|095|6|[8-9]))\d*$/,
		},
		{
			type: 'elo',
			pattern: {test: function(n) {var bin, binI; return 6 === (bin = n.substring(0, 6)).length && (
				_.includes([401178, 401179, 431274, 438935, 451416, 457393, 457631, 457632, 504175, 627780,
							636297, 636368, 636369], binI = parseInt(bin))
				|| _.find([[506699, 506778],[509000, 509999],[650031, 650033],[650035, 650051],[650405, 650439],[650485, 650538],[650541, 650598],[650700, 650718],[650720, 650727],[650901, 650920],[651652, 651679],[655000, 655019],[655021, 655058]], function(r) {return binI >= r[0] && binI <= r[1];})
			);}}
		},
		{
			type: 'hipercard',
			pattern: /^(606282\d{10}(\d{3})?)|(3841(0|4|6)0\d{13})$/
		},
		{
			type: 'mastercard',
			pattern: /^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,
		},
		{
			type: 'visa',
			pattern: /^4\d*$/,
		}
		/*,{
			type: 'discover',
			pattern: /^(6011(0|[2-4]|74|7[7-9]|8[6-9]|9)|6(4[4-9]|5))\d*$/,
		},
		{
			type: 'itau_hiper',
			pattern: /^(637095|637612|637599|637609|637568)\d{10}$/
		},
		{
			type: 'jcb',
			pattern: /^35(2[8-9]|[3-8])\d*$/,
		},
		{
			type: 'maestro_domestic',
			pattern: /^6759(?!24|38|40|6[3-9]|70|76)|676770|676774\d*$/,
		},
		{
			type: 'maestro_international',
			pattern: /^(5(0|[6-9])|63|67(?!59|6770|6774))\d*$/,
		},
		{
			type: 'union_pay',
			pattern: /^(622(1(2[6-9]|[3-9])|[3-8]|9([[0-1]|2[0-5]))|62[4-6]|628([2-8]))\d*?$/,
		}*/
	];

function getCardType(n) {
	var card_number = n.replace(/\s/g, '');
	var result = false;

	for (var i = 0; i < types.length; ++i) {
        var type = types[i];
        if (type.pattern.test(card_number)){
			result = type.type;
			break;
		}
    }

	return result;
}

function selecionarBandeira(numero){
	var type = getCardType(numero);
	if (type != false){			
		jQuery('select[name=vindi_cc_paymentcompany]').val(type);
	}
}

$(document).on( 'keypress', 'input[name=vindi_cc_number]', function(event){
	selecionarBandeira(jQuery(this).val() + String.fromCharCode(event.charCode));
});

$(document).on( 'change blur', 'input[name=vindi_cc_number]', function(event){
	selecionarBandeira(jQuery(this).val());
});

Link do Email de Renovação de Assinatura do WooCommerce

Gostaria de utilizar o email de renovação de assinatura do WooCommerce no lugar da notificação da Vindi.

Como funciona atualmente

Cartão de Crédito: Email de fatura da Vindi não é disparado e nem o de renovação do WooCommerce com o Link de pagamento. (Isso está correto)

Boleto Bancário: Email de Renovação de Assinatura é disparado com um Link de pagar agora que redireciona para o checkout, portanto está incorreto. Email de fatura da Vindi com o link correto para pagamento.

Como resolver?

O filter woocommerce_get_checkout_payment_url permite que seja alterado os links de pagamento de um pedido manual, portanto vai funcionar tanto na página minha conta quanto nos emails disparados ao cliente.

Fiz uma simples implementação:

add_filter('woocommerce_get_checkout_payment_url', array(
    &$this, 'get_checkout_payment_url'
), 20, 2);

/**
 * Get checkout payment url
 */
public function get_checkout_payment_url( $pay_url, $order ) {
    $bill_id = $order->get_meta('vindi_wc_bill_id');
    if (!empty($bill_id)) {
        $pay_url = $this->settings->api->get_bank_slip_download($bill_id);
    }

    return $pay_url;
}

Isso funciona a partir da página do cliente porém não funciona no email de renovação pois a API da Vindi ainda não setou o campo vindi_wc_bill_id no pedido quando esse email é disparado.

Estou com algumas ideias e gostaria da ajuda de vocês se possível.

Pretendo desativar esse email de renovação do WooCommerce via hook:

add_filter( 'woocommerce_email_enabled_customer_renewal_invoice', 'disable_wc_renewal_invoice_email', 10, 2);

function disable_wc_renewal_invoice_email( $active, $order ) {
    return false;
}

Na classe Vindi_Payment no método process_subscription, após o campo vindi_wc_bill_id for adicionado, verificar se o email customer_renewal_invoice está ativo nas configurações do WooCommerce, se estiver disparar esse email manualmente.

Dessa forma acredito ser possível desativar a primeira notificação de cobrança da Vindi e utilizar somente o email do WooCommerce.

Alguma sugestão?

Imagem cartão de crédito no carrinho sem classe css

Quando o usuário já tem um cartão cadastrado, no momento do checkout aparece a imagem do Cartão de Crédito.
Com o tema que estou utilizando essa imagem fica desconfigurada, conforme print abaixo.
cartao-credito
A imagem é incluida através de uma div no arquivo templates/creditcard-checkout.html.php linha 22.
Mas como não há nenhuma classe atribuída a ela eu não consigo manipular através do CSS.
Apenas incluir uma classe na div já resolve o problema.

Envio de notificação para Nova Assinatura

Quanto é realizada uma nova assinatura dependendo da configuração do plano não é feita a cobrança no ato! Dessa forma caso um cliente faça uma nova assinatura nenhum e-mail é disparado informando ao cliente os dados do pedido. Apenas quando confirmação do pagamento o e-mail é disparado

Gostaria que o cliente recebesse um e-mail com no ato da assinatura independente se houver ou não pagamentos.

Assinatura criada no Woo não existe na Vindi

Em alguns casos, quando no momento do registro da assinatura na Vindi apresenta um erro 422 na API, (falha no telefone, falha no método de pagamento, etc) acaba ficando a assinatura criada no Woo, dando a entender ao cliente que está tudo ok. Mas na vindi, não há nem sinal de assinatura, fatura ou qualquer outra coisa.
Nesses casos, o ideal seria nem deixar criar a assinatura no Woo, mas caso não seja possível, o retorno do erro 422 deveria pelo menos cancelar a assinatura que foi criada para manter os dois sistemas sincronizados.

Disponibilizar o boleto do painel Minha Conta

A integração da Vindi não exibe o boleto para o cliente fazer download ou visualizar no painel "Minha conta" do Woocommerce, após a finalização da compra.

Muitas vezes ele não faz o download do boleto imediatamente após a compra e não tem como pegar o boleto pelo painel, apenas nos e-mails da Vindi.

Acontece que o e-mail das notificações vai com o domínio da Vindi e para muitos clientes acaba caindo na caixa de spam e segundo que agora como o boleto bancário tem que ser registrado a cliente não consegue pagar na hora e acaba não salvando no computador ou no celular.

Eu queria que a integração disponibilizasse o boleto ou pelo menos o link da fatura na conta do cliente dentro do painel "Minha conta" do Woocommerce, assim como ocorre em vários outros meios de pagamento como o pagseguro, o mercado pago e etc.

Atualizar valor da assinatura Vindi no Woo

Atualmente, para modificar ou até mesmo incluir um desconto em uma assinatura já existente isso deve ser realizado diretamente na plataforma da Vindi.
Porém, quando é feita essa alteração no valor da assinatura a mesma não é refletida para o pedido de renovação no Woo, deixando o cliente em dúvidas quanto ao valor pago.

Descreva a solução que você gostaria que a gente implementasse
No momento da renovação da assinatura, quando a Vindi confirma o pagamento no Woo, poderia informar o valor atual da assinatura + frete e assim atualizar o pedido de renovação no Woo.

TLS 1.2

Forçar conexão HTTPS usando TLS 1.2. O suporte à versão 1.0 será descontinuado pela plataforma em junho/2016.

Problema com quantidade de produtos

O valor da cobrança na fatura está diferente do valor do pedido.
O plugin está enviando o valor total do produto no campo "price", e não o valor unitário.

Painel WooCommerce:

Biscoito de Arroz Fit Food - Multigrãos | >>>R$ 7,99<<< | × 2 | R$ 15,98
REF: 030497
type:product
vindi_id:126654
price:15.98

Painel Vindi:

Biscoito de Arroz Fit Food - Multigrãos | >>>R$ 15,98<<< / unidade | 2 | R$ 31,96

 

Erro ao atualizar endereço sem o WooCommerce Subscriptions

O erro ocorre quando o usuário tenta atualizar seus endereços e o WCS está desativado:

PHP Fatal error: Uncaught Error: Call to undefined function wcs_user_has_subscription() in /(...)/wp-content/plugins/vindi-woocommerce-subscriptions/vindi-woocommerce-subscriptions.php:156

Erro "Modo Trial"

Após atualizar para nova versão 5.3 o plugin aparece um aviso de Modo de Testes sem estar ativo

screen shot 2018-10-05 at 14 41 38

Assinatura com tempo mínimo de fidelização

No nosso clube disponibilizamos aos clientes planos mensais, trimestrais e semestrais, oferecendo um desconto no valor para o tri e semestral. Porém, a cobrança é realizada de uma única vez para evitar que o cliente assine o semestral e já cancele o próximo mês. E isso, as vezes, é um impeditivo para o cliente pois ele tem que pagar um valor muito alto a vista no cartão ou boleto. E no cartão esse valor também utiliza todo o limite do cartão.

Descreva a solução que você gostaria que a gente implementasse
Uma forma de solucionar isso seria bloquear que o usuário possa realizar o cancelamento da sua assinatura antes de X pedidos de renovação. Imagino um campo adicional no cadastro dos produtos onde eu possa informar o número mínimo de pedidos necessários para que seja habilitado o cancelamento da assinatura no painel do usuário. Assim, eu poderia setar com 3 pedidos para o trimestral, por exemplo. E quando o usuário fosse no painel tentar o cancelamento antes de ter 3 pedidos de renovação para a sua assinatura ele receberia uma mensagem de "Tempo mínimo de permanência no plano ainda não permite o cancelamento". ( poderia ter um campo pra definir a mensagem também).
Dessa forma, o processamento do pagamento seria feito mensalmente, sem utilizar o limite do cartão. Para os boletos, acho que seria interessante poder desabilita-lo para este tipo de assinatura uma vez que o cliente pode simplesmente não paga-lo para renovar.

Descreva o que você pode considerar como solução alternativa
Como alternativa, poderia continuar cobrando o valor integral em um plano trimestral mas já criar 3 pedidos no woo, um referente a cada entrega. Hoje, o meu processo é manual. O cliente assina o trimestral e é gerada uma assinatura e um pedido, então eu crio mais dois pedidos e ajusto tudo manualmente para termos 3 pedidos para o cliente, um para cada um dos proximos meses.

Contexto adicional
Muitos clubes oferecem essas opções de planos semestrais, anuais, etc. Qualquer melhoria para podermos disponibilizar essa flexibilidade no pagamento e um garantia de manter o assinante conosco por mais tempo é bem vinda.

Cobrança de Assinatura no ato do pedido

Gostaria de solicitar que ao fazer o pedido de assinatura houvesse a cobrança relacionada ao primeiro ciclo e não agendar a cobrança*, que no meu caso para os ciclos subsequente é sempre no dia 1º de cada mês
*A cobrança é feita de acordo com configurações do plano

No cadastro de plano na plataforma da VINDI ou mesmo em configurações do plugin no woocommerce um campo informando do tipo: "Cobrar imediatamente para primeiro ciclo" onde poderíamos marcar ou desmarcar para cada tipo de plano

Cancelamento da uma subscription cancela a membership também

Boa noite

Estou testando o Vindi com Woocommerce + WC Subscriptions + WC Memberships. A combinação parece perfeita, mas estou tendo alguns problemas.

Criei dois planos mensais, com valores diferentes e features diferentes. Notei que quando o Vindi está ativo, some as opções de tempo na criação de um produto do tipo subscription (a cada X meses por X vezes ou tempo indeterminado).

Se um usuário contrata essa subscription com ciclo de 1 mês e, dentro desse período, cancela a assinatura, o sistema cancela a subscription (status cancelled) e já cancela também a membership vinculada.

Exemplo: eu contrato um plano em 01/10/16; o segundo ciclo deveria ocorrer em 01/11/16. Mas eu cancelo a assinatura em 15/10/16. O correto é a assinatura e a membership durarem até 01/11/16 e não processar novos pagamentos. Afinal o usuário pagou aquele mês cheio.

O que ocorre hoje é que no dia 15, quando eu cancelei a subscription, ele cancela também a membership.

É alguma configuração errada que eu fiz, ou o plugin da Vindi que tem esse "bug"?

Obrigado!
Renan

Criar testes de aceitação

Motivação
Garantir sempre a alta qualidade de nossos softwares

Solução proposta
Realizar testes de aceitação

Criar testes funcionais

Motivação

Garantir sempre a alta qualidade de nossos softwares

Solução proposta

Realizar testes funcionais

Perdendo parâmetros ao salvar o produto.

Quando edito o produto, e não altero o campo "Plano da Vindi", está perdendo os seguintes parâmetros na tabela "wp_postmeta": "_subscription_period" e "_subscription_period_interval".
Diante disso, preciso selecionar outro plano no campo Plano da Vindi, salvar, selecionar novamente o plano correto e salvar, para aí sim ele conseguir salvar os valores dos campos descritos.

BUGs

Pessoal

Eu migrei do PagSeguro, usando o plugin do PagSeguro para Woocommerce, para a Vindi. Uso intensamente o plugin, visto que todos os dias criamos de 20 a 30 novas cobranças.

Uso hoje WP 4.5.2, Woocommerce 2.6.2, Woocommerce Subscriptions 2.0.20, Woocommerce Memberships 1.7.0 e Vindi Woocommerce Subscriptions 1.2.0.

A única diferença desta configuração agora, para antes, é que eu usava o Woocommerce Pagseguro 2.11.3 no lugar do Vindi Woocommerce Subscriptions, antes de migrar para a Vindi. Todos os demais plugins são exatamente os mesmos.

O funcionamento do meu site é o seguinte:

  • A pessoa entra na página com 2 planos de assinatura e dá um add-to-cart quando escolhe um.
  • Entra no checkout e faz o pagamento com cartão usando Vindi.
  • O pagamento é aprovado.
  • A order é modificada para Processando
  • A subscription é criada com status Active e vinculada à order
  • A membership é criada e vinculada à subscription
  • Com a membership ativa, o usuário pode acessar nosso conteúdo restrito.

Quais os problemas que eu tenho notado.

Cancelamento de subscription
Alguns dos meus usuários tentaram cancelar a subscription pelo endpoint view-subscription. A subscription foi cancelada no meu site, mas a assinatura não foi cancelada no Vindi. Em alguns outros testes que fiz, deu certo. É um problema aleatório.

Criação de cobranças em duplicidade
Alguns usuários fazem um pedido, o pedido é aprovado, é criado na Vindi uma assinatura, mas logo depois, uns 2 minutos depois, o sistema da Vindi cria outra fatura e cobra o usuário em duplicidade. Temos aí 1 assinatura, 2 faturas e 2 cobranças. Isso aconteceu 1 vez.

Criação de assinaturas em duplicidade
O usuário faz o pedido, é aprovado, cria-se a assinatura no Vindi. Todavia, algum tempo depois se cria outra order, outra subscription e outra membership e outra assinatura na Vindi, tudo em duplicidade.

Nesse caso eu noto que uma das orders não tem notas adicionadas no pedido. Além disso, todo meu site e seus eventos são monitorado no analytics, inclusive com ID do usuário. Essas orders não deixam rastro no analytics.

Mas na Vindi cria 2 assinaturas, 2 faturas e 2 cobranças.

Cancelamento de assinatura cancela diretamente a memberships
Esse problema foi detalhado aqui: #22

A order aprovada não muda o status da subscription
O usuário cria um pedido, a order é aprovada, a assinatura na Vindi é criada, mas a subcription vinculada àquela order continua com status "pending", ainda que a order tenha sido aprovada.

São muitos bugs e TODOS eles começaram a partir do momento em que instalei o plugin da Vindi e desinstalei o plugin do PagSeguro.

É perceptível que o plugin da Vindi altera o comportamento padrão do Woocommerce Subscriptions e essas alterações estão causando muitos bugs como esses que narrei acima.

São problemas aleatórios, que ora ocorrem, ora não, mas estão dando muita dor de cabeça.

Alguma ideia para resolvermos isso? São mais de 2 mil assinaturas, cerca de 400 a 500 novas por mês. Não tem jeito de ficar monitorando isso manualmente.

Obrigado

Atualizar valor da assinatura no Woo ao término do cupom

Quando utilizamos cupons de descontos com ciclos, por exemplo 3 meses, ao término do desconto a assinatura na vindi tem o valor alterado para o valor "cheio".
Porém, o mesmo não ocorre no Woo causando uma diferença entre o valor do pedido no Woo e da fatura na Vindi.
Ao faturar o ultimo pedido com desconto já poderia alterar o valor da assinatura no Woo para deixar correto para o próximo ciclo.

Upgrade/Downgrade de Assinaturas

No momento não é possível fazer o upgrade/downgrade de assinaturas, isso é uma limitação do plugin do WooCommerce ou da API da Vindi?

Não encontrei na API uma forma de alterar o plano de uma assinatura ativa, apenas os itens da assinatura, com isso eu consigo apenas alterar o valor do produto mas não a periodicidade. Caso exista, podem me passar o link da documentação?

Campo para adição de planos está sendo exibido indevidamente

Descreva o bug
Independentemente do plugin WooCommerce Subscriptions estar ativo ou não, o campo "Plano da Vindi" está aparecendo na criação de produtos que não são de assinatura.

Como reproduzir
Passos para reprodução do comportamento:

  1. Desinstale o WooCommerce Subscriptions;
  2. Clique em Adicionar novo, em Produtos;

image

Comportamento Esperado
Não deveria ser exibido esse campo.

Validação quando o valor da compra é menor que o mínimo da parcela

Quando o valor total da comprar é menor que o valor mínimo da parcela o plugin não exibe o select de parcelas, mas a validação acusa o erro: Quantidade de Parcelas requerido.

No caso, o cliente deseja pagar o valor integral em 1x no cartão mas não pode concluir a compra por causa do erro.

Aceitar Pagamentos Antecipados de Renovação

Descreva o bug
Quando a opção Aceitar Pagamentos Antecipados de Renovação está ativa, o botão Renovar Agora fica disponível na página da assinatura do cliente e ao clicar nesse botão, a página é redirecionada para o checkout.

Como reproduzir
Passos para reprodução do comportamento:

  1. Vá para WP-Admin -> WooCommerce -> Configurações -> Assinaturas
  2. Marque a caixa Aceitar Pagamentos Antecipados de Renovação
  3. Faça um pedido de assinatura por cartão ou boleto(necessário baixa manual)
  4. Após o pagamento ser processado, vá para a página Minha Conta e clique em Minha Assinatura.
  5. Clique no botão Renovar Agora

Comportamento Esperado
Duas requisições para a API da Vindi, 'subscriptions/XXX/renew' e em seguida 'periods/XXX/bill', após isso uma simples atualização da página com um parametro pra ocultar o botão Renovar Agora pois a API demora alguns segundos pra mudar o status da assinatura e uma mensagem informando o usuário que a assinatura foi renovada:

wc_add_notice( __('Renovação de assinatura antecipada! Em alguns minutos você receberá um email com mais informações.', VINDI_IDENTIFIER), 'success' );

Desktop (favor completar as seguintes informações):

  • OS: Windows 10
  • Browser: Chrome
  • Version: 74
  • Wordpress 5.2.1
  • Woocommerce 3.6.4
  • PHP 7.3

Contexto adicional
Implementei o que descrevi no Comportamento Esperado em uma branch local e está funcionando perfeitamente, não criei um pull request pois não sei se isso é uma funcionalidade ou bug e se é algo que vocês tem a intenção de dar suporte.

Compras com usuários não logados gerando cobrança para clientes errados.

Descreva o bug
A forma de geração do vindi_user_code faz com que compras executadas no mesmo segundo por usuários diferentes (não logados) gere todas as cobranças para um usuário.

Como reproduzir
Fazer um compra com dois usuários não logados no mesmo segundo.

Comportamento Esperado
Na compra com usuário não logado deveria se gerar uma chave de maneira diferente garantido que é uma chave única.

Trecho de código problemático

        $user_id = $currentUser->ID; // valor 0 se usuário não está logado.

        if (! $user_code = get_user_meta($user_id, 'vindi_user_code', true)) {
            $user_code = 'wc-' . $user_id . '-' . time();
            add_user_meta($user_id, 'vindi_user_code', $user_code, true);
        }

Habilitar os campos "Descrição" e "Instruções" nos métodos de pagamento

Principalmente para o método de pagamento "Boleto", é muito importante habilitar os campos "Descrição" e "Instruções" para que o cliente receba instruções sobre o boleto.

Isso se deve ao fato crescente de clientes que tentam pagar o boleto imediatamente após finalizar o pedido e recebem mensagem de erro do banco, dizendo que o boleto não está cadastrado.

Portanto, é importante que, no checkout, o cliente receba uma mensagem que ele precisa esperar uns 15 minutos para pagar o boleto.

Campo "next-payment" está desatualizado após renovação da assinatura

Descreva o bug
O campo next payment (que consiste na data do próximo pagamento da assinatura) não está mais sendo atualizado.

Como reproduzir
Passos para reprodução do comportamento:

  1. Realize uma compra de assinatura
  2. No ambiente de admin, consulte a assinatura comprada e o campo estará correto
  3. Realize a renovação da assinatura
  4. Consulte novamente o ambiente de admin, e a data permanecerá igual

Comportamento Esperado
O campo de próximo pagamento deveria ser atualizado conforme a renovação da assinatura.

Criar testes unitários

Motivação
Garantir sempre a alta qualidade de nossos softwares

Solução proposta
Realizar testes unitários

Método $order->payment_complete() não utilizado

Gostaria de saber o porque do método payment_complete não é utilizado pelo plugin, mas apenas feita uma simples alteração no status do pedido para o status definido em configurações, essa função é a que deve ser utilizada ao efetuar o pagamento do pedido, seja por cartão, boleto ou qualquer outro método. Sem isso não é possível utilizar os hooks woocommerce_pre_payment_complete e woocommerce_payment_complete.

Quando um produto virtual/downloadable é comprado, ao executar o método payment_complete, o pedido vai direto para o status Concluído, talvez esse foi o motivo de não terem utilizado? Se for o caso, existe uma maneira de contornar isso:

add_filter( 'woocommerce_order_item_needs_processing' , array($this, '__return_true') );
Esse filter poderia ser uma opção nas configurações da Vindi.

Acredito que quem deve controlar o fluxo de status dos pedidos é o desenvolvedor do site e não o gateway de pagamento em si, certo? Portanto se utilizarem o método payment_complete, o mesmo será alterado para o status processando ou concluído de acordo com a configuração acima, daí pra frente o dev poderá assumir o controle.

Undefined variable: installments

Descreva o bug
PHP Notice: compact(): Undefined variable: installments in wp-content\plugins\vindi-woocommerce-subscriptions\includes\class-vindi-creditcard-gateway.php on line 187

Como reproduzir
Passos para reprodução do comportamento:
Ao carregar o valor do frete no checkout

Comportamento Esperado
Pré-definir a variável para não causa o erro.

Incompatibilidade com o Wordpress Multisite

Descreva o bug
Ao utilizar o Wordpress Multisite, não está sendo possível utilizar o plugin.

É gerado um erro de versionamento do WooCommerce:

image

Como reproduzir
Passos para reprodução do comportamento:

  1. Instalar o WP no modo multisite
  2. Instalar as dependências do plugin Vindi
  3. Instale o plugin Vindi
  4. O erro da imagem acima aparecerá

Comportamento Esperado
Utilizar o WooCommerce normalmente.

Compra de mais de uma variação de uma assinatura variável

Descreva o bug
Atualmente, validamos apenas os produtos de simple subscription para impedir a criação de uma assinatura com planos diferentes. Caso o produto seja de variable subscription, será possível criar a assinatura e os itens da assinatura serão duplicados:

image

Como reproduzir
Crie um produto de assinatura variável e adicione ambas as suas variações no carrinho:

image

Comportamento Esperado
Não deveria ser possível realizar a compra. Deveria ser exibida uma mensagem de erro.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.