O pagseguro está com uma nova cara, e a forma de integrar um sistema à ele mudou. Plugins criados anteriormente precisam ser atualizados para acompanhar tais mudanças.
Uso o plugin pagseguro (http://code.google.com/p/pagseguro/) e aproveitei para atualizá-lo, além de fazer uma pequena adição em seu helper, tornando possível indicar qual charset deve-se usar ao enviar o formulário do carrinho de compras. Tentei enviar o código para o repositório original, mas não tinha permissões.
Sendo assim, criei um repositório novo no google code, onde a nova versão pode ser baixada, evitando assim dores de cabeça na integração.
Segue o link: http://code.google.com/p/cakephp-pagseguro-plugin
E para integrar, é simples:
Instalando o plugin
Descompacte o .zip, renomeando a pasta para pagseguro e em seguida, mova a pasta do plugin na pasta plugins do seu aplicativo CakePHP, ficando com esta estrutura:
app plugins pagseguro controllers components pag_seguro.php views helpers formpg.php pagseguro_app_controller.php LEIAME.txt
Utilizando o plugin
Siga os 6 passos à seguir:
1. Em seu Controller, adicione o Component e o Helper do Plugin
<?php
var $components = array('Pagseguro.PagSeguro');
var $helpers = array('Pagseguro.Formpg');
?>
2. Defina o array de informações da venda. Abaixo, segue um exemplo, onde são setados os campos obrigatórios e opcionais para o PagSeguro
<?php $venda = array( 'email_cobranca' => null, 'tipo' => 'CP', 'moeda' => 'BRL', 'tipo_frete' => 'SD', // Opcional 'ref_transacao' => null, // Opcional 'produto' => array( // Se houver mais um item, basta adicionar // um novo item de array igual a esse com // chave 2, e assim por diante. 1 => array( 'item_id' => null, 'item_descr' => null, 'item_valor' => null, 'item_quant' => null, 'item_frete' => null, // Opcional 'item_peso' => null, // Opcional 'item_quant' => null ) ), 'cliente' => array( // Opcional 'nome' => null, // Opcional 'cep' => null, // Opcional 'end' => null, // Opcional 'num' => null, // Opcional 'compl' => null, // Opcional 'bairro' => null, // Opcional 'cidade' => null, // Opcional 'uf' => null, // Opcional 'pais' => null, // Opcional 'ddd' => null, // Opcional 'tel' => null, // Opcional 'email' => null // Opcional ) ); ?>
3. Formatando valores monetários
Os valores monetários precisam ser formatados de acordo com o o formato exigido pelo pagseguro (ex: se o valor da venda
for 19,90 é necessário passar 1990 para o campo item_valor). Segue a forma de fazê-lo:
<?php
App::import('Helper', 'Number');
$valor = $number->format(19.90, array(
'before' => '',
'decimals' => '',
'thousands' => ''));
?>
4. Setando os dados da venda
<?php $this->PagSeguro->setSale($venda); ?>
5. Disponibilizando os dados na View
<?php
$this->set('nome_do_seu_campo_na_view', $this->PagSeguro->generateInformation());
?>
6. Construindo o Formulário de venda PagSeguro na View
// Se sua página estiver definida com o charset UTF-8,
// substitua a linha a segui por $formpg->create('utf-8');
<?php echo $formpg->create(); ?>
<?php echo $formpg->hidden($nome_do_seu_campo_na_view); ?>
<?php echo $formpg->submit(array('img' => 'btnFinalizar.jpg')); ?>
/*
Opções:
btnFinalizaBR.jpg
btnConcluirBR.jpg
btnFinalizar.jpg
btnConcluir.jpg
NOTA: se não quiser usar nenhum botão do pagseguro,
vc pode usar um botão de submit comum, usando $form->submit()
*/
<?php echo $formpg->end();?>
Se alguém quiser ser commiter, é só dar um toque. Mande-me um comentário ou algo assim.
Abraço!
Tags: Cake, CakePHP, Código Aberto, PagSeguro, Plugin, Projetos, UOL