Publicidade

Arquivado

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

rogernem

E-Commerce - Redecard

Olá.

Estou tentando configurar meu site para fazer vendas com cartao de credito

-REDECARD

 

Tem 5 etapas:

 

1. Loja-virtual -> Redecard

A loja virtual deverá enviar os seguintes parâmetros para a Redecard, quando da chamada para a tela de captura do Komerci:

CONSIGO FAZER ISSO

 

2. Redecard -> Loja-virtual 2

Transação Aprovada

Se a transação for aprovada e bem sucedida, a Redecard retornará os seguintes parâmetros para a loja-virtual, em método GET, através de sua URLBACK (previamente cadastrada ou fornecida em parâmetro):

CONSIGO FAZER ISSO

 

3. Loja-Virtual -> Redecard

Caso a transação tenha sido aprovada pelo emissor, a loja-virtual deverá confirmá-la, retornando os seguintes parâmetros para o endereço:

http://ecommerce.redecard.com.br/pos_virtual/confirma.asp:

O tráfego destes dados não deverá ocorrer através do browser do usuário ou com sua interferência, ou seja, o webserver da loja-virtual deverá comunicar-se diretamente com o ambiente da Redecard.

Pode-se, por exemplo, utilizar componentes, serviços, servlets, etc.

Este procedimento garante a segurança do tráfego dos dados entre a Redecard e a sua lojavirtual.

AQUI ESTA MEU PROBLEMA

 

 

Entao, como eu faco isso?

Eu programei em php e fiz:

 

meta refresh=0, url=http://ecommerce.redecard.com.br/pos_virtual/confirma.asp?paramentros

 

O problema é que:

Eu recebo a confirmacao da REDECARD dizendo:

SUA TRANSACAO FOI APROVADA !

 

MAS ele nao manda devolta para a minha URLBACK que eu cadastrei antes na 1a etapa. Ele so fica naquela url da REDECARD. Talvez porque eu esteja usando o metodo errado: meta refresh

 

O que eu preciso fazer é enviar os valores conforme eles dizem e voltar com a mensagem de confirmacao na minha urlback

 

Vejam a foto anexa de como fica:

http://www.recoloca.com.br/komerci.gif

 

O CARTAO TAMBEM FORNECEU ESSE SEGUINTE CODIGO (ObjetoXML):

=====================================

Set obj = Server.CreateObject("Msxml2.ServerXMLHTTP")

obj.open "GET", "http://" & varServerName & "/pos_virtual/confirma.asp?DATA=" & varData & "&NUMSQN=" &varNumSqn & "&NUMCV=" & varNumCV & "&NUMAUTOR=" & varNumAutor & "&PARCELAS=" & varParcelas & "&TRANSORIG=" & varTransOrig & "&TOTAL=" & varTotal & "&FILIACAO=" & varFiliacao & "&DISTRIBUIDOR=" & varDistribuidor & "&NUMPEDIDO=" & varNumPedido & varDadosAdicionaisIATA, False

obj.send

ret = obj.responseText

Set obj = Nothing

 

Talvez isso ajude a fazer o que quero. COmo posso usar isso?

 

 

Alguma ideia?

Obrigado.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também estou com este mesmo problema.Servidor Linux usando PHP + OSCoMMERCE 2.2Se alguem puder ajudar.Eduardo.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com problema similar nesta mesma etapa, e o problema é como utilizar componentes, serviços, servlets, etc.Só que estou desenvolvendo em ASP.

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoal, estou com problemas tambem com a Redecard

 

nma primeira e4tapa, eu disparo o form para https://ecommerce.redecard.com.br/pos_virtual/form_card.asp, conforme manual, enviando o form via post e target = self para manter na mesma pagina.

 

Dai abre a pagina da Redecard (Mastcard ou visa).

 

Aqui começam, os meus problemas:

 

De inicio, a figura de topo que envio no form com o parametro urlcima, quando o catão é Diners, mostra a figura no topo, quando é masterard não mostra.

 

Segundo problema: Após o usuario validar os dados do cartão, a redecard envia os dados para a urlback enviada na primeira etapa mas envia com, target =blank. Ou seja, fica uma pagina toda branca e a nova pagina aberta (com o retorno dos dados urlback).;

 

