Módulo PagSeguro para Magento

AVISO – 21/05/2012: O Ricardo Martins adicionou o módulo ao GitHub, para que todos possam contribuir no desenvolvimento. A partir de agora, a versão mais nova do módulo estará disponível lá.

MENSAGEM IMPORTANTE – 26/03/2012: O desenvolvimento desde módulo está estagnado, pois não trabalho mais com Magento. Por isso, não há como garantir que ele vá funcionar em versões mais novas. Caso necessite de suporte, por favor, utilize o fórum oficial do Magento ou outros fóruns, como o da Comunidade Magento, e veja se alguém pode te ajudar.

BrunoAssarisse_PagSeguro (link para o Magento Connect)

Última atualização: v1.1.5 – 06/10/2010 (download direto)
Para changelog e agradecimentos, baixe o arquivo Leia-me.txt (também contido no pacote do módulo).

Sobre o módulo

Este módulo foi originalmente baseado na terceira versão do módulo da Visie, o qual já teve atualizações e não se encontra mais disponível para download. Além disso, segundo documentação anterior, foi originalmente programado por Gustavo Dutra (WebLibre).

No entanto, depois de tantas modificações, o módulo mudou completamente e não é mais somente uma personalização, mas sim um módulo a parte. Até o momento, foram efetuados testes no Magento 1.3 e 1.4. Para informações sobre changelog e agradecimentos, confira no arquivo Leia-me.txt contido no pacote de download do módulo.

Neste módulo, os status dos pedidos são utilizados de uma maneira um pouco diferente, na tentativa de prevenir a criação de pedidos duplicados na loja. Quando o cliente é direcionado ao site do PagSeguro, o pedido dele já está incluso no sistema. O que ocorre é que algumas pessoas hesitam quando chegam na parte de pagamento e algumas vezes entram em contato para tirar dúvidas. Assim, seguem as descrições dos status dos pedidos:

Pendente (Pending):
O pedido apenas foi incluído e o pagamento não foi efetuado/selecionado no PagSeguro.

Em espera (On hold):
O pagamento está em análise ou ainda não foi efetuado (para o caso de boleto).

Processando (Processing):
O pagamento foi confirmado, a fatura já foi criada, e o pedido requer o envio do(s) produto(s).

Completo (Complete):
As informações de envio foram inseridas no pedido.

Lembrando que a única alteração executada pelo administrador da loja é de “Processando” para “Completo”, pois os retornos do PagSeguro devem fazer o restante. Para efetuar essa alteração no pedido, basta que o envio seja adicionado a ele, e o status mudará automaticamente.

Instalação

Primeiramente, lembre-se de sempre efetuar um backup do banco de dados e dos arquivos de sua loja antes de efetuar qualquer alteração.

O módulo está disponível para instalação através do Magento Connect.

Porém, caso esteja fazendo a instalação manual do módulo, basta transferir a pasta ‘app’ contida no arquivo baixado para a raiz da instalação de sua loja.

Tanto na instalação manual quanto através do Magento Connect, limpe o cache e o módulo deverá estar disponível para utilização no sistema. Para conferir se a instalação ocorreu sem problemas, acesse a administração e procure pelo módulo “PagSeguro – Bruno Assarisse” em “Sistema > Configuração > Vendas > Métodos de pagamento“.

Atenção: se você removeu o módulo anterior (antes da data de 27/07/2010), ou o módulo da Visie, para instalar este, você deve executar a limpeza do banco de dados através das queries SQL presentes da seção “Atualização” desta página, para que não haja erros na criação de faturas e/ou envios (“Invalid model for shipping method“).

Atualização

Devido à reestruturação do módulo, não há nenhuma ação a ser tomada ao atualizar o módulo, pois ele não sobrescreve nenhum dos arquivos antigos e se mantém ativo juntamente às versões anteriores a 27/07/2010. Apenas recomendo a limpeza dos caches após a atualização.

No entanto, caso deseje efetuar a desinstalação do módulo anterior (ou o da Visie) por completo, além de excluir os arquivos, é necessário a execução de duas queries SQL em seu banco de dados:

DELETE FROM `core_resource` WHERE `code` LIKE '%pagseguro_setup%';
DELETE FROM `core_config_data` WHERE `path` LIKE '%/pagseguro%';

Atenção: se seu sistema já possui pedidos feitos com o módulo anterior (ou mesmo com o da Visie), recomendo mantê-lo, mesmo que desativado, para prevenção de erros.

Configuração de sua conta PagSeguro

Antes de colocar o módulo para funcionar, é necessário efetuar algumas configurações em sua conta do PagSeguro, conforme seguem:

Frete:
Acesse “Preferências > Frete” e escolha a opção “Frete adicional com valor fixo”. No campo “Valor fixo para os itens adicionais” deixe “0,00″. Clique no botão “CONFIRMAR” para salvar a configuração. Desta maneira, o PagSeguro receberá o valor do frete enviado pela sua loja corretamente.

Retorno automático:
Acesse “Preferências > Retorno automático de dados”. Na área “Ative a URL de retorno”, selecione “Ativar” e, no campo “URL de retorno”, o endereço que deve ser colocado se assemelha ao seguinte, bastando substituir o domínio/caminho pelo da sua loja:

http://www.seusite.com.br/pagseguro/pay/return

Porém, caso não possua o rewrite ativado em sua loja, utilize a seguinte URL:

http://www.seusite.com.br/index.php/pagseguro/pay/return

Depois disso, basta clicar no botão “Salvar” para efetuar a alteração. Mais abaixo, em “Token para conferência de segurança”, caso já não o tenha feito, clique no botão “GERAR” para criar um novo Token. Copie o código gerado para colocá-lo, depois, na configuração do módulo em sua loja.

Configuração do módulo

Uma vez que sua conta do PagSeguro esteja devidamente configurada, passamos às configurações do módulo. A seguir estão as descrições dos principais itens:

Habilitado:
Troque para “Sim” para que o método de pagamento se torne disponível em sua loja.

Título:
O nome exibido ao cliente quando este estiver escolhendo o método de pagamento de seu pedido.

Status dos novos pedidos:
Creio que este campo seja auto-explicativo, além de não haver o que configurar. Apenas deixe como “Pendente”.

Email da conta PagSeguro:
Coloque aqui o email de cadastro da sua conta do PagSeguro.

Token:
Copie aqui o código gerado na página de retorno automático de sua conta. É através deste código que a comunicação entre o servidor de sua loja e o PagSeguro será autenticada.

Modelo de endereço personalizado:
Como padrão, o módulo utiliza o primeiro campo de endereço para extrair o logradouro, o número e o complemento, e o segundo campo inteiro como bairro. Dessa forma, deve-se utilizar obrigatoriamente duas linhas de endereço para o registro do cliente (“Sistema > Configurações > Clientes > Configuração de cliente > Opções de nome e endereço“). Porém, ao escolher o modelo personalizado, é necessário disponibilizar quatro campos de endereço, pois cada um será usado para uma informação distinta (logradouro/rua, número, complemento e bairro, respectivamente). Sendo assim, é recomendado que algumas personalizações (presentes nesta página) sejam feitas no tema para rotular devidamente estes campos.

Exibir parcelamento:
Permite que o cliente, ao escolher o método de pagamento, tenha uma prévia de como poderá parcelar seu pagamento após incluir seu pedido. É importante notar que o cálculo é uma reprodução do processo do PagSeguro e pode conter diferenças de R$0,01 (um centavo) para mais ou para menos.

