Beta_es 0 Denunciar post Postado Agosto 18, 2009 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
Michael Granados 0 Denunciar post Postado Outubro 20, 2009 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
zumk 0 Denunciar post Postado Abril 11, 2010 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
Comunicação PagSeguro 0 Denunciar post Postado Abril 12, 2010 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