Bom, recebido os dados da segunda etapa (com, sucesso pois vem todos os dados enão vem o parametro de erro na url), a loja virtual dispara a terceira etapa mas quando isso acotece, a Redercart recebe os dados correto e envbia erro(76) de volta.

 

Pesso a quem puder me ajudar.

 

O código quie uso é php mas o post é o melhor que eu encointrei sobre o assunto:

 

Segue os códigos:

 

form da primeira etapa com a escolha da bandeira (obs.:) minha loja só faz vendas a vista (opção do meu cliente)

 

...
 <?
 ///FINALIZAÇÃO
if ($TPGTO=="MASTERCARD" or $TPGTO=="DINERS")
   { 
?>
<form name="form_card" method="POST" target="_self" action="https://ecommerce.redecard.com.br/pos_virtual/form_card.asp">
  <?          
    $FILIACAO= 30355141;
    $DISTRIBUIDOR= "";
    $ip = getenv("REMOTE_ADDR"); 
  ?>
 <input type="hidden" name="TOTAL" value="<?=number_format($valor_final, 2, '.', '.');?>" />
  <input type="hidden" name="FILIACAO" value="<?=$FILIACAO;?>">  
  <input type="hidden" name="DISTRIBUIDOR" value="<?=$DISTRIBUIDOR;?>">  
  <input type="hidden" name="TRANSACAO" value="04"> 
  <input type="hidden" name="PARCELAS" value="00"> 
  <input type="hidden" name="NUMPEDIDO" value="<?=$ID_DO_PEDIDO;?>" />                                  
  <input type="hidden" name="PAX1" value="">
  <?php include('vendas/classe_redcard.php');?>
<!-- <input type="hidden" name="CODVER" value="XXXXXXXXXXXXXXXX-XXX">  -->
  <input type="hidden" name="CODVER" value="<?=_RedeCard_CodVer($FILIACAO,$valor_final,$ip);?>">                          
  <input type="hidden" name="URLBACK" value="http://www.naturelavie.com.br/novo/retorno_cartao.php">
  <input type="hidden" name="URLCIMA" value=" http://www.naturelavie.com.br/img/topo.jpg">
  <input type="hidden" name="TARGET" value="_SELF">  
<table align="center" width="780" border="1">
  <tr bgcolor="#666666">
    <td colspan="5" align="left"><font color="#FFFFFF">Forma de Pagamento</font></td>
  </tr>
  <tr>
    <td width="176"><img src="img/Mastercard.jpg" width="150" height="104" /></td>
    <td width="203"><input type="radio" name="BANDEIRA" value="MASTERCARD" checked>MASTERCARD (À VISTA)</td>
    <td width="103">TOTAL:</td>
    <td width="169">R$ <?=number_format($valor_final, 2, ',', '.');?></td>
    <td align="center"><input type="button" name = "enviar" value = "Pagar" onclick="CriticaFormulario_Cartao(); " /></td>
  </tr>
  <tr bgcolor="#666666">
    <td colspan="5"> </td>
  </tr>
  <tr>
    <td><img src="img/Diners.jpg" width="124" height="95" /></td>
    <td><input type="radio" name="BANDEIRA" value="DINERS">DINERS (À VISTA)</td>
    <td>PEDIDO:</td>
    <td><?=$ID_DO_PEDIDO;?></td>
    <td align="center"><input type="button" name = "enviar" value = "Pagar" onclick="CriticaFormulario_Cartao(); " /></td>
  </tr>
  <tr bgcolor="#666666">
    <td colspan="5"> </td>
  </tr>
</table>
</form>
           <center> <?  print "Enddereço IP do computador que você esta usando: "; print $ip; ?>.</center>            
<!--
NOME TAMANHO DESCRIÇÃO
TOTAL 15 Valor total da compra
TRANSACAO 2 Código do tipo de transação
PARCELAS 2 Número de parcelas
FILIACAO 9 Número de filiação do estabelecimento (fornecedor)
DISTRIBUIDOR 9 Número de filiação do estabelecimento (distribuidor)
BANDEIRA 10 Bandeira do cartão
NUMPEDIDO 16 Número do pedido
PAX1 26 Texto livre para digitação
CODVER 25 Código de Verificação
URLBACK 250 Endereço para retorno dos dados da transação
URLCIMA 250 Endereço de URL da página ou imagem superior
TARGET 40 Nome do frame para onde será retornado a URLBACK
-->            

 <?

        }

