Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Minha primeira dúvida é a respeito do ambiente de testes. Exitem duas versões: Python e .Net. A versão em Python, após muito sacrifício consegui fazer rodar no Windows, porém toda vez que inicio o servidor, após qualquer request, ele dá o seguinte erro:
VORT3X - - [07/Feb/2011 01:26:56] "GET / HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 6514)
Traceback (most recent call last):
File "C:\Program Files (x86)\Python\lib\SocketServer.py", line 284, in _handle_request_noblock
self.process_request(request, client_address)
File "C:\Program Files (x86)\Python\lib\SocketServer.py", line 310, in process_request
self.finish_request(request, client_address)
File "C:\Program Files (x86)\Python\lib\SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "C:\Program Files (x86)\Python\lib\SocketServer.py", line 641, in __init__
self.finish()
File "C:\Program Files (x86)\Python\lib\SocketServer.py", line 694, in finish
self.wfile.flush()
File "C:\Program Files (x86)\Python\lib\socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
TypeError: must be string or read-only buffer, not memoryview
----------------------------------------
Já na versão .NET, a url de retorno funciona, porém nenhum POST é feito (apesar de existir o código relacionado a isso dentro da aplicação e no vídeo demonstrativo funcionar).
Após muito testar, fica a dúvida: Alguém já fez funcionar corretamente algum destes ambientes de testes no Windows e com uma aplicação em PHP? Ou será que todo mundo simplesmente usa o ambiente de produção para realizar os testes?
A próxima questão é a seguinte: com a versão em .NET funcionando da maneira que descrevi, após retornar para a URL de retorno do site, é exibida a seguinte mensagem: "Sorry your transaction was not accepted.", enquanto o carrinho continua cheio. Essa lógica de confirmação de pedido está dentro do arquivo "wp-e-commerce/transaction_results.php", que contempla apenas alguns métodos de pagamento (hardcoded mesmo!), ou seja, o módulo de integração com o PagSeguro para o plugin WP E-commerce não contempla esta parte do processo. Aparentemente deve ser desenvolvida por mim.
E por último: Também considerando a questão anterior e a forma como é devolvida a informação pelo PagSeguro, não é possível confirmar o pedido do usuário em tempo real, ou seja, tenho simplesmente que informá-lo que o pedido foi concluído e está sob análise, enquanto toda a informação é processada em background, correto?
Agradeço se alguém puder me ajudar com pelo menos uma das questões acima!
Só para concluir, as versões de tudo que eu citei são:
Wordpress 3.0.4
WP E-Commerce 3.7.8
WP E-Commerce PagSeguro v2
Python 2.7.1 c/ pyOpenSSL-0.11.winxp32-py2.7
PagSeguroTestServer .NET v1.4.0.1
PagSeguroTestServer Python v0.21
PHP 5.2.14
Grato,
Roger
Bom, após perder mais algumas horas para achar a origem dos meus problemas, cheguei às seguintes conclusões:
1. O server Python realmente não funciona em ambiente Windows (não testei Linux);
2. O server .NET funciona
3. Tanto o plugin wp e-commerce quanto seu módulo de pagseguro precisam de alguns tweaks para funcionar
Vou postar as alterações que fiz, e por favor, digam se cometi alguma barbeiragem.
O primeiro problema que tinha era de o usuário, após efetuar o pagamento, visualizar uma mensagem de erro dizendo que a transação não foi concluída com sucesso.
Isto é causado porque no arquivo transaction_results.php a variável $sessionid estava sempre vazia pois o módulo pagseguro trabalha com outra variável de sessão. Então, a seguinte alteração foi necessária:
Arquivo wp-ecommerce/transaction_results.php
Linha 4:
$sessionid = $_GET['sessionid'];
para
$sessionid = $_GET["sessionid"] == "" ? $_SESSION["pagseguro_id"] : $_GET["sessionid"];
Feito isso, notei que o servidor de testes, nunca recebia o campo Referência, e por isso minhas compras nunca tinham seu status atualizado. Notei que o módulo do pagseguro, sempre enviava este campo como vazio, pois a ordem ainda não havia sido inserida no banco. Para corrigir isso, fiz as seguintes alterações:
Arquivo wp-ecommerce/merchants/pagseguro.php
Linha 22:
'ref_transacao' => $_SESSION['order_id'],
para
'ref_transacao' => $sessionid,
Linha 89:
para
Arquivo wp-ecommerce/merchants/pagseguro.php
Linha 13:
if( get_option('transact_url')=="http://".$_SERVER["SERVER_NAME"].$_SERVER["REDIRECT_URL"]){ transact_url();}
para
if($transactURL == $redirectedURL) { transact_url(); }Ainda há mais alguns bugs na parte de shipping que deixam o sistema extremamente lento e inacessível. Geralmente estoura um erro na linha 107 do arquivo wp-ecommerce/shipping/pagseguro.php, que é uma iteração nos itens do carrinho.
Por enquanto é só. Assim que tiver mais coisa funcionando eu aviso.
Ainda aguardo uma posição dos moderadores do pagseguro.
Obrigado,
Roger