claudiosanches/woocommerce-moip

Id Próprio já foi utilizado em outra Instrução

dbiagi opened this issue · 3 comments

Me deparei com esse erro ao desenvolver um ecommerce usando esse plugin do moip.
Vi que isso é uma trava de segurança do próprio moip onde o mesmo não deixa criar outro token com o mesmo id próprio.
No arquivo class-wc-moip-gateway.php linha 534, é gerado esse id próprio com base em um prefixo e o nº do pedido.
Problema: caso o usuário de F5, ou caso ele demore para escolher o método de pagamento e o chrome tirar da memoria a página e depois de um tempo o cliente voltar, esse erro será mostrado para ele.
E o mesmo não conseguirá comprar mais nada, uma vez que esse pedido será vinculado ao cliente, e toda vez que o cliente for fazer checkout o woocommerce nao cria um novo, mas pega esse em aberto, fazendo com que o plugin tente criar um outro token com um id proprio já usasdo.

Para resolver isso pensei em adicionar um time() na linha 534, fazendo com que cada token seja único:

'id_transacao' => $this->invoice_prefix . $order->id . '_' . time(),

Dai gostaria de saber se existe algum problema nisso. Tem algum razão para o id próprio não ter um número aleatório?

Colocar esse time() é um problema bem grave, o ID deve ser unico e se por algum motivo não deu certo, precisa cancelar o pedido e começar de novo.

Colocando o time, o IdProprio continuaria sendo único, a diferença é que a cada vez que o usuário entrasse na tela de pagamento o IdProprio seria gerado novamente sem o problema de já haver outro igual.
Não entendo o porquê disso ser um erro tão grave. Ficaria muito agradecido se, uma hora que tiver tempo, me explicasse melhor.

Se quer fazer, pode fazer, o código é livre, mas não vou colocar isso no plugin.
E já vou avisando que se fazer isso as notificações de pagamento vão parar de funcionar.