Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com xml


Carlos Rocha

Pergunta

Ola pessoal.

To precisando de uma luz:

Seguinte:

Assim como no caso dos correios qe se usa simple_xml_load para receber por xml os valores das tarifas de sedex e pac, resolvi tentar tambem com o site da redecard.

Fiz o seguinte código:

$url= "http://ecommerce.redecard.com.br/pos_virtual/confirma.asp?"
          ."DATA=$DATA&"    
          ."TRANSACAO=203&"
          ."TRANSORIG=04&"
          ."PARCELAS=00&"
          ."FILIACAO=30355141&"
          ."DISTRIBUIDOR=&"
          ."TOTAL=$PRECO_TOTAL&"
          ."NUMPEDIDO=$NUMPEDIDO&"
          ."NUMAUTOR=$NUMAUTOR&"          
          ."NUMCV=$NUMCV&"          
          ."NUMSQN=$NUMSQN&"      
          ."ORIGEM_BIN=$ORIGEM_BIN&"
          ."NUMPRG=$NUMPRG";    

         //AQUI já FOI ENVIADA A SEGUNDA FASE3 E AGORA ESTA RECEBENDO O CÓDIGO DE CONFIRMAÇÃO.
         //A função file irá enviar a url para a Redecard sem redirecionar(sair da NatureLavie) e, ao mesdo tempo, receber o rerorno da Redecdard
[code]         
$file = simplexml_load_file($url); //linha 41
$CODRET = $file->xpath('CODRET');
$MSGRET = $file->xpath('MSGRET');

print "$CODRET";
print "<br>";
print "$MSGRET";
E esta me rertornando o seguinte erro:
Warning: simplexml_load_file() [function.simplexml-load-file]: http://ecommerce.redecard.com.br/pos_virtual/confirma.asp?DATA=20100405&TRANSACAO=203&TRANSORIG=04&PARCELAS=00&FILIACAO=30355141&DISTRIBUIDOR=&TOTAL=71.3&NUMPEDIDO=27&NUMAUTOR=R71008&NUMCV=995688328&NUMSQN=995688328&ORIGEM_BIN=BRA&NUMPRG=0:1: parser error : Start tag expected, '<' not found in /home/nature/public_html/novo/retorno_cartao_conteudo.php on line 41

Warning: simplexml_load_file() [function.simplexml-load-file]: CODRET=4&MSGRET=TRANSACAO ESTORNADA in /home/nature/public_html/novo/retorno_cartao_conteudo.php on line 41

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in /home/nature/public_html/novo/retorno_cartao_conteudo.php on line 41

Fatal error: Call to a member function xpath() on a non-object in /home/nature/public_html/novo/retorno_cartao_conteudo.php on line 42

O que pode estar errado?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Não, não!

Aquele code lá deveria ser

para gerar dois blocos de códigos

na verdade, o código todo agora esta assim:

<?
//Abrindo conexao com o banco de dados 
$MySQL = new TMySQL();
$MySQL->connect($host, $db, $user, $pass);


$DATA = $_GET['DATA'];//8 Data da transação
$NUMPEDIDO = $_GET['NUMPEDIDO']; //16 Número do Pedido
$NR_CARTAO = $_GET['NR_CARTAO']; //16 Número do Cartão mascarado
$ORIGEM_BIN = $_GET['ORIGEM_BIN']; //3 Código de Nacionalidade do Emissor
$NUMAUTOR = $_GET['NUMAUTOR']; //6 Número de Autorização
$NUMCV = $_GET['NUMCV']; //9 Número do Comprovante de Venda (NSU)
$NUMAUTENT = $_GET['NUMAUTENT']; //27 Número de Autenticação
$NUMSQN = $_GET['NUMSQN']; //12 Número seqüencial único
$NUMPRG = $_GET['NUMPRG']; //1 Número correspondente ao programa de captura utilizado

