Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

roger santos

Ambiente de Testes e Compatibilidade com Plugin WP E-commerce

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

$sql = "UPDATE `".$wpdb->prefix . "purchase_logs` SET `processed` = '2' WHERE id=" . $Referencia;

para

$sql = "UPDATE `" . WPSC_TABLE_PURCHASE_LOGS . "` SET `processed` = 2 WHERE `sessionid` = " . $Referencia;

 

E ainda há mais um problema para aqueles que rodam em IIS ao invés de Apache, pois o IIS não tem a variável $_SERVER["REDIRECT_URL"], portanto a confirmação de pedido nunca será executada.

 

Arquivo wp-ecommerce/merchants/pagseguro.php

Linha 13:

if( get_option('transact_url')=="http://".$_SERVER["SERVER_NAME"].$_SERVER["REDIRECT_URL"]){ transact_url();}

para

$transactURL = get_option('transact_url');
$pageURL = isset($_SERVER["REDIRECT_URL"]) ? $_SERVER["REDIRECT_URL"] : $_SERVER["REQUEST_URI"];
$redirectedURL = "http://" . $_SERVER["SERVER_NAME"] . $pageURL;
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.