Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beta_es

Erro na integração do pagseguro

Recommended Posts

Boa noite pessoal

Eu instalei o plugin WP e-commerce v.3.7.2 no Wordpress v2.8.4, mas quando fazia o checkout aparecia “nenhum produto informado”. Segui as informações deixadas no blog do Pagseguro por uma pessoa que conseguiu configurar, mas não consegui ir até o final porque quando chega nessa parte me perco. Vou colar a mensagem deixada por ele e o meu código pra facilitar. E é justamente nessa parte que está o erro!

 

"Ps: Só não esqueçam de olhar o código deste mesmo pagseguro.php, onde temos os ["collected_data"][xxx] para linkar com os dados que temos nas configurações do plugin dentro do painel de administração do wordpress."

Mensagem de erro que aparece:

 

Parse error: syntax error, unexpected T_LIST, expecting ')' in /home/photokids/public_html/loja/wp-content/plugins/wp-e-commerce/merchants/pagseguro.php on line 43

 

Se alguém puder me dar uma luz, por favor...

Obrigada

 

O código:

 

<?php
$_GET["sessionid"] = $_GET["sessionid"]=="" ? $_SESSION["pagseguro_id"] : $_GET["sessionid"];
require_once("pagseguro/pgs.php");
require_once("pagseguro/tratadados.php");

$nzshpcrt_gateways[$num]['name'] = 'Manual Payment';
$nzshpcrt_gateways[$num]['admin_name'] = 'PagSeguro';
$nzshpcrt_gateways[$num]['internalname'] = 'pagseguro';
$nzshpcrt_gateways[$num]['function'] = 'gateway_pagseguro';
$nzshpcrt_gateways[$num]['form'] = "form_pagseguro";
$nzshpcrt_gateways[$num]['submit_function'] = "submit_pagseguro";