///CASO DE ERROS
$CODRET = $_GET['CODRET']; //2 Código de erro
$MSGRET = $_GET['MSGRET']; //200 Mensagem de erro
if       ( !isset($CODRET)                             )  {
    $consulta=$MySQL->query("select PRECO_TOTAL from pedidos_cliente where ID_PEDIDO_CLIENTE=$NUMPEDIDO");    
    list($PRECO_TOTAL) = mysql_fetch_array($consulta);
    $url= "http://ecommerce.redecard.com.br/pos_virtual/confirma.asp?"
          ."DATA=$DATA&"    
          ."TRANSACAO=203&"
          ."TRANSORIG=04&"
          ."PARCELAS=00&"
          ."FILIACAO=30355141&"
          ."DISTRIBUIDOR=&"
          ."TOTAL=$PRECO_TOTAL&"
          ."NUMPEDIDO=$NUMPEDIDO&"
          ."NUMAUTOR=$NUMAUTOR&"          
          ."NUMCV=$NUMCV&"          
          ."NUMSQN=$NUMSQN&"      
          ."ORIGEM_BIN=$ORIGEM_BIN&"
          ."NUMPRG=$NUMPRG";    

         //AQUI já FOI ENVIADA A SEGUNDA FASE3 E AGORA ESTA RECEBENDO O CÓDIGO DE CONFIRMAÇÃO.
         //A função file irá enviar a url para a Redecard sem redirecionar(sair da NatureLavie) e, ao mesdo tempo, receber o rerorno da Redecdard
         
$file = file_get_contents($url); 
$file = parse_str($file);
print "<table align='center'";
print "<tr><td align='center'>";
print "<br>";
print "Resultado da transaçao pela Redecard:";
print "<br>";
print "$MSGRET";          
print "</td></tr>";                 
print "</table>";                 
                            
   /*      print "<table align='center'";
         print "<tr><td align='center'>";
         
          $file = file($url); 
              $retorna = $file[0]; 
              $arrLinhas = explode("&", $retorna);
              $i = 0; 
              foreach ($arrLinhas AS $line) { 
                 list($variavel, $valor) = explode('=', ($line)); 
                 $variavel = trim($variavel); 
                // $$variavel = $valor; 
                 $i ++; 
                 print "<br>";
                 print $valor;    
                                            }
         print "</td></tr>";                 
         print "</table>";                 */
                                            
                                        
                $status = $_REQUEST['CODRET'];
                if ($status > 1) {
                   $autent = $_REQUEST['MSGRET'];
                                 }
                else {
                       $URLCupom = "https://ecommerce.redecard.com.br/pos_virtual/cupom.asp?"
                       ."DATA=$_GET[DATA]&"
                       ."TRANSACAO=201&"
                       ."NUMAUTOR=$_GET[NUMAUTOR]&"
                       ."NUMCV=$_GET[NUMCV]&"
                       ."LANGUAGE=1";    
?>

<script LANGUAGE=javascript>
<!--
        vpos=window.open('<? echo $URLCupom; ?>','vpos','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=auto,resizable=no,copyhistory=no,width=280,height=440');
//-->
</SCRIPT>
<?                    }          
                                                         }
else if (
          $CODRET==50 or $CODRET==52 or $CODRET==54 or $CODRET==55 or $CODRET==57 or $CODRET==59 or $CODRET==61 or 
          $CODRET==62 or $CODRET==64 or $CODRET==66 or $CODRET==67 or $CODRET==68 or $CODRET==70 or $CODRET==71 or 
          $CODRET==73 or $CODRET==75 or $CODRET==78 or $CODRET==79 or $CODRET==80 or $CODRET==82 or $CODRET==83 or 
          $CODRET==84 or $CODRET==85 or $CODRET==87 or $CODRET==89 or $CODRET==90 or $CODRET==91 or $CODRET==93 or 
          $CODRET==94 or $CODRET==95 or $CODRET==97 or $CODRET==99
         )
                                                         { print $MSGRET;  exit; }
else if  ( $CODRET==51 or $CODRET==92 or $CODRET==98  )  { print $MSGRET;  exit; }
else if  ( $CODRET==53                                )  { print $MSGRET;  exit; }
else if  ( $CODRET==76 or $CODRET==86                 )  { print $MSGRET;  exit; }
else if  ( $CODRET==58 or $CODRET==63 or  $CODRET==65 or  $CODRET==69 or  $CODRET==72 or  $CODRET==77 or $CODRET==96  )  
                                                         { print $MSGRET;  exit; }
else if  ( $CODRET==56 or $CODRET==60                 )  { print $MSGRET;  exit; }
else if  ( $CODRET==74                                )  { print $MSGRET;  exit; }
else if  ( $CODRET==81                                )  { print $MSGRET;  exit; }
?>

E, um outro problema que estou enfrentando agora é:

Não estou usando kit nenhum para cobrança de cartões com a RedeCard.

Apenas o form dos cartões e este arquivo retorno_catao.php.

só isso.

Estou conferindo la no painel da redecartd e as compras estão sendo processadas certinho.

Mas, apósa validação do cartão a pagina da redecard fica toda branca e, através de target=blank,. abre a pagina retorno_catao.php

Na verdade, não tenhp a minima das mínimas ideias de como usar (ou, pior ainda, criar) um webservioe (como diz no manual).

Se puder ajudar fico agradecido.

E a questão do AVS? É pago?

Obrigado.

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0

Ok

Então como faço para manipular esses dados que chegam

$file = file($url); 
                          $retorna = $file[0]; 
                          $arrLinhas = explode("&", $retorna);
                          $i = 0; 
                          foreach ($arrLinhas AS $line) { 
                                 list($variavel, $valor) = explode('=', ($line)); 
                                 $variavel = trim($variavel); 
                                 $variave2 = $valor; 
                                 $i ++; 
                                                       }
Isso retorna duas variaveis Retorna
CODRET e MSGRET
quero escrever assim:
O código é:  $CODRET.
A mensagem é: $MSGRET.

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0

No caso de uma url

http://www.url.com.br/parametro=um&teste=2

Vendo este link eu sei que ele tem 2 parametros: parametro e teste, cujos valores são respectivamente um e 2

eu quero saber como faço para descobrir se existe (ou não) um parametro chamado teste2 nessa url

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

  • 0

se sua URL for assim:

http://www.url.com.br/?parametro=um&teste=2
Para descobrir se existe ou não valor no teste2 use o $_GET[] para pegar os valores, ex.:
<?php
$teste2 = $_GET['teste2'];

if($teste2){
echo 'o valor de TESTE2 é: '.$teste2.'';
}else{
echo 'TESTE2 esta vazio';
}
?>

Editado por Vampyro
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...