Parcelamento sem juros:
Caso tenha ativado o parcelamento sem juros em sua conta do PagSeguro, configure aqui da mesma maneira para que a visualização do parcelamento esteja correta.

Desconto à vista:
Ao utilizar o parcelamento sem juros, pode-se optar por oferecer desconto ao cliente no caso de pagamento por boleto, TEF ou saldo PagSeguro. Informe o cliente disso ativando essa opção.

Mensagem adicional:
Este campo é opcional. Caso haja conteúdo nele, este será exibido ao cliente na escolha do método de pagamento, logo abaixo da informação sobre o redirecionamento ao PagSeguro. Naturalmente, você poderá utilizar HTML para colocar imagens e links.

Agrupamento de valores:
Por padrão, os produtos e as taxas são enviados como itens separados e, caso exista algum desconto no pedido, este valor será enviado através do campo “extras” do PagSeguro. Mas caso deseje enviar apenas um item contendo o preço total da compra, incluindo taxas adicionais e descontos, sem descriminar cada produto separadamente, basta ativar esta opção.

Preço de frete:
Escolhendo “Separado”, o frete é exibido no campo designado do PagSeguro. A segunda opção, “Como produto”, enviará o valor do frete como um item separado, da mesma forma que os produtos são enviados, com a vantagem de exibir mais informações sobre o envio do pedido. Já a última, “Agrupado”, tem o mesmo efeito da anterior, porém soma o preço do frete ao valor total do pedido caso o agrupamento de valores esteja ativado.

Utilizar página do CMS como retorno:
Ativando esta opção, ao retornar da página do PagSeguro, o cliente não será direcionado à página de sucesso personalizada do módulo, com informações de seu pedido e pagamento, mas sim para a página do CMS selecionada na próxima opção.

Página CMS de Retorno:
Selecione, dentre as páginas criadas em sua loja (“CMS > Páginas“), o destino de seu cliente quando o mesmo retornar do site do PagSeguro. Caso utilize esta opção, recomendo que esta página deixe claro ao cliente de que o processo foi concluído com sucesso, além de informá-lo de seus próximos passos e indicá-lo como conferir a situação de seus pedidos.

Utilizar cURL:
Desabilite essa opção caso tenha problemas de compatibilidade com seu servidor, ou se seu Magento for versão 1.3. A conexão com o servidor do PagSeguro, durante o retorno automático de dados, será feita diferentemente.

Outras configurações

Campos de endereço:
Acesse “Sistema > Configurações > Clientes > Configuração de cliente > Opções de nome e endereço“. Caso utilize o modelo de endereço personalizado, deixe o campo “Número de linhas” configurado com o valor ’4′. Do contrário, mantenha este campo com o valor ’2′.

Logs:
Caso deseje registrar as ações do retorno automático de dados enviado pelo PagSeguro, você deve ativar a criação de logs do Magento, em “Sistema > Configurações > Avançado > Desenvolvedor > Configuração de log“. Por padrão, o caminho do arquivo de log será ‘/var/log/system.log’, mas você pode alterar isso também nesta área.

Personalizações recomendadas

Ao utilizar este módulo, há algumas alterações que podem ser feitas no tema de sua loja, a fim de melhorar a usabilidade por parte do cliente. Vale lembrar que as modificações aqui listadas são exemplos, e podem ser adaptadas conforme desejado. Caso deseje, você pode baixar os arquivos *.phtml alterados, a partir do tema padrão da versão 1.4 do Magento.

Exibição de informações de pagamento na listagem de produtos

Arquivo:
/app/design/frontend/default/[SEU_TEMA]/template/catalog/product/list.phtml

Localize:

<?php $_productCollection=$this->getLoadedProductCollection() ?>

Insira antes:

<style type="text/css">
.price-box-alt {
    clear: left;
    font-size: smaller;
    color: #444444;
}
</style>
<?php
$pagseguro = Mage::getSingleton("brunoassarisse_pagseguro/payment");
$helper = Mage::helper("brunoassarisse_pagseguro");
$installmentsAdd = $pagseguro->getConfigData('installments_add');
$installmentsShow = (boolean) ($pagseguro->getConfigData('installments_show') && $installmentsAdd >= 2);
$installmentsUpfront = (boolean) ($pagseguro->getConfigData('installments_upfront'));
?>

Localize (há duas ocorrências, faça a alteração em ambas):

<?php echo $this->getPriceHtml($_product, true) ?>

Insira depois:

                    <?php
                    $productFinalPrice = $_product->getFinalPrice();
                    if ($installmentsShow && $productFinalPrice > 0) {
                        $price_msg = "";
                        if ($installmentsUpfront) {
                            list($upfrontPrice) = $helper->calculateUpfrontPrice($productFinalPrice, $installmentsAdd);
                            $price_msg .= "à vista por <strong>R$$upfrontPrice</strong>" . $price_msg;
                        }
                        list($parcel_value, $parcels) = $helper->getMinParcelWithoutRate($productFinalPrice, $installmentsAdd);
                        if ($parcels > 1) {
                            if ($price_msg != "") {
                                $price_msg .= "<br /> ou ";
                            }
                            $price_msg .= "em <strong>{$parcels}x</strong> de <strong>R$$parcel_value</strong>";
                        }
                        echo '<div class="price-box price-box-alt">' . $price_msg . '</div>';
                    } // $installmentsShow
                    ?>

Observação:
Caso este arquivo list.phtml indicado não exista em seu tema, copie-o do seguinte caminho, de acordo com a versão de seu Magento:
Magento 1.3: /app/design/frontend/default/default/template/catalog/product/list.phtml
Magento 1.4: /app/design/frontend/base/default/template/catalog/product/list.phtml

Exibição de informações de pagamento na visualização de produtos

Arquivo:
/app/design/frontend/default/[SEU_TEMA]/template/catalog/product/view.phtml

Localize:

<?php echo $this->getChildHtml('other');?>

Insira depois:

<?php echo $this->getChildHtml('brunoassarisse_pagseguro_installments');?>

Observação:
Caso este arquivo view.phtml indicado não exista em seu tema, copie-o do seguinte caminho, de acordo com a versão de seu Magento:
Magento 1.3: /app/design/frontend/default/default/template/catalog/product/view.phtml
Magento 1.4: /app/design/frontend/base/default/template/catalog/product/view.phtml

Adição de botão de pagamento na página de visualização do pedido

Arquivo:
/app/design/frontend/default/[SEU_TEMA]/template/sales/order/view.phtml

Localize:

<div class="buttons-set">

Insira antes:

<?php
//Botão para pagamento do PagSeguro
echo $this->getChildHtml('brunoassarisse_pagseguro_paylink');
?>

Observação:
Caso este arquivo view.phtml indicado não exista em seu tema, copie-o do seguinte caminho, de acordo com a versão de seu Magento:
Magento 1.3: /app/design/frontend/default/default/template/sales/order/view.phtml
Magento 1.4: /app/design/frontend/base/default/template/sales/order/view.phtml

Alteração do rótulo de telefone

Arquivos:
/app/locale/[pt_BR]/Mage_Checkout.csv
/app/locale/[pt_BR]/Mage_Customer.csv

Alterações:
Procure pelo termo “Telephone” (com as aspas) e substitua a linha que encontrar por:
“Telephone”,”DDD e Telefone”

Alteração do rótulo de endereço (modelo padrão)

Arquivos:
/app/locale/[pt_BR]/Mage_Checkout.csv
/app/locale/[pt_BR]/Mage_Customer.csv

