Posts Tagged ‘PagSeguro’

Plugin CakePHP para integração com o Novo PagSeguro da UOL

Monday, November 2nd, 2009

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!