Magento Forum

Emissão de segunda via do PagSeguro. 
 
Renato!
Jr. Member
 
Total Posts:  15
Joined:  2008-04-22
 

Amigos,

Tou tentando desenvolver a seguinte solução para impressão de segunda via no magento sem a necessidade de fazer uma recompra. Na página de conclusão da compra aparecerá um botão que enviará os dados da fatura para o pagseguro. A partir dai o cliente realiza o pagamento da forma que quiser. Quando o pagseguro finalizar o pagamento ele retornará o id da fatura para o magento. Tou querendo salvar este ID da fatura para criar um botão na pagina My account / My orders para emitir a segunda via da fatura.

Abaixo está um código que utilizo no arquivo view.phtml para gerar os dados do pagseguro. Este código gera uma nova fatura, e não é isso que to precisando agora. Eu só quero pegar o ID que o pagseguro retorna e salvar no banco de dados para depois eu criar um link para aquele ID.

Deu pra entender? rss

view.phtml

<?php
        
// pega o id do cliente que está logado na loja
    
$_customerId Mage::getSingleton('customer/session')->getCustomerId(); 
        
        
// pega os dados do cliente
    
$customer Mage::getSingleton('customer/session')->getCustomer();

        
// instancia a classe do pedido
    
$order Mage::getSingleton('sales/order');
    
    
// carrega os dados do pedido que está sendo visualizado na tela
    
$order->load($_order->getId());
    
    
// ??
    
$_totalData $order->getData();
    
    
// ??
    
$_grand $_totalData['grand_total'];
    
    
// pega o nome do cliente
    
$_name $customer->getName();
    
    
// ??
    
$_taxvat $customer->getTaxvat();
    
    
// pega o email do cliente
    
$_email $customer->getEmail();

    
// pega os dados de endereçamento
        
$a $order->getShippingAddress();
        
        
// pega o tipo de moeda base deste pedido
        
$currency_code $order->getBaseCurrencyCode();
        
        
// cria um array que será utilizado para criar o form que enviará os dados ao pagseguro
    
$sArr = array(
            
'email_cobranca'    => 'renatutu@hotmail.com',
            
'tipo'              => "CP",
            
'moeda'             => "BRL",
            
'cliente_nome'      => $a->getFirstname().' '.$a->getLastname(),
            
'cliente_cep'       => $a->getPostcode(),
            
'cliente_end'       => $a->getStreet(1),
            
'cliente_num'       => "?",
            
'cliente_compl'     => $a->getStreet(2),
            
'cliente_bairro'    => "?",
            
'cliente_cidade'    => $a->getCity(),
            
'cliente_uf'        => $a->getState(),
            
'cliente_pais'      => "BRA",
            
'cliente_ddd'       => substr($a->getTelephone(),0,-8),
            
'cliente_tel'       => substr($a->getTelephone(),-8),
            
'cliente_email'     => $a->getEmail(),
        
'total_pedido'      => $a->getGrandTotal()
        );
        
        
// verifica se existe frete
        
$shipping sprintf('%.2f'$order->getShippingAddress()->getBaseShippingAmount());        
        
        
// pega todos os itens do pedido com o nome, peso, quantidade comprada, e o valor do frete
    
$items $order->getAllItems();
            if (
$items{
                $i 
1;
                foreach(
$items as $item){
                        $sArr 
array_merge($sArr, array(
                        
'item_descr_'.$i      => $item->getName(),
                        
'item_id_'.$i         => $item->getSku(),
                        
'item_quant_'.$i      => $item->getQtyOrdered()*1,
                        
'item_peso_'.$i       => round($item->getWeight()),
                        
'item_frete_'.$i      => "",
                        
'item_valor_'.$i      => ($item->getPrice() - $item->getBaseDiscountAmount())*100,
                    ));
                    if(
$item->getBaseTaxAmount()>0){
                        $sArr 
array_merge($sArr, array(
                        
'tax_'.$i             => sprintf('%.2f',$item->getBaseTaxAmount()),
                        ));
                    
}
                    $i
++;
                    
                
}
            
        }

        $transaciton_type 
$order->getConfigData('transaction_type');
        
$totalArr $a->getTotals();

        
// cria o formulario de envio para o pagseguro
        
$form = new Varien_Data_Form(array(
                                       
'id' => 'BoletoBancario_standard_checkout',
                                       
'name' => 'BoletoBancario_standard_checkout',
                                       
'method' => 'post',
                                       
'action' => 'https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx',
                                       
'target' => '_blank'
                                       
));
    echo 
'<form action="https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx" method="post" id="BoletoBancario_standard_checkout" target="_blank" name="BoletoBancario_standard_checkout">';
        
        foreach (
$sArr as $field=>$value{
            $form
->addField($field'hidden', array('name'=>$field'value'=>$value));
        
}

    $this
->html $form->toHtml();

        
// cria todos os inputs e valores a serem enviados
    
echo $this->html;

        
// cria o botão enviar dados para o pagseguro 
     
echo '<script type="text/javascript">function   EnviarDados(){document.getElementById("BoletoBancario_standard_checkout").submit();}</script>';
    echo 
'<p>Pagamento atraves do PagSeguro - Funcionando.</p>';    
    echo 
'<input type="image" src="https://pagseguro.uol.com.br/Security/Imagens/btnPagueComBR.jpg" name="submit" alt="Pague com PagSeguro - e rapido, gratis e seguro!" onclick="EnviarDados()"/>';
?>

abçs

 
Magento Community Magento Community
Magento Community
Magento Community
 
brunowd
Jr. Member
 
Total Posts:  6
Joined:  2013-09-08
 

conseguiu fazer essa modificação?

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top