Ir para


Aviso aos navegantes: O PHPMania está com novidades e esperamos que gostem. Caso encontrem algum erro, ou tenham alguma dúvida e/ou sugestão crie um tópico clicando aqui.

Erro ao receber POST do pagseguro

pagseguro codeigniter php post erro

5460 replies to this topic

#1 Kud

Kud

    Novato

  • Membros
  • Pip
  • 2 Posts:

Postou 14 fevereiro 2014 - 11:18

Bom dia turma, galera estou numa briga feia com o PagSeguro. Na empresa onde trabalho fui designado a instalar e configurar a lib do PagSeguro, para que a loja de um cliente possa ter mais flexibilidade na questão opções de pagamentos. Beleza, configurei de acordo como manda o figurino na página:
https://pagseguro.uol.com.br/v2/guia-de-integracao/tutorial-da-biblioteca-pagseguro-em-php.html

então escrevi o controller normalmente, desta forma:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
header('Content-Type: text/html; charset=ISO-8859-1');
date_default_timezone_set("America/New_York");
class Pagamento extends CI_Controller{

public function __construct() {
	 parent::__construct();
	
	 $this->load->library('pagseguro');
	 $this->load->model("loja_mdl", "loja");
}
	 /**
	 * Exemplo de como gerar botão de pagamento.
	 */
public function index(){
	 $idCli = $this->session->userdata("idCli");	
	 // OPCIONAL //
	 // dados do usuário para gerar botão
	 $data["cliente"] = $this->loja->getEspecificValue("*", "cli_id = '$idCli'", "clientes");
	 foreach ($data["cliente"] as $cli) {
	
		 $usuario = array(
			 'id'		 => $cli->cli_id,
			 'nome'		 => $cli->cli_nome,
			 'ddd'		 => $cli->cli_dddTelefone, // só números
			 'telefone'	 => str_replace('-', '', $cli->cli_telefone), // só números
			 'email'		 => $cli->cli_email,
			 'shippingType' => 3, //1=Encomenda normal (PAC), 2=SEDEX, 3=Tipo de frete não especificado.
			 'cep'		 => str_replace('-', '', $cli->cli_cep),	 // só números
			 'logradouro' => $cli->cli_endereco,
			 'numero'	 => $cli->cli_numero,
			 'compl'		 => $cli->cli_complemento,
			 'bairro'	 => $cli->cli_bairro,
			 'cidade'	 => $cli->cli_cidade,
			 'uf'		 => $cli->cli_estado,
			 'pais'		 => 'BRA'
		 );
	 }
	 $this->pagseguro->set_user($usuario);

	 $pedidoTotal = array(
		 "ped_cli_id"	 => $idCli,
		 "ped_mac_address" => 000,
		 "ped_valor_total" => $this->cart->total(),
		 "ped_data"		 => date("Y-m-d"),
		 "ped_status"	 => 1
	 );
	 $this->loja->insertNewValue($pedidoTotal, "pedidos");
	 $idPedido = $this->loja->lastIdInsert("pedidos", 'ped_id');
	 $idPedido = $idPedido[0]["ped_id"];
	 foreach($this->cart->contents() as $itens):
		 $idItem = $itens["id"];
		 $data["prod"] = $this->loja->getEspecificValue("prod_titulo", "prod_id = '$idItem'", "produtos");
		 $pedido = array(
			 "itmped_cod_produto" => $itens["id"],
			 "itmped_codigo"		 => $idPedido,
			 "itmped_categoria"	 => $itens["cat"],
			 "itmped_quantidade"	 => $itens["qty"],
			 "itmped_valor_unitario" => $itens["price"],
			 "itmped_sub_total"	 => $itens["price"] * $itens["qty"]
		 );

		 // insere produtos para botão PagSeguro
		 $products[] = array(
			 'id'		 => $itens["id"],
			 'descricao' => $data["prod"][0]->prod_titulo,
			 'valor'	 => $itens["price"],
			 'quantidade' => $itens["qty"],
			 'peso'	 => 0
		 );

		 $this->loja->insertNewValue($pedido, "itens_pedido");
	 endforeach;			

	 $this->pagseguro->set_products($products);
	
	 // ID do pedido
	 $config['reference'] = rand(999, 9999);
	 // gera botão
	 echo $this->pagseguro->get_button($config);
}

// -------------------------------------------------------------------------
/**
	 * Método de retorno do pag seguro
	 * Conteúdo do POST:
	 * VendedorEmail: email@pagseguro.com.br
	 * TransacaoID: 23A080959E0346F58B8C73D2F032E814 <=
	 * Referencia: 169 <= ID de cms_extrato
	 * Extras: 0,00
	 * TipoFrete: FR <=
	 * ValorFrete: 0,00 <=
	 * Anotacao: <=
	 * DataTransacao: 31/07/2012 01:03:59 <=
	 * TipoPagamento: Pagamento Online <=
	 * StatusTransacao: Aguardando Pagto|Aprovado <=
	 * CliNome: Nome do usurio
	 * CliEmail: emaildo@cliente.com
	 * CliEndereco: rua alguma coisa
	 * CliNumero: 0
	 * CliComplemento:
	 * CliBairro: ing
	 * CliCidade: Niteri
	 * CliEstado: RJ
	 * CliCEP: 24210445
	 * CliTelefone: 21 33335555
	 * NumItens: 2
	 * Parcelas: 1 <=
	 * ProdID_1: 129
	 * ProdDescricao_1: Descrio obrigatria
	 * ProdValor_1: 0,90
	 * ProdQuantidade_1: 1
	 * ProdFrete_1: 0,00
	 * ProdExtras_1: 0,00
	 * ProdID_2: 112
	 * ProdDescricao_2: 2 Descrio obrigatria
	 * ProdValor_2: 0,10
	 * ProdQuantidade_2: 1
	 * ProdFrete_2: 0,00
	 * ProdExtras_2: 0,00
	 */
public function retorno_pagseguro() {
	 if (count($_POST) > 0) {
		
		 // SALVA O POST PARA DEGUG
		 $this->debug($_P0ST);
		 $informacao = array();
		 // POST recebido, indica que é a requisição do NPI,
		 // ou notificação de status
		 $this->load->library('pagseguro'); //Carrega a library
		
		
		 // faz conexão com PS para validar o retorno
		 $retorno = $this->pagseguro->notificationPost();
		 // quando recebe uma notificação que necessita uma requisição GET
		 // para recuperar status da transação
		 $notificationType = (isset($_POST['notificationType']) && $_POST['notificationType'] != '') ? $_POST['notificationType'] : FALSE;
		 $notificationCode = (isset($_POST['notificationCode']) && $_POST['notificationCode'] != '') ? $_POST['notificationCode'] : FALSE;
		 // É uma notificação de status. Passa a ação para o método que vai
		 // atualizar o status do pedido.
		 if ($notificationType && $notificationCode) {
			
			 $not = $this->pagseguro->get_notification($notificationCode);
			 /*
				 * FAZ AS ATUALIZAÇÕES COM A NOTIFICAÇÃO DE STATUS
				 */		
			
		 }
		 // informação quando é enviado um POST completo
		 $transacaoID = (isset($_POST['TransacaoID'])) ? $_POST['TransacaoID'] : FALSE;
		 // Se existe $transacaoID é uma notificação via POST logo após a
		 // solicitação de pagamento, neste momento
		 if ($transacaoID) {
			
			 /*
				 * FAZ AS ATUALIZAÇÕES COM A NOTIFICAÇÃO DE STATUS
				 */
			 $informacao["idTrans"]	 = $_POST['TransacaoID'];
			 $informacao["tipo"]		 = $_POST['TipoPagamento'];
			 $informacao["statusTrans"] = $_POST['StatusTransacao'];
			
		 }
		
		
		 //O post foi validado pelo PagSeguro.
		 if ($retorno == "VERIFICADO") {			
			 if ($_POST['StatusTransacao'] == 'Aprovado') {
				 $informacao['status'] = '1';
			 } elseif ($_POST['StatusTransacao'] == 'Em Análise') {
				 $informacao['status'] = '2';
			 } elseif ($_POST['StatusTransacao'] == 'Aguardando Pagto') {
				 $informacao['status'] = '3';
			 } elseif ($_POST['StatusTransacao'] == 'Completo') {
				 $informacao['status'] = '4';
			 } elseif ($_POST['StatusTransacao'] == 'Cancelado') {
				 $informacao['status'] = '5';
			 }
		 } else if ($retorno == "FALSO") {
			 //O post não foi validado pelo PagSeguro.
			 $informacao['status'] = '1000';
		 } else {
			 //Erro na integração com o PagSeguro.
			 $informacao['status'] = '6';
		 }
	 } else {
		 // POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
		 // No término do checkout o usuário é redirecionado para este bloco.
		 // redirecionar para página de OBRIGADO e aguarde...
		 // redirect('loja');
		 $informacao['status'] = 'POST não recebido';
	 }
	

	 $this->parser->parse("loja/pagamento/mensagem", $informacao);

}

// -------------------------------------------------------------------------

/**
	 * Exemplo de como consultar status de notificação
	 * @param string $code
	 */
public function check($code = NULL) {	
	 if($code === NULL){
		 $code = '45AC39-82659E659E9A-72242E0FAAB7-1EEBBF';
	 }
	 $string = $this->pagseguro->get_notification($code);
	 var_dump($string);
}

// -------------------------------------------------------------------------
/**
	 * Salva um array no arquivo pagseguro...php em cache/
	 * @param type $array
	 */
public function debug($array) {
	 $data = array();
	 foreach ($array as $c => $v) {
		 $data[] = $c . ': ' . $v;
	 }
	 $output = implode("\n", $data);
	 $this->load->helper('file');
	 write_file(APPPATH . "cache/pagseguro_" . date("Y-m-d_h-i") . ".php", $output);
}

}