Alterações:
Procure pelo termo “Street Address” (com as aspas) e substitua a linha encontrada por:
“Street Address”,”Endereço / Bairro”

Observação:
Próximo a linha encontrada, deverão haver strings similares (“Street Adress ” e “Address”). Altere-as da mesma maneira.

Reorganização dos campos de endereço (modelo personalizado)

Arquivo:
/app/design/frontend/default/[SEU_TEMA]/template/checkout/onepage/billing.phtml

Localize:

                <li class="wide">
                    <label for="billing:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
                    <div class="input-box">
                        <input type="text" title="<?php echo $this->__('Street Address') ?>" name="billing[street][]" id="billing:street1" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" class="input-text required-entry" />
                    </div>
                </li>
            <?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
                <li class="wide">
                    <div class="input-box">
                        <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="billing[street][]" id="billing:street<?php echo $_i?>" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet($_i)) ?>" class="input-text" />
                    </div>
                </li>
            <?php endfor ?>

Troque por:

            <?php
            $pagseguro = Mage::getSingleton("brunoassarisse_pagseguro/payment");
            if ($pagseguro->getConfigData('custom_address_model')) {
            ?>
            <li class="fields">
                <div class="field">
                    <label for="billing:street1" class="required"><em>*</em>Endereço</label>
                    <div class="input-box">
                        <input type="text" name="billing[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" title="Endereço" id="billing:street1" class="input-text required-entry" />
                    </div>
                </div>
                <div class="field">
                    <label for="billing:street2" class="required"><em>*</em>Número</label>
                    <div class="input-box">
                        <input type="text" name="billing[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(2)) ?>" title="Número" id="billing:street2" class="input-text required-entry" />
                    </div>
                </div>
            </li>
            <li class="fields">
                <div class="field">
                    <label for="billing:street3">Complemento</label>
                    <div class="input-box">
                        <input type="text" name="billing[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(3)) ?>" title="Complemento" id="billing:street3" class="input-text" />
                    </div>
                </div>
                <div class="field">
                    <label for="billing:street4" class="required"><em>*</em>Bairro</label>
                    <div class="input-box">
                        <input type="text" name="billing[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(4)) ?>" title="Bairro" id="billing:street4" class="input-text required-entry" />
                    </div>
                </div>
            </li>
            <?php
            } else {
            ?>
                <li class="wide">
                    <label for="billing:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
                    <div class="input-box">
                        <input type="text" title="<?php echo $this->__('Street Address') ?>" name="billing[street][]" id="billing:street1" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" class="input-text required-entry" />
                    </div>
                </li>
            <?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
                <li class="wide">
                    <div class="input-box">
                        <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="billing[street][]" id="billing:street<?php echo $_i?>" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet($_i)) ?>" class="input-text" />
                    </div>
                </li>
            <?php endfor ?>
            <?php
            }
            ?>

Arquivo:
/app/design/frontend/default/[SEU_TEMA]/template/checkout/onepage/shipping.phtml

Localize:

                    <li class="wide">
                        <label for="shipping:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
                        <div class="input-box">
                            <input type="text" title="<?php echo $this->__('Street Address') ?>" name="shipping[street][]" id="shipping:street1" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" class="input-text required-entry" onchange="shipping.setSameAsBilling(false);" />
                        </div>
                        </li>
            <?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
                    <li class="wide">
                        <div class="input-box">
                            <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="shipping[street][]" id="shipping:street<?php echo $_i?>" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet($_i)) ?>" class="input-text" onchange="shipping.setSameAsBilling(false);" />
                        </div>
                    </li>
            <?php endfor ?>

Troque por:

            <?php
            $pagseguro = Mage::getSingleton("brunoassarisse_pagseguro/payment");
            if ($pagseguro->getConfigData('custom_address_model')) {
            ?>
            <li class="fields">
                <div class="field">
                    <label for="shipping:street1" class="required"><em>*</em>Endereço</label>
                    <div class="input-box">
                        <input type="text" name="shipping[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" title="Endereço" id="shipping:street1" class="input-text required-entry" onchange="shipping.setSameAsBilling(false);" />
                    </div>
                </div>
                <div class="field">
                    <label for="shipping:street2" class="required"><em>*</em>Número</label>
                    <div class="input-box">
                        <input type="text" name="shipping[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(2)) ?>" title="Número" id="shipping:street2" class="input-text required-entry" onchange="shipping.setSameAsBilling(false);" />
                    </div>
                </div>
            </li>
            <li class="fields">
                <div class="field">
                    <label for="shipping:street3">Complemento</label>
                    <div class="input-box">
                        <input type="text" name="shipping[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(3)) ?>" title="Complemento" id="shipping:street3" class="input-text" onchange="shipping.setSameAsBilling(false);" />
                    </div>
                </div>
                <div class="field">
                    <label for="shipping:street4" class="required"><em>*</em>Bairro</label>
                    <div class="input-box">
                        <input type="text" name="shipping[street][]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(4)) ?>" title="Bairro" id="shipping:street4" class="input-text required-entry" onchange="shipping.setSameAsBilling(false);" />
                    </div>
                </div>
            </li>
            <?php
            } else {
            ?>
                    <li class="wide">
                        <label for="shipping:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
                        <div class="input-box">
                            <input type="text" title="<?php echo $this->__('Street Address') ?>" name="shipping[street][]" id="shipping:street1" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" class="input-text required-entry" onchange="shipping.setSameAsBilling(false);" />
                        </div>
                        </li>
            <?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
                    <li class="wide">
                        <div class="input-box">
                            <input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="shipping[street][]" id="shipping:street<?php echo $_i?>" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet($_i)) ?>" class="input-text" onchange="shipping.setSameAsBilling(false);" />
                        </div>
                    </li>
            <?php endfor ?>
            <?php
            }
            ?>

Arquivo:
/app/design/frontend/default/[SEU_TEMA]/template/customer/address/edit.phtml

Localize:

            <li class="wide">
                <label for="street_1" class="required"><em>*</em><?php echo $this->__('Street Address') ?></label>
                <div class="input-box">
                    <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" title="<?php echo $this->__('Street Address') ?>" id="street_1" class="input-text required-entry" />
                </div>
            </li>
            <?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
            <li class="wide">
                <div class="input-box">
                    <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet($_i)) ?>" title="<?php echo $this->__('Street Address %s', $_i) ?>" id="street_<?php echo $_i?>" class="input-text" />
                </div>
            </li>
            <?php endfor ?>

Troque por:

            <?php
            $pagseguro = Mage::getSingleton("brunoassarisse_pagseguro/payment");
            if ($pagseguro->getConfigData('custom_address_model')) {
            ?>
            <li class="fields">
                <div class="field">
                    <label for="street_1" class="required"><em>*</em>Endereço</label>
                    <div class="input-box">
                        <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" title="Endereço" id="street_1" class="input-text required-entry" />
                    </div>
                </div>
                <div class="field">
                    <label for="street_2" class="required"><em>*</em>Número</label>
                    <div class="input-box">
                        <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(2)) ?>" title="Número" id="street_2" class="input-text required-entry" />
                    </div>
                </div>
            </li>
            <li class="fields">
                <div class="field">
                    <label for="street_3">Complemento</label>
                    <div class="input-box">
                        <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(3)) ?>" title="Complemento" id="street_3" class="input-text" />
                    </div>
                </div>
                <div class="field">
                    <label for="street_4" class="required"><em>*</em>Bairro</label>
                    <div class="input-box">
                        <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(4)) ?>" title="Bairro" id="street_4" class="input-text required-entry" />
                    </div>
                </div>
            </li>
            <?php
            } else {
            ?>
            <li class="wide">
                <label for="street_1" class="required"><em>*</em><?php echo $this->__('Street Address') ?></label>
                <div class="input-box">
                    <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" title="<?php echo $this->__('Street Address') ?>" id="street_1" class="input-text required-entry" />
                </div>
            </li>
            <?php for ($_i=2, $_n=$this->helper('customer/address')->getStreetLines(); $_i<=$_n; $_i++): ?>
            <li class="wide">
                <div class="input-box">
                    <input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet($_i)) ?>" title="<?php echo $this->__('Street Address %s', $_i) ?>" id="street_<?php echo $_i?>" class="input-text" />
                </div>
            </li>
            <?php endfor ?>
            <?php
            }
            ?>

