Magento Forum

   
Page 10 of 11
Novo Método de Pagamento do Pagseguro! Módulo Visie #Fail
 
Carolina Toledo
Jr. Member
 
Avatar
Total Posts:  14
Joined:  2010-03-13
São Paulo - Brasil
 

Bruno, valeu pela ajuda!
Parabéns, esse módulo é 10!!!
Resolveu todos os problemas com o módulo da Visie.

Abraços,
Carol

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Boa noite bruno, fui fazer um teste de um pagamento até o fim e creio que tenha achado um bug no modulo,

quando o cliente escolhe o metodo de pagamento, o pague seguro manda o status: Aguardando Pagamento, nessa você trava a geração de fatura, segundo code:

UOL/PagSeguro/Model/Standard.php - Linha 864:

else {
                    
// Em espera/análise/aguardando pagamento(boleto)
                    
$changeTo Mage_Sales_Model_Order::STATE_HOLDED;
                    if (
$order->canHold()) {
                        $comment 
utf8_encode($status ' - ' $post->TipoPagamento);
                        
$order->setState($changeTotrue$comment$notified false);
                    
}
                    $order
->getPayment()->setPagseguroTransactionId($post->TransacaoID);
                    
$order->getPayment()->setPagseguroPaymentMethod($post->TipoPagamento);
                    
$order->getPayment()->save();
                
}
                