...

urlback = retorno_cartao.php

<?
header('Content-Type: text/html; charset=utf-8');
include ("TMySQL.php");
//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

///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&"
		  ."NUMPEDIDO=$NUMPEDIDO&"
		  ."NUMAUTOR=$NUMAUTOR&"		  
		  ."NUMCV=$NUMCV&"		  
		  ."NUMSQN=$NUMSQN&"	
		  ."TRANSACAO=203&"
		  ."TRANSORIG=$04&"
		  ."PARCELAS=00&"
		  ."FILIACAO=30355141;"
		  ."DISTRIBUIDOR=&"
		  ."TOTAL=$PRECO_TOTAL";
	print "<script>document.location='$url'</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; }
//AQUI JA FOI ENVIADA A SEGUNDA FASE E AGORA ESTA RECEBENDO O CÓDIGO DE CONFIRMAÇÃO.
else if  ( $CODRET >=0 and  $CODRET <=49              ) 
			                                             {		
    $url= "https://ecommerce.redecard.com.br/pos_virtual/cupom.asp?"
	      ."DATA=$DATA&"
		  ."TRANSACAO=$_GET['NUMSQN']&"		  
		  ."NUMPEDIDO=$NUMPEDIDO&"
		  ."NUMAUTOR=$_GET['NUMAUTOR']&"		  
		  ."NUMCV=$_GET["NUMCV"]&"
		  ."LANGUAGE='S'";
	print "<script>document.location='$url'</script>";	  
                                                         } 
?>

Ola, agora a historia mudou.

 

Agora, quando chego na quarta etapa etapa,

quando chega no site da Redecard, é exibido a mesnagem:

 

CODRET=0&MSGRET=CONFIRMACAO COM SUCESSO

 

e ai o script para. O script não retorna novamente para a urlback para eu enviar mais dados para emissão do cupon.

 

Onde será que esta o erro?

 

Good,

 

Nobody,

 

I get this:

 

<?
header('Content-Type: text/html; charset=utf-8');
include ("TMySQL.php");
//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";
		  ."TOTAL=0.01&"
		  ."NUMPEDIDO=$NUMPEDIDO&"
		  ."NUMAUTOR=$NUMAUTOR&"		  
		  ."NUMCV=$NUMCV&"		  
		  ."NUMSQN=$NUMSQN&"	  
		  ."ORIGEM_BIN=$ORIGEM_BIN&"
		  ."NUMPRG=$NUMPRG";	

         //AQUI JA 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($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 $variavel;
				 print "<br>";
				 print $valor;				 
			                                }
				$status = $_REQUEST['CODRET'];
	            if ($status > 1) {
	               $autent = $_REQUEST['MSGRET'];
	                             }
				else {
                       $URLCupom = "https://ecommerce.redecard.com.br/pos_virtual/cupom.asp?DATA=" . $data . "&TRANSACAO=201&NUMAUTOR=" . $arp . "&NUMCV=" . $cv;											
?>

<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; }
?>

DONE..

 

THANKS

 

RSRSRS

 

AGORA É PARTIR PARA AS FORMATAÇÕE DOS TEXTOS.

 

UFAAAAAAA

 

VALEU A TODOS!

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para evitar esse tipo de dificuldade comum para quem tenta fazer as integrações direto com as operadoras, recomendo conhecerem o gateway de pagamentos iPAGARE.

 

O iPAGARE possui uma versão 100% gratuita chamada iPAGARE Grátis. Grátis de verdade, por tempo indeterminado.

 

A integração do iPAGARE é mais simples do que integrar direto com a Redecard e ainda traz os demais meios de pagamento existentes no mercado.

 

Experimentem criando uma conta grátis através do endereço www.ipagare.com.br.

 

Fica a dica. Abraços!

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a relação com a Plataforma Java?

 

Att

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Próximos Eventos