114 thoughts on “Módulo PagSeguro para Magento

  1. Oi Bruno o modulo funciona na versão na 1.4.1.1 ?

    Tem um erro nessa versão do magento onde no Redirect do Pagamento a cesta de compra é esvaziada

  2. Sim, funciona na 1.4.1.1. Bom, se você se refere a cesta de compra no PagSeguro, isso não acontece nesse módulo. A cesta de compra que é esvaziada no mesmo momento do Redirect é a da loja, já que o pedido já foi incluído no sistema.

  3. Bruno parabéns pelo trabalho.

    Tire duas duvida:

    – É necessário mudar os nomes dos campos para o indicado acima ou não tem nada a ver? eu uso o meu endereço personalizado com os 4 campos que o magento oferece, respectivamente: Logadrouro, Numero, Complemento e Bairro, mas os campos estão em igles e eu traduzir no csv.

    — Quando é direcionado para o site do pagseguro os dados de endereço já aparece na página do pagseguro? no meu teste não apareceu os dados do endereço somente os valores e o nome do cliente.

  4. Olá, Luiz!

    Os nomes dos campos não serão mudados. As personalizações apenas reorganizam os campos, de uma forma simples.

    Pelo que entendi, você utiliza os campos exatamente como o módulo requer ao usar o modelo personalizado. Basta eles estarem de acordo com o original do Magento e tudo será enviado ao PagSeguro. Se não funcionou dessa forma, deve haver alguma incompatibilidade entre suas modificações e a forma como o módulo trabalha. Caso queira me contactar por email para analisarmos melhor, talvez enviando os arquivos .phtml de sua loja (os citados nas personalizações), fique à vontade.

  5. Olá Bruno, parabés pelo excelente módulo! Preciso alterar algumas coisas na página padrão de retorno do módulo. Como posso fazer isso sem ter que criar a página nova no CMS?

  6. Olá, Fábio, você pode efetuar as alterações no seguinte arquivo:
    /app/design/frontend/default/default/template/brunoassarisse_pagseguro/success.phtml

  7. Bom dia Bruno.
    Recebi esta mensagem:

    Notice: Undefined variable: parcelas_sem_juros in /home/fastbuy2/public_html/app/code/community/BrunoAssarisse/PagSeguro/Block/Form.php on line 76

    Você sabe o que pode ser?

  8. Olha funcionou, mas este erro acontece quando se coloca o desconto a vista.
    Tipo minha loja tem parcelamento. E desconto pra pagamento a vista, se eu ativer o desconto a vista aparece este erro.
    Se não ativar funciona normal.
    Por favor veja se é um erro só meu. Minha versão 1.4.0.1
    Abraço e parabéns.
    Show de bola o módulo.

  9. Olá, Sérgio, fiz a correção disso na versão 1.0.3. Muito obrigado por avisar!

  10. Só para postar um feedback testei na Versão: 1.2.0.3 e sem o rewrite base fiz funcionar direitinho só adicionando o /index.php/ antes de /pagseguro/ onde o módulo pede. funcionou 100% Tks

  11. Obrigado pelo feedback, Junior. Coloquei a instrução para isso aqui na página também.

  12. Oi Bruno! Ótimo módulo.
    Estou encontrando um erro ao finalizar no PagSeguro e retornando ao site. Coloco meu endereço: https://www.meuwebsite.com.br/pagseguro/pay/return
    E aparece meu website, com as colunas laterais direita e esquerda, porém em branco o meio do site. Não aparece meu checkout/onepage/sucess. É melhor eu colocar esse endereço em meu retorno?

  13. Olá, Henrique!
    Qual a versão do seu Magento? Você instalou pelo Magento Connect ou manualmente?
    Parece estar faltando algum arquivo, uma vez que, por padrão, a página de sucesso do módulo utiliza o template com apenas a coluna direita.
    Normalmente, não é possível utilizar a página de sucesso padrão do sistema através deste módulo, por isso a presença desta personalizada, a qual oferece vantagens adicionais.

  14. Bah, muito obrigada mesmo Bruno .
    é legal a tua iniciativa de auxiliar outras pessoas que tem interesse em aprender cada vez mais sobre o magento e utilizando módulos que realmente funcionam.

  15. Bruno, boa noite.
    Estou tendo o seguinte erro ao cancelar pedidos.

    “There has been an error processing your request
    Exception printing is disabled by default for security reasons.
    Error log record number: 1115856677″

    Já tentei corrigir seguindo o seguite tutorial:
    http://support.hostgator.com/articles/getting-started/general-help/magento-install-error-exception-printing-is-disabled

    Não está funcionando. Aparece a mensagem:
    “Não foi possível carregar as configurações do método de pagamento “pagseguro_standard”

    Estou usando a versão 1.4.1.1 e o módulo ModuloPagSeguro-latest.

  16. Olá, Fhillip!
    Como você utilizava a versão anterior, customizada a partir do módulo da Visie, provavelmente seu sistema está ‘sentindo a falta’ do módulo que possui este código, uma vez que, agora, o código do módulo é “brunoassarisse_pagseguro”.
    Para contornar isso, tente instalar o módulo da Visie em sua loja, deixando-o desabilitado mesmo, e veja se o erro ainda ocorre.

  17. Olá Bruno,
    Ví que você atualizou o módulo no dia 10/08. Quais modificações foram feitas?

    Abçs

  18. Olá, Marcio!
    Nessa versão, foi corrigido o erro ao utilizar produtos do tipo “bundled”, adicionado o ID da transação PagSeguro na página de sucesso e implementadas as funções necessárias para disponibilizar informações de pagamento (parcelamento) na listagem e visualização de produtos, bastando seguir as recomendações presente nesta página.
    No changelog, presente no arquivo Leia-me, você sempre encontrará as mudanças.
    Qualquer problema, é só me avisar!
    Abraço!

  19. Fui testar seu módulo.
    Cliquei em checkout e aconteceu o seguinte:

    Notice: Undefined variable: pagseguroEnabled in /home/geek-sheep/www/site/app/code/community/BrunoAssarisse/PagSeguro/Block/Form.php on line 71

  20. Olá, Will, obrigado por avisar do erro. Já corrigi, basta atualizar para a versão 1.1.1.

  21. Bruno, Boa Noite!

    Sou desenvolvedor do site do Maior Movimento de Torcidas do Brasil, Raça Rubro-Negra!

    Queria parabenizar pelo módulo! Pois foi o único que consegui fazer o procedimento de compra até o final.

    Mas estou tendo o seguinte problema.

    Faço todo o procedimento de compra dentro do Magento, depois todo procedimento de pagamento no PagSeguro, me retorna a página informando que minha compra foi concluida.. blz.. paguei.. cliente e administrador da loja recebem o e-mail do pagseguro de Pagamento Concluído e tal..
    Chego na administração dos pedidos e ele ainda está como “Pendente”.. é assim mesmo? Não era pra ele ficar com um status de Pago ou Pendente o Envio não? e quando tento clicar em Fatura ou Entrega, lá em cima.. ele dá o seguinte erro, “Invalid model for shipping method: pagseguro” e aquele monte de linhas embaixo.

    Pelo motivo deste erro não estou conseguindo flinalizar o pedido de teste que eu fiz dentro do painel de administração do magendo.

    =/

    PS.: O módulo do cálculo do frete que eu estou usando é o do Pedro Teixeira.

    Até mais!

  22. Olá, Thiago!
    Primeiramente, qual a versão de seu Magento?
    Você configurou o retorno automático de dados corretamente? Se sim, verifique nos logs se há alguma mensagem de erro.
    Sobre o erro que aparece ao criar a fatura ou o envio, ele ocorre por causa dos dados que ainda existem no sistema sobre o módulo da Visie. Para resolver, você pode manter o módulo instalado, apenas deixando-o desativado, ou executar as queries SQL presentes na área “Atualização” desta página.
    Abraço!

  23. Bruno, fiz a reinstalação pela pasta Base e deu certo, porém o link que eu tinha do eBit não aparece no pagseguro/pay/success/
    Da onde este link pega os dados? Como funciona o pagseguro/pay/success/ ?
    Obrigado.

  24. Henrique, para editar a página de sucesso, o arquivo é:

    /app/design/frontend/[default OU base]/default/template/brunoassarisse_pagseguro/success.phtml

    Estando de acordo com a forma que você disse ter instalado. Recomendo fazer uma cópia do arquivo ‘brunoassarisse_pagseguro/success.phtml’ para a pasta ‘template’ do seu tema e efetuar as modificações neste, para que atualizações do módulo não sobreescrevam suas alterações.
    Abraço!

  25. Versão do Magento: (versão. 1.4.1.1)

    Minha URL de retorno configurada no PagSeguro é a seguinte:
    http://www.racarubronegra.com.br/loja/index.php/pagseguro/pay/return

    Onde verifico os “logs” para conferir se o PagSeguro enviou o post informando a conclusão da compra pro Magento?

    O problema do Fatura ou Entrega, lá em cima.. eu consegui resolver fazendo a execução das duas queries SQL no meu banco de dados e depois baixei novamete os arquivos do visie, upei mas não ativei..

    No que puder ajudar ai eu agradeço!
    Abraço

  26. Thiago, você pode conferir como ativar e visualizar os logs na seção “Outras configurações” desta página.

  27. Oi Bruno!
    Está funcionando perfeitamente na 1.4.1.1.
    Você fez um excelente trabalho!

    Obrigado pelo update!

    Tenho uma pergunta…
    É possível adicionar um custo por utilizar o PagSeguro? (por exemplo: adicionar 8% sobre o preço do pedido para usar o PagSeguro).

    Isso seria para cobrir as taxas do PagSeguro.. O ideal seria adicionar uma quantia fixa (R$0,40) + uma porcentagem sobre o valor total.

    Abraço!

  28. Olá, Will!
    Pelo módulo creio que seria inviável fazer a implementação desse custo. É possível, mas sairia dos padrões do Magento.
    Você poderia fazer uma modificação para que o sistema aceite promoções com valores em negativo. Dessa forma, bastaria criar uma regra de carrinho com a condição da forma de pagamento ser o PagSeguro e configurar a taxa. Veja o link:
    http://php.quicoto.com/extra-fee-shopping-cart-price-rules-magento/
    No entanto, como alterar o core do Magento não é recomendado, o melhor seria fazer um pequeno módulo que extenda/sobrescreva as classes. Vou ver se faço isso, aí coloco disponível aqui na página.
    Abraço!

  29. Muito obrigado por esta opção de integração com o PagSeguro. A versão que eu estava usando não incluia nada no carrinho de compras mas esta agora ficou 100%.

  30. Olá Bruno! Parabéns pela iniciativa e pelo magnífico módulo.
    Só que estou com um problema que não consigo resolver:
    Depois de mandar para o pagseguro, ele me dá o seguinte erro:
    Erro 003 – Informações do vendedor inconsistentes
    Sabe o que pode ser? Já configureo o frete e tudo mais… mas não acho este erro. (Sei que é do pagseguro) Grato

  31. Parabéns pelo módulo.
    Estou testando em uma loja e pelo frontend, na hora de comprar, tudo vai bem, redireciona para o PagSeguro corretamente e tudo certo.
    Após o pedido ter sido feito, pelo backend, em Pedidos, clicando no pedido, os 2 botões “Fatura” e “Entrega” não estão funcionando, ao clicar gera erro.
    Pelo número do erro que foi gerado vi o seguinte nas primeiras linhas:

    a:5:{i:0;s:44:”Invalid model for shipping method: pagseguro”;i:1;s:5989:”#0 /home/loja/public_html/app/code/core/Mage/Shipping/Model/Config.php(104): Mage::exception(‘Mage_Shipping’, ‘Invalid model f…’)

    O que pode estar errado?
    Desde já agradeço!

    Obs: Estamos usando o módulo para frete com os Correios do PTeixeira.com.br.

  32. @Bruno
    Muito estranho esse problema. Na administração aparece normalmente? Qual a versão do Magento?

    @Cristhiano
    Realmente é problema na sua conta do PagSeguro. Já tentou entrar em contato com eles? Dê uma verificada em seus dados cadastrais.

    @Rodrigo
    Já houve orientação para a solução deste erro em vários locais, inclusive nesta página. Agora, a seção “Instalação” também contém uma chamada para avisar sobre a possibilidade de ocorrência desse problema, além de como solucioná-lo.

  33. Pessoal,

    Como funciona o retorno automático? O retorno é na hora que paga o produto ou demora uns minutos?
    Eu configurei tudo corretamente aqui pelo visto e fiz um teste efetuando um pagamento pelo PagSeguro e no Magento mostra o status como “Segurar” e visualizando o pedido mostra o seguinte:

    18/08/2010 10:23:04|Segurar
    Cliente Não Notificado
    Aguardando Pagto – Pagamento Online

    Porem também visualizando o pedido, em Informações de Pagamento mostra o seguinte:

    PagSeguro
    ID da transação: 572F0F74A4614D17B1EB8173F0F75463
    Forma de pagamento: Pagamento Online
    Moeda de pagamento usada BRL

    E na parte dos botões no pedido tem apenas 3: Voltar, Enviar e-mail e LIberar.

    Desculpe a ignorância mas está correto?
    Deveria ir para o status Processando ou está certo?

    Obrigado, o módulo é extraordinário.

  34. Olá, Rodrigo!
    Acredito que falta o PagSeguro confirmar o pagamento. A linha “Aguardando Pagto – Pagamento Online” mostra que o pagamento não foi aprovado/efetivado.
    Além disso, já dá pra saber que o retorno automático está funcionando, pois o primeiro retorno é efetuado segundos após a compra, quando o status do pedido muda para “Segurar” automaticamente.
    Vamos aguardar um pouco para ver se seu pedido muda para “Processando” automaticamente. Não se esqueça de deixar os logs ativados.
    Abraço!

  35. Po, upei e tal, quando entrei no painel do Magento não aparece a opção do PagSeguro! O que pode ser?

  36. Olá, Pablo!
    Você limpou os caches conforme recomendado nas instruções de instalação?

  37. Limpei! Tentei até em outro browser e nada! Estranho, né? Ninguém teve esse problema?
    To usando a versão 1.4.1.1, é a primeira vez que uso Magento, mas fiz tudo certo!

  38. Os caches que me refiro é do Magento, não do browser. E acho que a solução do problema não foi a configuração do frete. Bem, se funcionou, então está OK =)

  39. Olá Bruno, estou com o mesmo problema do Cristiano, (erro 003 – Informações do vendedor inconsistentes). e ja tentei quase q de tudo. estou com a ultima versao do magento 1.4.1 e a ultima do pagseg. que vc fez. help-me e parabens pelo serviço!

  40. Olá, Rodrigo!
    Esse erro 003 não é ocasionado pelo módulo. Vou fazer a mesma recomendação que fiz ao Cristhiano: verifique os dados cadastrais de sua conta e entre em contato com o PagSeguro.

  41. Alguem poderia me informar se na pagina de vizualização do pedido, o link “Reemitir boleto” faz um novo boleto com uma nova data de validade?

  42. Não, Bruno. Como o boleto é gerado pelo PagSeguro, o link de reemissão apenas direciona para a URL de geração de boleto deles, utilizando o código da transação.
    Abraço!

  43. Olá Bruno
    Obrigada pela elaboração d eum módulo tão útil pra todos nós!
    Estou com um problema!
    Instalei tudo bonitinho
    aparece a opsção de frete sedex e pac
    porém sedex está em 0,00 reais!
    e outra
    na hora de escolher a forma de pagamento não há nenhum botão de finalizar pedido ou para o redirecionamento para o pagseguro! simplesmente tem as duas opções (pagseguro e boleto bancário) mas nenhum botão! não tem como sair dalí!

    q q eu faço?
    please help me!!!

    Agradeço!

  44. Boa tarde Bruno… Estou tendo dificuldades em uma das partes, especificamente no retorno dos dados… Quando o pagamento é realizado, os dados do pedido não são atualizados…

    Por exemplo, um pedido quando o pedido volta do pagseguro, não atualiza os dados dele. Cai na página certa, porém não grava o pagamento… Alguma idéia???

    PS: Muito show cara, parab´ns pelo trabalho!

  45. Boa tarde Bruno,

    Eu abri o arquivo log e eu vi esses itens referentes ao Pagseguro…
    O que significa?

    2010-08-27T19:16:46+00:00 DEBUG (7): PAGSEGURO – [ Inicio do retorno ]
    2010-08-27T19:16:46+00:00 DEBUG (7): PAGSEGURO – Resposta de confirmacao: FALSO
    2010-08-27T19:16:46+00:00 DEBUG (7): PAGSEGURO – Confirmacao nao efetuada
    2010-08-27T19:16:46+00:00 DEBUG (7): PAGSEGURO – [ Fim do retorno ]
    2010-08-27T19:17:14+00:00 DEBUG (7): PAGSEGURO – [ Inicio do retorno ]
    2010-08-27T19:17:14+00:00 DEBUG (7): PAGSEGURO – Resposta de confirmacao: FALSO
    2010-08-27T19:17:14+00:00 DEBUG (7): PAGSEGURO – Confirmacao nao efetuada
    2010-08-27T19:17:14+00:00 DEBUG (7): PAGSEGURO – [ Fim do retorno ]

  46. @Ana Claudia
    Esse problema do frete não faz relação com esse módulo, pois ele não possui a parte de envio que o módulo da Visie possui, somente de pagamento.
    Além disso, ao escolher o PagSeguro no checkout, o usuário precisa passar ao próximo pedido e confirmar seu pedido, para só então ser direcionado ao PagSeguro.
    E para colocar uma imagem abaixo da opção, utilize o campo de mensagem opcional, na configuração do módulo, colocando o HTML da imagem que você deseja.

    @Wallysson Nunes
    Se o retorno automático de dados não está sendo confirmado, pode ser que o Token que você configurou esteja errado. Repita as instruções presentes nessa página para geração e configuração do Token em sua conta do PagSeguro e também do módulo, e depois faça mais testes. Você pode também tentar desativar o uso do cURL. Se não der certo, é só avisar!
    Qualquer coisa, deixe a versão do Magento que você utliza também, para facilitar.

    Abraços!

  47. Bruno,

    O script não consegue entrar na função “_confirma”, no Model Payment.

    Meu Log, fica mais ou menos assim…
    2010-08-27T19:16:46+00:00 DEBUG (7): PAGSEGURO – [ Inicio do retorno ]

    Fiz alguns testes para me retornar o post, e estou recebendo normal. O problema é que quando chega na parte.

    “$confirma = $this->_confirma($post);”

    Ele não continua, pára bem aí. O que poderá ser? Irei fazendo mais alguns testes aqui enquando aguardo sua reposta.

    Obrigado!

    PS: O modulo está muito bom, codigo bem limpo(ao contrário do da Visie). Está de Parabéns

  48. Olá, parabéns pelo seu trabalho, está muito bom e funcionando.
    Só queria saber o que fazer neste cenário abaixo (versão 1.4.1.1):
    O cliente é redirecionado mas abandona por qualquer motivo a página do PagSeguro não concluindo a transação, quando ele depois volta ao site qual o procedimento? Porque parece que se o pedido não for cancelado no backend, os produtos que ele comprou ficam indisponíveis para nova tentativa de fechar compra se o estoque zerar.
    E aconteceu em um teste que quando tento a recompra, os produtos aparecem duplicados no carrinho, alguém mais?

  49. Bruno,

    Troquei o CURL pelo modo HTTP e funcionou… mas aí fica aquela duvida. Por que será q o CURL não rolou, se está configurado no meu servidor? E outra, será que o nivel de seguraça é mesmo?

    Valeu!

  50. Oi,

    Quanto aos produtos duplicados, notei que o magento acrescenta os produtos de recompra ao carrinho cada vez que clico recompra, independente de estoque. Pensava que ao clicar recompra, o Magento deveria esvaziar o carrinho e fazer a recompra do zero.

    Neste caso, apesar do erro de estoque insuficiente no carrinho porque eu coloquei a opção Sistema/Configuração/Estoque/Rejeitar Pedido: Quando Estoque abaixo de zero e avisar cliente. Se o cliente finalizar a compra, o magento aceita e finaliza.

  51. Oi, desculpe os três comentários mas o site está finalizando qualquer pedido sem estoque mesmo que eu coloquei a opção para rejeitar e avisar cliente, isso tem algo a ver com este módulo?

  52. Mais eu eim…

    Só mais um comentário por enquanto prometo ‘X’, ao finalizar o pedido, o cliente recebe um e-mail mesmo que não feche com o PagSeguro, não seria melhor esperar o pedido entrar em análise para enviar um e-mail para o cliente?

  53. Olá, Bruno

    Seu trabalho com este módulo é muito, mas muito bom! Parabéns!

    O encontrei depois de dificuldades com o módulo da Visie e logo percebi que se tratava de outro nível de seriedade e profissionalismo. Espero que o PagSeguro perceba isso rapidamente e passe a indicá-lo no lugar da Visie.

    Pra resumir, instalei seguindo suas ótimas instruções e tudo funcionou perfeitamente, na primeira. A loja foi ao ar, centenas de pedidos e até hoje sem qualquer problema.

    Nesta manhã, no entanto, houve um problema no retorno automático de dados. Pelo log, vejo 3 casos onde o servidor do PagSeguro não retornou resposta de verificação, repondendo com a página de manutenção ao invés de “VERIFICADO”. Me pareceu estranho, porque o retorno partiu deles, não? Se partiu deles, o servidor funcionava…

    Os incidentes ocorreram entre as 8h48 e 9h13 (GMT). Será que saberia explicar como isso pode acontecer?

    Abraços e parabéns mais uma vez!

    Maurício

  54. @Eduardo
    Não sei dizer qual o problema de não ter funcionado com o cURL, mas foi justamente por essas incompatibilidades que adicionei a configuração para não usá-lo. No log de erros do servidor (não do Magento), não apareceu nenhuma mensagem mais esclarecedora?
    Na biblioteca da Visie, é escrito que é preferível usar cURL (por isso o deixei padrão), mas o motivo não é especificado e ambos funcionam sem problemas (pelo menos, na maioria dos servidores). Pelo que pesquisei, o Socket é mais rápido, porém não vi diferenças tão gritantes.

    @Pedro
    Não acho que esse problema ocorre por algo relacionado ao módulo, mas vou fazer alguns testes. Se descobrir algo, lhe aviso.

    @Mauricio
    Esse erro já ocorreu comigo também, inclusive em outros sistemas. Não encontrei outro motivo a não ser a instabilidade do servidor que faz os retornos. Ao receber o POST do PagSeguro, o Magento contacta de volta o servidor, que, em questão de instantes, para de funcionar.
    Poderíamos tentar identificar, no módulo, essa mensagem de falha e permitir a continuação do processo, mas não sei se é uma boa ideia.

    Abraços!

  55. Bruno, parabéns pelo módulo.

    Realizei 2 testes de compra, escolhendo a pção de débito online (Banco Real) – isso jána página do pagseguro.

    É aberta uma janela com o site do Banco para eu entrar com as informações de agência, conta, senha e depois com o código de segurança do banco para fazer a transação. Ao final é exibida uma mensagem confirmando que o pagamento foi realizado e um botão “Voltar à Loja” (isso tudo na janela que abriu com a página do Banco Real).
    Ao clicar nesse botão, ocorre o seguinte erro:

    HTTP Status 404 – /bpag2/servlet/real

    type Status report

    message /bpag2/servlet/real

    description The requested resource (/bpag2/servlet/real) is not available.
    Apache Tomcat/6.0.18

    Apesar do erro, eu verifiquei no meu extrato bancário que o débito foi realizado normalmente e o valor se encontra na minha conta do pagseguro para resgatar.
    Esse erro tem relação com o módulo ou é do próprio Banci Real mesmo? Não testei com outros bancos ainda, somente com o Real.

    Obrigado.

  56. Olá, Thiago!
    Uma vez que você tenha atingido a escolha da forma de pagamento no PagSeguro, qualquer erro gerado a partir daí não é relacionado ao módulo (a não ser quando o PagSeguro redireciona de volta à loja).
    De qualquer forma, essas mensagens deixam explícito que é algum erro do servidor do banco mesmo. Se possível, tente pagar através de outra instituição, além de testar as outras formas de pagamento, para ver como funcionará.
    Só para confirmar: você configurou o retorno automático de dados? Os pedidos que você testou o pagamento através do Banco Real tiveram seus status alterados ou continuram como “Pendentes”?

  57. Olá, Antônio.
    Há instruções para isso nesta mesma página, em “Personalizações recomendadas”.

  58. Warning: include(/home/v8web/www/loja/app/design/frontend/blank/default/template/brunoassarisse_pagseguro/form.phtml) [function.include]: failed to open stream: No such file or directory in /home/v8web/www/loja/app/code/core/Mage/Core/Block/Template.php on line 144

  59. @stive
    Qual a versão de seu Magento? Já tentou copiar a pasta ‘brunoassarisse_pagseguro’ para o caminho que o sistema está pedindo (dentro do diretório do tema ‘blank’)?

  60. Parabéns pelo módulo
    eu tenho apenas uma dúvida, é possivel exibir os valores do parcelamento do pag seguro na pagina que exibe o produto.
    Ex.R$ 180,00
    1×180,00 2×90,00 3×60,00

  61. Olá, elio!
    Caso não tenha efetuado as alterações para exibir o parcelamento, confira a seção “Personalizações recomendadas”, nesta página.
    Para exibir da forma como você descreveu, basta editar o seguinte arquivo:
    /app/design/frontend/default/default/template/brunoassarisse_pagseguro/installments.phtml

    Abraço!

  62. Ola Bruno, tudo bem?

    O pagSeguro parou de redirecionar quando fizemos a atualizacao para 1.4.1… ele simplesmente ignora e nao vai para o Site… o que pode estar acontecendo? Alguma pista? URL Rewrite?

  63. Boa noite amigo. Estou implementando o pagseguro no magento e quando vou para o passo que abrirá o site do pagseguro para pagar da o seguinte erro: Requested Payment Method is not available

    O que pode ser? Já fiz de tudo.

    Abraços,
    Augusto.

  64. Olá Bruno, estou usando magento versão 1.3 e já instalei na mão desistalei apagando tudo e reinstalei pelo magento connect. Instala tudo direitinho faço a configuração tudo OK, mas quando faço qualquer compra não aparece opção nenhuma de pagamento. Poderia me ajudar pois este módulo é um dos melhores que já vi. Obrigado

  65. Bruno, parabéns pelo trabalho… realmente muito bom!

    Estou com uma dúvida, quando vou clicar em Confirmar Pedido, aparece o seguinte erro: “Requested Payment Method is not available”. O que pode ser?

    Muito obrigado.

    Abraços
    =]

  66. Olá Bruno parabens seu modulo é muito bom, só tenho uma duvida o parcelamento sem juros tambem deve estar habilitado para que as pacelas sejam mostradas na visualização do produto??

    editei o arquivo view.phtml do meu tema conforme mostrado aqui mas mesmo assim as parcelas não aparecem…
    existe outro arquivo que eu deva editar??

    obrigado

  67. @Eduardo
    O que acontece ao clicar no botão de inclusão de pedido, na última etapa do checkout? É nesse momento que o cliente é redirecionado ao PagSeguro.

    @Augusto e @Marcelo
    Há algum outro módulo de pagamento configurado no Magento de vocês? Não faço ideia da causa desse erro, então, caso queiram, entrem em contato por email para que possamos verificar melhor.

    @Fabio
    O módulo está ativado? As configurações de países está correta?

    @Marcio
    O parcelamento sem juros não precisa estar ativado para que as informações de pagamento apareçam, basta ativar a exibição. Também não há nenhum outro arquivo a ser editado além dos indicados nesta página. Pode ser que algum módulo que você possui instalado configure o Magento para utilizar outros arquivos, fora da pasta de seu tema.

  68. Instalei aqui localmente para testes.
    Primeiramente ao direvionar para a página do Pagseguro deu um erro..
    Disse que o nome do item 1 era muito grande…
    Eu tinha cadastrado um produto que copiei do site das Americanas. .eles usam no nome do produto colocar quase toda a descrição..
    Vai ai a dica:
    O Pagseguro tem um limite para o tamanho do campo do Nome do produto…

    Resumindo, alterei o nome do produto e ui para outro teste.
    Ao entrar na página do PagSeguro dá agora o seguinte erro:

    Erro 105 – O campo EMAIL não foi informado

    Como resolver?

    E não posso esquecer de parabeniza-lo pelo excelente módulo

  69. Cara, só para dar os parabéns e agradecer! Com certeza você já sabe, mas o magento da kinghost (com instalação automática), já está vindo com o seu módulo (versão do magento 1.4) e não tive problemas! Também estou aplicando suas dicas daqui (como exibir parcelamentos) sem problemas! Obrigado!

  70. @Ricardo
    Muito obrigado pela dica, alterarei para isso não ocorrer e em breve lançarei uma versão corretiva. Sobre o outro erro, você fez alguma personalização no módulo? Essa mensagem indica a falta do email de cobrança, ou seja, o email da sua conta PagSeguro, com a qual deve ser configurado o módulo. As configurações estão todas corretas?

    @Geraldo
    Dessa eu não sabia! =D
    Obrigado pelo feedback!

  71. Olá, Daiamon
    De fato, o módulo muda a situação do pedido somente até “Processando”, necessitando da criação do envio para mudar para “Completo”.
    Você necessita disso para o uso de produtos para download? Acredito que seria necessária uma alteração no módulo mesmo, uma vez que isso poderia ser considerado até como um erro, pois, realmente, o correto seria dar o pedido por completo se o mesmo possuir somente produto para download.

  72. Isso mesmo Bruno. Sâo produtos para download por isso quero deixar automático, assim otimiza o processo para o cliente. Você tem interesse no desenvolvimento dessa melhoria? Se sim, me envie um orçamento por favor. Isso vai me ajudar muito e aos demais parceiros. Abraço.

  73. Daiamon, a alteração foi bem simples, não havia a necessidade de orçamentos. Baixe a nova versão que já possui essa melhoria que você precisa, além de outras.
    Qualquer problema, é só avisar!

  74. Olá, Bruno.
    Estou usando o Magento 1.4.1 e o seu módulo (aliás, parabéns).
    Estou testando o retorno automático mas infelizmente não está funcionando, olha a mensagem gerada no log:

    DEBUG (7): PAGSEGURO – Resposta de confirmacao: Unknown data
    DEBUG (7): PAGSEGURO – Confirmacao nao efetuada

  75. Olá, Michel!
    Nunca vi o retorno do Pagseguro dessa forma, já que quando a confirmação não é efetuada, a resposta é ‘FALSO’. O Token está configurado corretamente? Os logs de erro do servidor apresentam alguma coisa? Se você estiver usando o CURL, tente desabilitá-lo.
    Pode ser também alguma instabilidade do PagSeguro.

  76. Que beleza heim Bruno. Mas fiz um novo teste, instalei o plugin, reconfigurei tudo como manda seu roteiro e a compra consta como pendente na loja ainda, mesmo tendo sido aprovada na hora por cartão de crédito. Tem alguma informação adicional que precise ser adicionada? Desde já agradeço o empenho e ajuda cara. Vai me adiantar muito o trabalho. Vlw

  77. Daiamon, você fez as configurações do retorno automático (token, URL, etc.), correto? Se sim, tente ativar/verificar os logs para ver se o retorno está sendo executado e se há alguma mensagem relevante.

  78. Sim eu configurei o TOKEN, URL e tudo mais conforme orienta em seu site. Olha abaixo o LOG. Aparentemente está se comunicando, mas na loja não alterou o status do pedido.

    2010-09-30T18:06:40+00:00 DEBUG (7): PAGSEGURO – [ Inicio do retorno ]
    2010-09-30T18:06:41+00:00 DEBUG (7): PAGSEGURO – Resposta de confirmacao: VERIFICADO
    2010-09-30T18:06:41+00:00 DEBUG (7): PAGSEGURO – Confirmacao efetuada
    2010-09-30T18:06:41+00:00 DEBUG (7): PAGSEGURO – Pedido #100000002: Aprovado

  79. Daiamon, os logs chegaram até [ Fim do retorno ] ou acaba aí? Se não chegou, deu algum erro, que deve estar listado no log de erros do servidor.

  80. Boa tarde Bruo, não quero incomodar brother, mas você tem previsão da corrção desse problema? Ou será que é alguma configuração que deixei de fazer? Eu ja revisei algumas vezes o seu roteiro. mais uma vez obrigado cara.

  81. Daiamon, você já analisou os logs de erros do servidor (não do Magento), conforme lhe recomendei?

  82. Olá Bruno, primeiramente parabens pelo ótimo módulo, do qual consegui usar sem problemas, diferente de muito por aí.

    Porém estou com o seguinte problema:
    Quando vou em pedidos, e tento faturar ou entregar, ocorre o erro:

    There has been an error processing your request

    Exception printing is disabled by default for security reasons.

    Error log record number: 1810913131

    Por que isso ocorre?

    Obrigado.

  83. Olá, Giovanni!
    O Magento, por padrão, não exibe as mensagens de erro e as grava no seguinte caminho: /var/report. Basta ir até este diretório e localizar o arquivo de mesmo nome do número informado (o “record number”).
    No entanto, acredito que o erro seja por você ter utilizado anteriormente o módulo da Visie e removido seus arquivos. Se for isso mesmo, a solução já foi escrita aqui, além de instruções pertinentes estarem presentes na seção “Atualização”.

  84. Bruno Boa tarde!

    Parabéns pelo seu módulo do PagSeguro para Magento, realmente funciona perfeitamente.

    Esou precisando de um auxilio para configurar a Página de retorno automático do PagSeguro, que não aparece!

    O que preciso fazer? Na página do PagSeguro, nas instruções de Retorno Automático, ele informa que tenho que adicionar um código em PHP.

    Como funcionaria no teu Módulo, pelo que ue vi ele tem uma página de “Sucess”.

    Muito Obrigado!

    Emerson

  85. Bruno!
    Parabéns por seu módulo. Acabei de instalar e estou começando a usar, mas já vi que ele é muito legal, muito bem feito. Estou muito contete.
    Sucesso!!
    Artur

  86. Quando coloco na quantidade mais do que 1 item, a opção: Visualizar simulação de pagamentos não faz nada, com 1 item aparece normalmente.

    Obrigado

  87. @Emerson
    O módulo já vem preparado para isso, sim. Basta configurar sua conta PagSeguro de acordo com a seção “Configuração de sua conta PagSeguro” desta mesma página.

    @Raul
    Qual versão do Magento você utiliza? Em meus testes a simulação ocorreu normalmente, em várias versões. Pode ser alguma particularidade de seu sistema.

  88. Olá Bruno, tudo bem?
    Estou tendo o mesmoproblema que o Henrique postou a um tempo atrás. Ao finalizar a compra, o Pagseguro retorna para a loja mas a tela fica em branco com apenas a coluna esquerda e direita do tema. Já fiz varios testes, chequei o log do magento em busca de arquivos faltando mas nada. Segui passo-a-passo a instalação do seu modulo, todos os phtml configurados e dentro da base mas nao funciona nem com reza brava!
    Obs: tenho o mesmo módulo funcionando em uma outra loja identica mas com um template diferente, mas não apresenta problema. Poderia ser algo com o template que uso?

    Versão do magento: 1.4.1.1
    Versão do Módulo 1.1.5

    Abraço!

  89. Oi Bruno, resolvi o problema. Eu utilizava a versão antiga do meu modulo, que gravava os arquivos do design dentro do ‘base’. Nessa sua versão nova, vc joga no default. Movi os arquivos do default para o Base e funcionou perfeitamente.

    Um abraço

  90. Oi Bruno,

    Aquela opção para exibir as parcelas na tela do produto não está funcionando. Segui exatamente como você informou mas não funcionou…
    abraço.

Comments are closed.