if ($changeTo != ""{
                    Mage
::log("PAGSEGURO - Status do pedido atualizado: $changeTo");
                
}

quando um status vem como aprovado ou completo, primeiro vc vericar se ainda é possivel gerar boleto, sendo que esse boleto já foi gerado e pago, nisso você da uma mensagem de erro lá no pedido:

UOL/PagSeguro/Model/Standard.php - Linha 832

if (in_array(strtolower($status), array('completo''aprovado'))) {
                
if (!$order->canInvoice()) {
                    
//lógica para quando a fatura não puder ser criada
                    
$order->addStatusHistoryComment('Erro na criação da fatura.');
                    
Mage::log("PAGSEGURO - Fatura não criada");
                
else {
                    $order
->getPayment()->setPagseguroTransactionId($post->TransacaoID);
                    
$order->getPayment()->setPagseguroPaymentMethod($post->TipoPagamento);
                    
$invoice $order->prepareInvoice();
                    
$invoice->register()->pay();
                    
$invoice_msg utf8_encode(sprintf('Pagamento confirmado (%s). Transação PagSeguro: %s'$post->TipoPagamento$post->TransacaoID));
                    
$invoice->addComment($invoice_msgtrue);
                    
$invoice->sendEmail(true$invoice_msg);
                    
$invoice->setEmailSent(true);
                    
Mage::getModel('core/resource_transaction')
                       ->
addObject($invoice)
                       ->
addObject($invoice->getOrder())
                       ->
save();
                    
$comment utf8_encode(sprintf('Fatura #%s criada.'$invoice->getIncrementId(), $post->TipoPagamento));
                    
$order->setStateMage_Sales_Model_Order::STATE_PROCESSINGtrue$comment$notified true );
                    
Mage::log("PAGSEGURO - Fatura criada");
                
}
            }

o if da linha 833 retorn true pois não é possivvel criar a fatura(true) e vc inverte o if.

Eu simplesmente tirei o if.

Abraço.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Bruno Assarisse
Sr. Member
 
Avatar
Total Posts:  119
Joined:  2009-09-13
São Paulo - Brasil
 

Olá, Édipo!

Ficamos todos gratos pela ajuda =D

Bem, pela lógica da função Mage_Sales_Model_Order::canInvoice(), realmente a fatura nunca deveria ser criada. O estranho é que esse código está assim já há um bom tempo, e os retornos de minhas vendas sempre funcionaram OK.

Em todo caso, adicionei uma outra condição no if, para o caso do pedido estar em espera (a mesma solução utilizada no cancelamento). Assim, a criação da fatura ocorrerá sem problemas, e somente na devida situação.

Você pode me ajudar a testar?

Link da atualização:
http://www.assarisse.com.br/files/pagseguro/ModuloPagSeguro-latest.zip

Abraço!

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Funcionou Bruno, aqui só fiz algumas modificações em relação ao endereço, seria legal se consegui-se mudar os identificadores dos modulos em relação ao original da visie, por exemplo, no momento estou usando o seu e o da visie em paralelo, foi não rolou aqui o modulo de entrega do pedroteixeira e nem o da noix, é o seu para pagamento e o da Visie para entrega, continuo com aquela alteração no resources sitada anteriormente para tudo correr bem.

Abraço.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Bruno Assarisse
Sr. Member
 
Avatar
Total Posts:  119
Joined:  2009-09-13
São Paulo - Brasil
 

Quais modificações nos endereços você fez, Édipo?
Eu deixei essa questão de uma maneira simples, sem adicionar campos e etc. Se for alguma melhoria que possamos implementar no módulo, gostaria de saber.

Em breve alterarei a estrutura do módulo, para que não haja problemas em usá-lo juntamente ao da Visie.

Até mais!

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Em relação aos endereços, é algo mais customizado em relação a minha loja, dexei o primeiro campo como Rua, o Segundo como número e o terceiro como complemento, talvez pude-se ter algo que deixa-se isso configuravel no módulo, o campo numero é obrigatorio para o pag seguro, e provavelmente é enviado como sem numero na grande maioria das vezes.

Eu estou afim de fazer um modulo desse, mas não nesse momento pois estou bem atarefado, rs.

Sobre o funcionamento atual do modulo, o PagSeguro esta enviado um email de pagamento cancelado para o cliente, quando o mesmo não paga, mas o mesmo não é alterado no magento.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Bruno Assarisse
Sr. Member
 
Avatar
Total Posts:  119
Joined:  2009-09-13
São Paulo - Brasil
 

É, realmente a questão dos endereços depende bastante da loja, e fazer essas alteraçoes implica mais em customização do tema do que do módulo em si, por isso deixei utilizando o formato padrão de endereços do Magento.
Talvez seria bom incluir os campos adicionais (bairro, número e DDD) no banco de dados, através da instalação do módulo, e incluir uma escolha do padrão do endereço: Magento ou personalizado. No caso de personalizado, aí sim seriam necessárias as alteraçoes no tema utilizado.

Sobre o cancelamento, você teria os logs das transações para analisarmos o que pode estar ocorrendo de errado?

Até quando testei, deixando o PagSeguro cancelar o boleto, o cancelamento do pedido ocorreu normalmente também.
De qualquer forma, estou aguardando mais alguns boletos serem cancelados para ver o que acontece. Vou também instalar o servidor de testes do PagSeguro para ver se consigo agilizar isso.

Abraços.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Eu estava com os logs desabiltados, habilitei agora, fiz um pedido, estou esperando o cancelamento tb.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

system_log.php

2010-07-17T03:22:06+00:00 ERR (3): NoticeUndefined offset:  2  in /home/beyoga/public_html/loja/app/code/community/UOL/PagSeguro/Model/Standard.php on line 151
2010
-07-17T03:22:46+00:00 DEBUG (7): PAGSEGURO - ||| Inicio do retorno
2010
-07-17T03:22:46+00:00 DEBUG (7): PAGSEGURO Resposta de confirmacaoVERIFICADO
2010
-07-17T03:22:46+00:00 DEBUG (7): PAGSEGURO Confirmacao efetuada
2010
-07-17T03:22:46+00:00 DEBUG (7): PAGSEGURO Pedido #100000040: Aguardando Pagto
2010-07-17T03:22:47+00:00 DEBUG (7): PAGSEGURO Status do pedido atualizadoholded
2010
-07-17T03:22:47+00:00 DEBUG (7): PAGSEGURO - ||| Fim do retorno
2010
-07-18T03:22:38+00:00 DEBUG (7): PAGSEGURO - ||| Inicio do retorno
2010
-07-18T03:22:39+00:00 DEBUG (7): PAGSEGURO Resposta de confirmacaoVERIFICADO
2010
-07-18T03:22:39+00:00 DEBUG (7): PAGSEGURO Confirmacao efetuada
2010
-07-18T03:22:39+00:00 DEBUG (7): PAGSEGURO Pedido #100000040: Cancelado
2010-07-18T03:22:39+00:00 DEBUG (7): PAGSEGURO Status do pedido atualizadocanceled
2010
-07-18T03:22:39+00:00 DEBUG (7): PAGSEGURO - ||| Fim do retorno

Standard.php em anexo

File Attachments
Standard.php  (File Size: 32KB - Downloads: 70)
 
Magento Community Magento Community
Magento Community
Magento Community
 
Bruno Assarisse
Sr. Member
 
Avatar
Total Posts:  119
Joined:  2009-09-13
São Paulo - Brasil
 

Pelo log, nada é apontado.
O pedido mostrado não foi cancelado?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Não

Image Attachments
pedido40.jpg
 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Na parte do cancelameto, vc set a varivel changeTo com o valor da constante STATE_CANCELED, mas vc não chama o setState, embora vc chame outros metodos, que pelo nome deveriam fazer isso, coloquei o setState lá vou testar denovo e ver o que rola.

 
Magento Community Magento Community
Magento Community
Magento Community
 
jostdayan
Jr. Member
 
Total Posts:  2
Joined:  2010-07-11
 

Bruno tudo bom?
MEu nome é Jost Dayan e gostaria de deixar um teste que fiz e que para mim funcionou.

Eu estava tendo problema com o modulo pagseguro tanto o seu como o da visie.

A primeira msg com o seu modulo falava que a minha conta no pagseguro não era compativel??.(uma coisa assim, não lembro direito).
E com o modulo da Visie falava que o carrinho estava vazio quando finalizava a compra.

Eu apaguei o modulo e instalei novamente, removendo todos os dados e limpando o sql.

Ai a msg do seu modulo mudou para a mesma do modulo da Visie, que o carrinho estava vazio.

Novamente eu apaguei todos os arquivos no server e limpei as tabelas, so que desta vez eu so mandei para o server a pasta code e etc do seu modulo.

E agora está funcionando perfeitamente.

Não sei se isso tem alguma coisa haver, mas está funcionando perfeitamente.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Édipo Costa Rebouças
Jr. Member
 
Total Posts:  16
Joined:  2010-04-12
 

Bruno, agora sim cancelou o pedido com o setState na parte do código de cancelar. Abraço.

File Attachments
Standard.php  (File Size: 33KB - Downloads: 60)
 
Magento Community Magento Community
Magento Community
Magento Community
 
Bruno Assarisse
Sr. Member
 
Avatar
Total Posts:  119
Joined:  2009-09-13
São Paulo - Brasil
 

Olá, Édipo!

Eu estive reestudando os métodos da classe de pedido do Magento, e concluí que a “salada” que fiz para gerenciar o status precisava de uma melhorada.

Não utilizei diretamente o setState(), pois ele já existe e deve ser executado dentro do registerCancellation(), que por sua vez deve ser utilizado pelo cancel(). Dessa maneira, o código fica mais enxuto (KISS? =D).

E Jost, a limpeza dos caches e do banco de dados, em relação ao módulo da Visie, é altamente recomendada ao instalar este módulo, uma vez que ainda não é possível instalá-los em paralelo (pelo menos não sem alguns ajustes). Nas vezes que não deu certo, provavelmente faltou você fazer alguma parte importante. Mas obrigado pelo feedback, que bom que agora está funcionando!

Abraços!

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top
Page 10 of 11