//echo "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];'>http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
//phpinfo();
if( get_option('transact_url')=="http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]){ transact_url();}

function gateway_pagseguro($seperator, $sessionid) {
	global $wpdb;
	$transact_url = get_option('transact_url');

	$purchase_log = $wpdb->get_row("SELECT * FROM `wp_wpsc_purchase_logs` WHERE `sessionid`= ".$sessionid." LIMIT 1",ARRAY_A) ;
	$cart_sql = "SELECT * FROM `".$wpdb->prefix."cart_contents` WHERE `purchaseid`='".$purchase_log['id']."'";
	$cart = $wpdb->get_results($cart_sql,ARRAY_A) ;

	//$options = array("email_cobranca" => get_option('pagseguro_business'),"ref_transacao" => $purchase_log['id']);
	$options = array("email_cobranca" => get_option('pagseguro_email'),"ref_transacao" => $purchase_log['id'],"encoding" => get_bloginfo('charset') );
	$PGS = New pgs($options);

	foreach((array)$cart as $item) 
	{
		$product_data = $wpdb->get_results("SELECT * FROM `wp_wpsc_product_list` WHERE `id`='".$item['prodid']."' LIMIT 1",ARRAY_A);
		$product_data = $product_data[0];
	
		$produtos = array("id" => uniqid($item[`id`]),
		"descricao" => urlencode(stripslashes($product_data['name']).stripslashes($variation_list)),
		"quantidade" => $item['quantity'],
		"valor" => $item['price'],
		"peso" => $product_data['weight'],
		//var_dump($produtos);

		$PGS->adicionar($produtos)

	list($ddd,$telefone) = trataTelefone($_POST["collected_data"][17]);
	//echo $_POST["collected_data"][11];
	//echo "$ddd <hr> $telefone";
	//exit;
	list($end,$num,$compl) = trataEndereco($_POST["collected_data"][4]);
	$cliente = array (
		  'nome'   => $_POST["collected_data"][2] . " " . $_POST["collected_data"][3],
		  'cep'    => preg_replace("/[^0-9]/","", $_POST["collected_data"][7]),
		  'end'    => $end,
		  'num'    => $num,
		  'compl'  => $compl,
		  'bairro' => '',
		  'cidade' => '',
		  'uf'     => '',
		  'pais'   => 'Brasil',
		  'ddd'    => $ddd,
		  'tel'    => $telefone,
		  'email'  => $_POST["collected_data"][8]
		  );
	$PGS->cliente($cliente);	

	$mostra = array("btn_submit" => 0,"print" => false, "open_form" => false,"show_submit" => false);
	$form = $PGS->mostra($mostra);
	$itens = $form[1];
	$form = $form[0];
	
	$_SESSION["pagseguro_id"] = $sessionid;
	
	//var_dump($GLOBALS);
	?><form id="form_pagseguro" action="https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx" method="post">
	<?php echo $form;?>
	<script>window.onload=function(){form_pagseguro.submit();}</script>
	<?php
	//echo $sessionid;
	//var_dump($_SESSION);
	//header("Location: ".$transact_url.$seperator."sessionid=".$sessionid);
	exit();
}

function transact_url()
{
	if(!function_exists("retorno_automatico"))
	{
		define ('TOKEN', get_option("pagseguro_token"));
		function retorno_automatico (
        $VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,
        $ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,
        $StatusTransacao, $CliNome, $CliEmail, $CliEndereco,
        $CliNumero, $CliComplemento, $CliBairro, $CliCidade,
        $CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens
      ){
	  
	  global $wpdb;
	  //print $Referencia;
	  //print_r($_POST);
	  //print_r($produtos);
	  //var_dump($_POST);echo "num";
	$wpdb->query($sql);  
	switch($StatusTransacao)
	{
	case "Completo":case "Aprovado":
	case "Cancelado":

	break;
	}
	  
	  //Completo && Aprovado
	  //var_dump($StatusTransacao);
	  }
	  //var_dump($_POST);
	require_once("pagseguro/retorno.php");

	}
	

}

function submit_pagseguro() {
  if($_POST['pagseguro_email'] != null)
    {
    update_option('pagseguro_email', $_POST['pagseguro_email']);
    }
  if($_POST['pagseguro_token'] != null)
    {
    update_option('pagseguro_token', $_POST['pagseguro_token']);
    }
  return true;
}

function form_pagseguro() {  
	$output = "<tr>\n\r";
	$output .= "<tr>\n\r";
	$output .= "	<td colspan='2'>\n\r";
	// $output = "	</td>\n\r";
	// $output = "	<td>\n\r";
	
	//$output .= "<strong>".TXT_WPSC_PAYMENT_INSTRUCTIONS_DESCR.":</strong><br />\n\r";
	$output .= "Email vendedor <input type=\"text\" name=\"pagseguro_email\" value=\"" . get_option('pagseguro_email') . "\"/><br/>\n\r";
	$output .= "TOKEN <input type=\"text\" name=\"pagseguro_token\" value=\"" . get_option('pagseguro_token') . "\"/><br/>\n\r";
	//$output .= "<textarea cols='50' rows='9' name='payment_instructions'>".get_option('payment_instructions')."</textarea><br />\n\r";
	//$output .= "<em>".TXT_WPSC_PAYMENT_INSTRUCTIONS_BELOW_DESCR."</em>\n\r";
	$output .= "	</td>\n\r";
	$output .= "</tr>\n\r";
  return $output;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Beta_es,

 

percebi que seu código está realmente com falhas de PHP, como não fechando um array ou iniciando uma nova linha de comando sem colocar ponto-e-virgula no final do comando anterior. De qualquer forma, também verifiquei que o seu script é diferente do encontrado no site da visie hoje. Experimente usar esse que está na visie e qualquer dúvida entre em contato conosco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, estou tbm a dias tentando resolver esse problema mas infelizmente o blog do pagseguro não ajuda ninguem e não tenho conhecimentos profundos de PHP.

 

Qdo entro no site ele da esse erro abaixo, se insisto ele abre e consigo comprar e enviar dados da compra pro Pagseguro corretamente.

 

#Erro:

 

Warning: Invalid argument supplied for foreach() in /home/zumk1/public_html/shibonetes/wp-content/plugins/wp-e-commerce/shipping/pagseguro.php on line 107

 

#Meu arquivo pagseguro.php :

 

<?php

$_GET["sessionid"] = $_GET["sessionid"]=="" ? $_SESSION["pagseguro_id"] : $_GET["sessionid"];

require_once("pagseguro/pgs.php");

require_once("pagseguro/tratadados.php");

 

$nzshpcrt_gateways[$num]['name'] = 'PagSeguro';

$nzshpcrt_gateways[$num]['admin_name'] = 'PagSeguro';

$nzshpcrt_gateways[$num]['internalname'] = 'pagseguro';

$nzshpcrt_gateways[$num]['function'] = 'gateway_pagseguro';

$nzshpcrt_gateways[$num]['form'] = "form_pagseguro";

$nzshpcrt_gateways[$num]['submit_function'] = "submit_pagseguro";

 

if( get_option('transact_url')=="http://".$_SERVER["SERVER_NAME"].$_SERVER["REDIRECT_URL"]){ transact_url();}

 

function gateway_pagseguro($seperator, $sessionid)

{

global $wpdb;

// Carregando os dados

$cart = ($_SESSION['wpsc_cart']);

$options = array(

'email_cobranca' => get_option('pagseguro_email'),

'ref_transacao' => $_SESSION['order_id'],

'encoding' => 'utf-8',

'item_frete_1' => number_format(($cart->total_tax + $cart->base_shipping) * 100, 0, '', ''),

);

// Dados do cliente

$_cliente = $_POST["collected_data"];

list($ddd,$telefone) = trataTelefone($_cliente[17]);

list($end,$num,$compl) = trataEndereco($_cliente[4]);

$cliente = array (

'nome' => $_POST["collected_data"][2] . " " . $_cliente[3],

'cep' => preg_replace("/[^0-9]/","", $_cliente[7]),

'end' => $end,

'num' => $num,

'compl' => $compl,

'bairro' => '',

'cidade' => '',

'uf' => '',

'pais' => 'Brasil',

'ddd' => $ddd,

'tel' => $telefone,

'email' => $_cliente[8]

);

// Usando a session, isso é correto

$cart = $cart->cart_items;

$produtos = array();

foreach($cart as $item) {

$produtos[] = array(

"id" => (string) $item->product_id,

"descricao" => $item->product_name,

"quantidade" => $item->quantity,

"valor" => $item->unit_price,

);

}

$PGS = New pgs($options);

$PGS->cliente($cliente);

$PGS->adicionar($produtos);

$mostra = array(

"btn_submit" => 0,

"print" => false,

"open_form" => false,

"show_submit" => false

);

 

$form = $PGS->mostra($mostra);

 

$_SESSION["pagseguro_id"] = $sessionid;

echo '<form id="form_pagseguro" action="https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx" method="post">',

$form,

'<script>window.onload=function(){form_pagseguro.submit();}</script>';

exit();

}

 

function transact_url()

{

if(!function_exists("retorno_automatico")) {

define ('TOKEN', get_option("pagseguro_token"));

function retorno_automatico (

$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,

$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,

$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,

$CliNumero, $CliComplemento, $CliBairro, $CliCidade,

$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens

)

{

global $wpdb;

switch($StatusTransacao) {

case "Completo":case "Aprovado":

$sql = "UPDATE `".$wpdb->prefix . "purchase_logs` SET `processed` = '2' WHERE id=" . $Referencia;

$wpdb->query($sql);

case "Cancelado":

break;

}

}

require_once("pagseguro/retorno.php");

}

}

 

function submit_pagseguro()

{

if($_POST['pagseguro_email'] != null) {

update_option('pagseguro_email', $_POST['pagseguro_email']);

}

if($_POST['pagseguro_token'] != null) {

update_option('pagseguro_token', $_POST['pagseguro_token']);

}

return true;

}

 

function form_pagseguro()

{

$output = "<tr>\n\r";

$output .= "<tr>\n\r";

$output .= " <td colspan='2'>\n\r";

 

$output .= "<strong>".TXT_WPSC_PAYMENT_INSTRUCTIONS_DESCR.":</strong><br />\n\r";

$output .= "Email vendedor <input type=\"text\" name=\"pagseguro_email\" value=\"" . get_option('pagseguro_email') . "\"/><br/>\n\r";

$output .= "TOKEN <input type=\"text\" name=\"pagseguro_token\" value=\"" . get_option('pagseguro_token') . "\"/><br/>\n\r";

$output .= "<em>".TXT_WPSC_PAYMENT_INSTRUCTIONS_BELOW_DESCR."</em>\n\r";

$output .= " </td>\n\r";

$output .= "</tr>\n\r";

return $output;

}

 

Conto com a boa vontade dos forenses a me dar alguma luz no problema acima.

 

obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, estou tbm a dias tentando resolver esse problema mas infelizmente o blog do pagseguro não ajuda ninguem e não tenho conhecimentos profundos de PHP.

 

Qdo entro no site ele da esse erro abaixo, se insisto ele abre e consigo comprar e enviar dados da compra pro Pagseguro corretamente.

 

#Erro:

 

Warning: Invalid argument supplied for foreach() in /home/zumk1/public_html/shibonetes/wp-content/plugins/wp-e-commerce/shipping/pagseguro.php on line 107

 

#Meu arquivo pagseguro.php :

 

<?php

$_GET["sessionid"] = $_GET["sessionid"]=="" ? $_SESSION["pagseguro_id"] : $_GET["sessionid"];

require_once("pagseguro/pgs.php");

require_once("pagseguro/tratadados.php");

 

$nzshpcrt_gateways[$num]['name'] = 'PagSeguro';

$nzshpcrt_gateways[$num]['admin_name'] = 'PagSeguro';

$nzshpcrt_gateways[$num]['internalname'] = 'pagseguro';

$nzshpcrt_gateways[$num]['function'] = 'gateway_pagseguro';

$nzshpcrt_gateways[$num]['form'] = "form_pagseguro";

$nzshpcrt_gateways[$num]['submit_function'] = "submit_pagseguro";

 

if( get_option('transact_url')=="http://".$_SERVER["SERVER_NAME"].$_SERVER["REDIRECT_URL"]){ transact_url();}

 

function gateway_pagseguro($seperator, $sessionid)

{

global $wpdb;

// Carregando os dados

$cart = ($_SESSION['wpsc_cart']);

$options = array(

'email_cobranca' => get_option('pagseguro_email'),

'ref_transacao' => $_SESSION['order_id'],

'encoding' => 'utf-8',

'item_frete_1' => number_format(($cart->total_tax + $cart->base_shipping) * 100, 0, '', ''),

);

// Dados do cliente

$_cliente = $_POST["collected_data"];

list($ddd,$telefone) = trataTelefone($_cliente[17]);

list($end,$num,$compl) = trataEndereco($_cliente[4]);

$cliente = array (

'nome' => $_POST["collected_data"][2] . " " . $_cliente[3],

'cep' => preg_replace("/[^0-9]/","", $_cliente[7]),

'end' => $end,

'num' => $num,

'compl' => $compl,

'bairro' => '',

'cidade' => '',

'uf' => '',

'pais' => 'Brasil',

'ddd' => $ddd,

'tel' => $telefone,

'email' => $_cliente[8]

);

// Usando a session, isso é correto

$cart = $cart->cart_items;

$produtos = array();

foreach($cart as $item) {

$produtos[] = array(

"id" => (string) $item->product_id,

"descricao" => $item->product_name,

"quantidade" => $item->quantity,

"valor" => $item->unit_price,

);

}

$PGS = New pgs($options);

$PGS->cliente($cliente);

$PGS->adicionar($produtos);

$mostra = array(

"btn_submit" => 0,

"print" => false,

"open_form" => false,

"show_submit" => false

);

 

$form = $PGS->mostra($mostra);

 

$_SESSION["pagseguro_id"] = $sessionid;

echo '<form id="form_pagseguro" action="https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx" method="post">',

$form,

'<script>window.onload=function(){form_pagseguro.submit();}</script>';

exit();

}

 

function transact_url()

{

if(!function_exists("retorno_automatico")) {

define ('TOKEN', get_option("pagseguro_token"));

function retorno_automatico (

$VendedorEmail, $TransacaoID, $Referencia, $TipoFrete,

$ValorFrete, $Anotacao, $DataTransacao, $TipoPagamento,

$StatusTransacao, $CliNome, $CliEmail, $CliEndereco,

$CliNumero, $CliComplemento, $CliBairro, $CliCidade,

$CliEstado, $CliCEP, $CliTelefone, $produtos, $NumItens

)

{

global $wpdb;

switch($StatusTransacao) {

case "Completo":case "Aprovado":

$sql = "UPDATE `".$wpdb->prefix . "purchase_logs` SET `processed` = '2' WHERE id=" . $Referencia;

$wpdb->query($sql);

case "Cancelado":

break;

}

}

require_once("pagseguro/retorno.php");

}

}

 

function submit_pagseguro()

{

if($_POST['pagseguro_email'] != null) {

update_option('pagseguro_email', $_POST['pagseguro_email']);

}

if($_POST['pagseguro_token'] != null) {

update_option('pagseguro_token', $_POST['pagseguro_token']);

}

return true;

}

 

function form_pagseguro()

{

$output = "<tr>\n\r";

$output .= "<tr>\n\r";

$output .= " <td colspan='2'>\n\r";

 

$output .= "<strong>".TXT_WPSC_PAYMENT_INSTRUCTIONS_DESCR.":</strong><br />\n\r";

$output .= "Email vendedor <input type=\"text\" name=\"pagseguro_email\" value=\"" . get_option('pagseguro_email') . "\"/><br/>\n\r";

$output .= "TOKEN <input type=\"text\" name=\"pagseguro_token\" value=\"" . get_option('pagseguro_token') . "\"/><br/>\n\r";

$output .= "<em>".TXT_WPSC_PAYMENT_INSTRUCTIONS_BELOW_DESCR."</em>\n\r";

$output .= " </td>\n\r";

$output .= "</tr>\n\r";

return $output;

}

 

Conto com a boa vontade dos forenses a me dar alguma luz no problema acima.

 

obrigado!!

 

 

Boa tarde, zumk.

 

O erro que você menciona aponta para o arquivo pagseguro.php da pasta shipping e você postou o código do arquivo localizado na pasta merchants.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.