Como podem visualizar no método INDEX eu dou um select na tabele clientes e extraio os dados e configuro os dados do usuário, até ai beleza.
Logo abaixo temos a função de retorno do PagSeguro, mas não funciona sempre recebo a mensagem: "POST não recebido";

Já fiz vários testes pagando produtos fictícios, mas não roda, podem me ajudar a resolver essa parte do retorno?
O envio dos dados funciona que é uma beleza, mas o retorno é o que está dando erro.

Segue a lib do PagSeguro:

<?php
header('Content-Type: text/html; charset=ISO-8859-1');
/**
* Classe de conexão para retorno e geração de botão de pagamento.
*
* @version 0.1
* @link https://github.com/bruno-barros/PagSeguro-Codeigniter
* @author Bruno Barros <brunodanca/gmail.com>
*
* # Como gerar botão:
* $this->pagseguro->set_user(id|array);
* $this->pagseguro->set_products(array);
* $this->pagseguro->get_button($config);
*
*/
class pagseguro {
private $ps_email = '';
private $timeout = 30; // Timeout em segundo
private $ci = NULL;
private $this_user = array(
	 'id'	 => false,
	 'nome'	 => false,
	 'ddd'	 => false, // só números
	 'telefone' => false, // só números
	 'email' => false,
	 'shippingType' => 3, //1=Encomenda normal (PAC), 2=SEDEX, 3=Tipo de frete não especificado.
	 'cep' => false,	 // só números
	 'logradouro' => '',
	 'numero' => '',
	 'compl' => '',
	 'bairro' => '',
	 'cidade' => '',
	 'uf' => '',
	 'pais' => 'BRA'
	 ); // dados do usuário

private $this_cart = false; // lista dos produtos
public $config = array(
	 'reference' => false, // ID de referência da compra no sistema
	 'button' => 'https://p.simg.uol.com.br/out/pagseguro/i/botoes/pagamentos/164x37-pagar-assina.gif' // imagem do botão de compra
);
// -------------------------------------------------------------------------

public function __construct() {	
	 $this->ci = &get_instance();
	 $this->ci->load->config('pagseguro');
	 $this->token = $this->ci->config->item('pagseguro_token');
	 $this->ps_email = $this->ci->config->item('pagseguro_email');
}
// -------------------------------------------------------------------------
// MÉTODOS DE RETONO DA TRANSAÇÃO
// -------------------------------------------------------------------------
/**
	 * Métdo que se comunica com o PagSeguro, recebe o POST e retorna dados
	 * da loja validando a requisição do usuário.
	 * O retorno pode ser: VERIFICADO, FALSO, ...
	 * @return string
	 */
public function notificationPost() {
//	 log_message('debug', 'notificationPost() do PagSeguro.');
	 $postdata = 'Comando=validar&Token='.$this->token;
	 foreach ($_POST as $key => $value) {
		 $valued = $this->clearStr($value);
		 $postdata .= "&$key=$valued";
	 }
	 return $this->verify($postdata);
}

// -------------------------------------------------------------------------

/**
	 * Limpa string para enviar ao PagSeguro
	 * @param string $str
	 * @return string
	 */
private function clearStr($str) {
	 if (!get_magic_quotes_gpc()) {
		 $str = addslashes($str);
	 }
	 return $str;
}

// -------------------------------------------------------------------------

/**
	 * Faz conexão com os servidores do PagSeguro e recebe a string de retorno
	 * @param string $data
	 * @return string
	 */
private function verify($data) {
	 $curl = curl_init();
	 curl_setopt($curl, CURLOPT_URL, "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml");
	 curl_setopt($curl, CURLOPT_POST, true);
	 curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
	 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	 curl_setopt($curl, CURLOPT_HEADER, false);
//	 curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type: application/xml; charset=ISO-8859-1"))
	 curl_setopt($curl, CURLOPT_TIMEOUT, 30);
	 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
	 $result = trim(curl_exec($curl));
	 curl_close($curl);
	 return $result;
}

// -------------------------------------------------------------------------
/**
	 * Retorna array com o número do pedido (extrato) e o status.
	 * Fonte: PagSeguro.
	 * Retorno:
	 * array
	 *	 'code' => 3
	 *	 'status' => 'Paga'
	 *	 'reference' => 107
	 * @param string $code
	 * @return array
	 */
public function get_notification($code = NULL){
	
	 // se não for passado um código, usará o $_POST que o PS envia
	 if($code === NULL){
		 $code = $_POST['notificationCode'];
	 }
	
	 $url = "https://ws.pagseguro.uol.com.br/v2/transactions/notifications/";
	 $url .= $code . "?email=" . $this->ps_email . "&token=" . $this->token;
	 // faz conexão
	 $transaction = $this->curl_connection($url);
	 // algo deu errado na autenticação
	 if($transaction == 'Unauthorized'){
		 log_message('erro', 'Notificação PagSeguro com problemas.');
		 return FALSE;
	 }
	
	 // converte para objeto
	 $xml = simplexml_load_string($transaction);
	 // retorna
	 return array(
		 'code' => (int)$xml->status,
		 'status' => $this->ps_stats((int)$xml->status),
		 'reference' => (int)$xml->reference
		 );
	
}

// -------------------------------------------------------------------------
/**
	 * Nomenclatura de notificações do PagSeguro.
	 * @param int $indice
	 * @return string
	 */
public function ps_stats($indice = 0){
	
	 $status = array(
		 0 => 'desconhecido',
		 1 => 'Aguardando pagamento',
		 2 => 'Em análise',
		 3 => 'Paga',
		 4 => 'Disponível',
		 5 => 'Em disputa',
		 6 => 'Devolvida',
		 7 => 'Cancelada'
	 );
	
	 return $status[$indice];
	
}
// -------------------------------------------------------------------------
/**
	 * Método do PagSeguro para conexão via cRUL.
	 * @param type $url
	 * @param string $method GET com padrão
	 * @param array $data
	 * @param type $timeout 30
	 * @param type $charset ISO
	 * @return array
	 */
private function curl_connection($url, $method = 'GET', Array $data = null, $timeout = 30, $charset = 'ISO-8859-1') {

	 if (strtoupper($method) === 'POST') {
		 $postFields = ($data ? http_build_query($data, '', '&') : "");
		 $contentLength = "Content-length: ".strlen($postFields);
		 $methodOptions = Array(
				 CURLOPT_POST => true,
				 CURLOPT_POSTFIELDS => $postFields,
				 );
	 } else {
		 $contentLength = null;
		 $methodOptions = Array(
				 CURLOPT_HTTPGET => true
				 );
	 }
	 $options = Array(
		 CURLOPT_HTTPHEADER => Array(
			 "Content-Type: application/x-www-form-urlencoded; charset=".$charset,
			 $contentLength
		 ),
		 CURLOPT_URL => $url,
		 CURLOPT_RETURNTRANSFER => true,
		 CURLOPT_HEADER => false,
		 CURLOPT_SSL_VERIFYPEER => false,
		 CURLOPT_CONNECTTIMEOUT => $timeout,
		 //CURLOPT_TIMEOUT => $timeout
	 );
	 $options = ($options + $methodOptions);
	 $curl = curl_init();
	 curl_setopt_array($curl, $options);
	 $resp = curl_exec($curl);
	 $info = curl_getinfo($curl);// para debug
	 $error = curl_errno($curl);
	 $errorMessage = curl_error($curl);
	 curl_close($curl);
	
	 if ($error) {
		 log_message('error', $errorMessage);
//			 throw new Exception("CURL can't connect: $errorMessage");
			 return false;
	 } else {
			 return $resp;
	 }
}

// -------------------------------------------------------------------------
// MÉTODOS PARA GERAÇÃO DO BOTÃO DE COBRANÇA
// -------------------------------------------------------------------------
/**
	 * Estabelece quais configurações foram enviadas.
	 * Obrigatórias:
	 * array(
	 *	 'reference' => int
	 * )
	 * @param type $config
	 */
private function button_config($config){
	
	
	 if(! is_array($config)){
		 $config = array($config);
	 }
	
	 foreach($this->config as $chv => $vlr){
		
		 if(isset($config[$chv])){
			 $this->$chv = $config[$chv];
		 } else {
			 $this->$chv = $vlr;
		 }
		
	 }
}
// -------------------------------------------------------------------------
/**
	 * Recebe as configurações e gera botão.
	 * @param type $config
	 * @return type
	 */
public function get_button($config = NULL){
	
	 // primeira coisa, parsear as configurações
	 $this->button_config($config);
	
	 if($this->reference === FALSE && !is_numeric($this->reference)){
		 return '<!-- Erro ao gerar botão -->';
	 }
	
	 $button = $this->get_form_open();
	
	 // opcional
	 if($this->this_user['nome']){
		 $button .= $this->get_user_inputs();
	 }
	
	 if($this->get_products_inputs() === FALSE){
		 return '<!-- Erro ao gerar botão -->';
	 }
	
	 $button .= $this->get_products_inputs();
	 $button .= $this->get_form_close();
	
	 return $button;
}
// -------------------------------------------------------------------------
/**
	 * Recebe e prapara dados do usuário... opcional
	 * @param array $user_array
	 * @return boolean|string
	 */
public function set_user($user_array){
	
	 $this->ci = &get_instance();
	
	 $user_array = $this->user_parser($user_array);	
	
	 foreach($this->this_user as $chv => $vlr){
		
		 if(isset($user_array[$chv])){
			 $this->this_user[$chv] = $user_array[$chv];
		 }		
	 }
	
}

// -------------------------------------------------------------------------

/**
	 * Retorna dados do usuário na memória.
	 * @return type
	 */
public function get_user(){
	 return $this->this_user;
}

// -------------------------------------------------------------------------
/**
	 * Prepara dados do usuário para o PagSeguro
	 * @param type $user_array
	 * @return boolean
	 */
private function user_parser($user_array){
	
	 if(!is_array($user_array)){
		 return FALSE;
	 }	
	
	 $return = array();
	
	 foreach($user_array as $c => $v){
		 // cep
		 if($c == 'cep'){
			 $v = str_replace(array(',', '.', ' '), '', $v);
		 }
		
		 // telefone
		 if($c == 'tel1'){
			 $return['ddd'] = substr($v, 0, 2);
			 $return['telefone'] = substr(str_replace('-', '', $v), -8);
		 }
		 // tel2
		 if($c == 'tel2' && strlen($return['ddd']) != 2){
			 $return['ddd'] = substr($v, 0, 2);
			 $return['telefone'] = substr(str_replace('-', '', $v), -8);
		 }
		
		 // número
		 if($c == 'num'){
			 $return['numero'] = $v;
		 }
		
		 $return[$c] = $v;
	 }
	
	 return $return;
	
}

// -------------------------------------------------------------------------
/**
	 * baseado nas configurações, monta o formulário
	 * @param array $user_array
	 * @return string
	 */
public function get_user_inputs(){
	 $f = array();
	 // '<!-- Dados do comprador (opcionais) -->
	 $f[] = '<input type="hidden" name="senderName" value="'.$this->this_user['nome'].'">';
	 $f[] = '<input type="hidden" name="senderAreaCode" value="'.$this->this_user['ddd'].'">';
	 $f[] = '<input type="hidden" name="senderPhone" value="'.$this->this_user['telefone'].'">';
	 $f[] = '<input type="hidden" name="senderEmail" value="'.$this->this_user['email'].'">';
	
	 // <!-- Informações de frete (opcionais) -->
	 $f[] = '<input type="hidden" name="shippingType" value="'.$this->this_user['shippingType'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressPostalCode" value="'.$this->this_user['cep'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressStreet" value="'.$this->this_user['logradouro'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressNumber" value="'.$this->this_user['numero'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressComplement" value="'.$this->this_user['compl'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressDistrict" value="'.$this->this_user['bairro'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressCity" value="'.$this->this_user['cidade'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressState" value="'.$this->this_user['uf'].'">';
	 $f[] = '<input type="hidden" name="shippingAddressCountry" value="'.$this->this_user['pais'].'">';
	
	 return implode("\n", $f);
	
}

// -------------------------------------------------------------------------
/**
	 * Recebe o array com um produto, ou array multi com vários
	 * Campos:
	 *	 id
	 *	 descricao
	 *	 valor
	 *	 quantidade
	 *	 peso
	 * @param array $product_array
	 */
public function set_products($product_array){
	
	 if(!is_array($product_array)){
		 log_message('error', 'set_products() Não existem produtos para PagSeguro');
		 return FALSE;
	 }
	
	 // verifica se é um único produto, ou multi array
	 if(isset($product_array[0]) && is_array($product_array[0])){
		 // já é multi array... vários produtos
		 $this->this_cart = $product_array;
	 } else {
		 // um único produto
		 $this->this_cart = array($product_array);
	 }
	
}

// -------------------------------------------------------------------------

/**
	 * baseado nas configurações, monta o formulário
	 */
private function get_products_inputs(){
	
	 if($this->this_cart === FALSE){
		 return FALSE;
	 }
	
	 $ttl = count($this->this_cart);
	
	 $f = array();
	 //<!-- Itens do pagamento (ao menos um item é obrigatório) -->	
	 // percorre os produtos
	 for($x = 0; $x < $ttl; $x++){
		 $id = $x+1;
		
		 $itemId		 = $this->this_cart[$x]['id'];
		 $itemDescription = $this->this_cart[$x]['descricao'];
		 $itemAmount	 = $this->this_cart[$x]['valor'];		
		 $itemQuantity = $this->this_cart[$x]['quantidade'];
		 $itemWeight	 = $this->this_cart[$x]['peso'];
		
		
		 $f[] = '<input type="hidden" name="itemId'.$id.'" value="'.$itemId.'">';
		 $f[] = '<input type="hidden" name="itemDescription'.$id.'" value="'.$itemDescription.'">';
		 $f[] = '<input type="hidden" name="itemAmount'.$id.'" value="'.$itemAmount.'">';
		 $f[] = '<input type="hidden" name="itemQuantity'.$id.'" value="'.$itemQuantity.'">';
		 $f[] = '<input type="hidden" name="itemWeight'.$id.'" value="'.$itemWeight.'">';
		
	 }	
		
	
	 return implode("\n", $f);
}

// -------------------------------------------------------------------------
/**
	 * Gera a parte inicial do form
	 * @return string
	 */
private function get_form_open(){
	 $f = array();
	 $f[] = '<form target="pagseguro" method="post" action="https://pagseguro.uol.com.br/v2/checkout/payment.html">';
	 // '<!-- Campos obrigatórios -->';
	 $f[] = '<input type="hidden" name="receiverEmail" value="'.$this->ps_email.'">';
	 $f[] = '<input type="hidden" name="currency" value="BRL">';
	 $f[] = '<input type="hidden" name="encoding" value="UTF-8">';
	 //<!-- Código de referência do pagamento no sistema (opcional) -->
	 $f[] = '<input type="hidden" name="reference" value="'.$this->reference.'">';
	
	 return implode("\n", $f);
}

// -------------------------------------------------------------------------
/**
	 * Gera a parte final do form
	 * @return string
	 */
private function get_form_close(){
	 $f = array();
	 //<!-- submit do form (obrigatório) -->
	 $f[] = '<input type="image" class="btn-pagseuro" name="submit" src="'.$this->button.'" alt="Pague com PagSeguro">';
	 $f[] = '</form>';
	 return implode("\n", $f);
}


}
?>

A configuração do TOKEN e mail está no diretorio: application/config/pagseguro.php, com o seguinte conteudo:

$config['pagseguro_email'] = 'meu_email_pagseguro';

$config['pagseguro_token'] = 'meu_token_pagseguro';

Aguardo ajuda...
Segurança custa caro?  -Experimente um acidente!

#2 gabrieloliveira

gabrieloliveira

    Membro Avançado

  • Membros
  • PipPipPip
  • 39 Posts:

Postou 24 fevereiro 2014 - 07:08

Olá, eu não olhei seu POST completo mas já tive problemas com o PagSeguro. Você precisa testar a sua página de retorno, enviando um POST como o PagSeguro envia sem a confirmação do Token, para saber se não está sendo gerado nenhum erro.

Se estiver tudo ok você precisa confirmar com o seu servidor se não há nenhum firewall bloqueando o POST do PagSeguro. Isso já aconteceu comigo na DialHost. Do nada o sistema parou de receber o POST, depois de muito tempo entramos em contato com a DialHost e eles resolveram.

Qualquer coisa é só falar aí.

#3 Guest_EdmundGype_*

Guest_EdmundGype_*
  • Guests

Postou 21 agosto 2015 - 05:43

Лучший выездной сотрудник по морозильникам за копейки подбросит и сделает http://avatarochka.ru/index/8-61322 качественно в трехэтажке с договором на любые узлы.Увидеть и скачать любые расценки вы можете у нас на сайте.



-------------------------------------

соленый
толковый ремонт холодильников Первомайское
для тела
поверхностный
толковый ремонт холодильников Красные Ворота
для души
новый
толковый ремонт холодильников Атлант
без заслона

#4 dcs202000

dcs202000

    Novato

  • Membros
  • Pip
  • 4 Posts:

Postou 19 outubro 2016 - 10:46

Olá Kud,

Não dei uma olhada detalhada no seu código, mas para receber dados $_POST no Codeigniter costuma-se usar assim:

$this->input->post("name-do-input");

Testa ai e nos dá um retorno.
Simplificando a Web
http://simplificandoaweb.com

#5 Guest_Harrymek_*

Guest_Harrymek_*
  • Guests

Postou 25 novembro 2016 - 03:46

Very hot anal sex
Register today only

http://milochkaxl.ru...kk&o=8t4kazw&t=

Imagem

#6 Guest_NabyerewebY_*

Guest_NabyerewebY_*
  • Guests

Postou 03 janeiro 2017 - 07:00

Read more...
Dragon Ball Z: Battle of Gods (2013) Full Movie 300Mb Small Size Hd Print Free Download

HD Harry Potter And The Chamber Of Secrets
Law and Order: SVU
mephisto
[mp3] shoua_[tfile.ru]

Watch This Link!
Age of empires 3 rar
Sunil Ek Musafir
W3schools.com
Grey's Anatomy-Season 13-Episode 5



Tutsplus - Relational Databases
(2016) DVD In a Valley of Violence
Season 3 Episode 10 What Lies Beneath
House of Cards
InPixio Photo Maximizer 2.02 Portable


Ballers S01E08 SPANiSH ESPAГ±OL HDTV x264-ELiTETORRENT
PrivateSociety Real Amateur Sex Bridgette HD XXX
Watch This Link!
Art Malik

WWE Main Event 2016 12 30 720p HDTV x264-Ebi [TJET]
The Old Man and the Sea

#7 Guest_NabyerewebY_*

Guest_NabyerewebY_*
  • Guests

Postou 03 janeiro 2017 - 10:46

Watch This Link!
Allo maman c'est encore moi Dvdrip

AutoCAD 2008 and AutoCAD LT 2008 Bible
GVG-411 mp4
Spanish Restaurant Music Academy

Read More
Anime/Cartoon
You Can't Miss These 4 Movies If You Are a Real Horror Fan
Miguel Sapochnik
Anatomie (Anatomy) Dvdrip



xXx - State of the Union 2005 (1080p Bluray x265 HEVC 10bit AAC 5 1 Tigole)
Into the West
Watch This Link!


Season 4 Episode 21 She's Come Undone
Kristen Bell
Eve (UK) Seas. 3 Ep. 1 2016-10-24
Free Episode Download
Adisharox53

Pawn Stars S13E18 HDTV x264-KILLERS[ettv]
Episode list

#8 Guest_NabyerewebY_*

Guest_NabyerewebY_*
  • Guests

Postou 03 janeiro 2017 - 12:58

Penny Dreadful
Au nom du pГЁre Dvdrip
Free Episode Download
Chris Pratt
DC Super Hero Girls: Hero of.. (2016)

The L Word
Hunger Games

Jogos dos Padrinhos Mбgicos +
view all



Billy Connolly Journey To The Edge of The World 2009 Part1 1080p BluRay H264 ...
A Haunted House Dvdrip
Broken 2016 HDRip XviD AC3-EVO
Captain America the Winter Soldier 2014 DVDRip XviD-juggs
Episodes


Phantom Boy
추적 60분.E1222.161026.자살하는 경찰 우리는 슈퍼맨이 아니다.720p-NEXT
Massages avec finitions mp4
BugГјn, 20:01

WWE Story Time S01E03 WEB h264-OVERTiME[eztv] mkv
[P] Yes - 1973 - Tales From Topographic Oceans (FLAC 24-48, vinyl, 2LP, Atlantic ...

#9 Guest_wreneaway_*

Guest_wreneaway_*
  • Guests

Postou 14 janeiro 2017 - 03:52

купить детский квадроцикл - купить квадроцикл

#10 Guest_Guestviess_*

Guest_Guestviess_*
  • Guests

Postou 22 janeiro 2017 - 08:41

guest test post
bbcode
html
http://googlee.te/ simple

#11 Guest_silviakn69_*

Guest_silviakn69_*
  • Guests

Postou 03 fevereiro 2017 - 10:54

Erogenous pictures blog    
http://gayarab.erolo.../?profile.paris
   erotic posters erotic masseuse gay sex erotic hypnotist

#12 Guest_anestettibe_*

Guest_anestettibe_*
  • Guests

Postou 06 fevereiro 2017 - 07:14

first-rate site http://pussyvideoporn.com/

#13 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:11

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://ruaptekar.com/?wmid=501
Imagem
супер p-forse

#14 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:14

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://vitalitepill.com/?wmid=501
Imagem
аналог виагры

#15 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:19

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://ruaptekar.com/?wmid=501
Imagem
где купить виагру

#16 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:19

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://vitalitepill.com/?wmid=501
Imagem
сиалис с доставкой

#17 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:21

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://vitalitepill.com/?wmid=501
Imagem
дженерик сиалис

#18 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:23

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://joyson.ru/?wmid=501
Imagem
купить дженерики сиалис

#19 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:23

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://ruaptekar.com/?wmid=501
Imagem
презерватив падает член

#20 Guest_Avvisova_*

Guest_Avvisova_*
  • Guests

Postou 08 fevereiro 2017 - 05:25

Дешевая виагра! Удиви свою девушку выносливостью в постели!
Цены от 75руб. за таблетку - http://vitalitepill.com/?wmid=501
Imagem
цены виагра



Responder



  



Also tagged with one or more of these keywords: pagseguro, codeigniter, php, post, erro

0 usuário(s) está(ão) lendo este tópico

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)