Integração sem Pop-Up com Post/FORM

Introdução
 
Este documento tem como finalidade demonstrar a implementação da integração entre e-commerces e o meio de pagamento disponibilizado pela plataforma iVarejo via chamada ao ambiente iVarejo sem o uso de Pop-Ups.
 
 
Padrão da Integração
 
A integração é realizada por troca de informações via POST/FORMS para envio dos dados do pedido para pagamento.
 
Neste modelo de integração, o controle do processo de pagamento acontece no domínio da iVarejo, retirando grande parte da complexidade de implementação necessária nos outros modelos. As lojas virtuais, hotsites e ecommerces que adotarem este padrão implementarão um formulário simples onde a propriedade "Action" da tag <form> será configurada com um endereço da página de entrada de pedidos da iVarejo.  
 
Uma vez que a comunicação seja estabelecida entre as duas partes, a interface de pagamentos da iVarejo é carregada automaticamente com as informações do consumidor, o valor do pedido e os planos de pagamento disponíveis para a compra. O consumidor seleciona o plano de pagamento desejado e confirma a compra. No final do processo, o usuário é encaminhado para a página de retorno do seu ecommerce.
 
 
Código Fonte
 
1 - Formulário de Envio
 

<form id="frmForm1" method="post"

   action="http://hml.ivarejo.com.br/ecommerce/enviodadospedidows.aspx">


   <input type="hidden" name="CodigoEntidade" value="Código da entidade ..." />
  

   <input type="hidden" name="URLRespostaProcessoPagamento"

      value="pagina retorno ecommrece ..." />
  

   <input type="hidden" name="TipoPessoa" id="TipoPessoa" value="F" />
  

   <!-- Valor do Pedido Sem Acréscimos de Frete + Taxas -->  

   <input type="hidden" name="ValorPedido" value="60.00" />
  

   <!-- Valor do Pedido Com Acréscimos de Frete + Taxas -->

   <input type="hidden" name="ValorTotalPedido" value="70.00" />

 


   <!-- Itens do Pedido -->
   <!-- Caso o pedido contenha mais de um item, adcionar novos campos. Ex:ItemPedido[x],

      QtdItemPedido[x], ValorItemPedido[x] -->

 

   <!--Nome do Item do Pedido-->
   <input type="hidden" name="DescItemPedido1" value="Guarda-Chuva Super SPC" />

 

   <!--Quantidade do Item do Pedido-->
   <input type="hidden" name="QtdItemPedido1" value="1" />  

 

   <!--Valor do Item do Pedido-->

   <input type="hidden" name="ValorItemPedido1" value="60.00" />

 

   <!-- Itens do Pedido -->

 

 

   <input type="text" id="NumeroPedido" name="NumeroPedido" readonly="readonly"

      style="left: 200px;position: absolute" />

 

   <input type="text" id="txtValorProduto" name="txtValorProduto" value="R$60,00"

      readonly="readonly" style="left: 200px; position: absolute;" />

 

   <input type="text" id="NomeConsumidor" name="NomeConsumidor" style="left: 200px;
      position: absolute;" />
    
   <input type="text" id="CPFConsumidor" name="CPFConsumidor" style="left: 200px;

      position: absolute;" />
    
   <input type="text" id="EmailConsumidor" name="EmailConsumidor" style="left: 200px;
      position: absolute;" />
    
   <input type="text" id="DataNascConsumidor" name="DataNascConsumidor" style="left: 200px;

      position: absolute;" />
    
   <select name="Sexo" style="left: 200px; position: absolute;">
      <option value="" selected="selected">Selecione...</option>
      <option value="M">Masculino</option>
      <option value="F">Feminino</option>
   </select>
    
   <input type="text" id="DDDTelefoneResidencial" name="DDDTelefoneResidencial" maxlength="2"
      style="left: 200px; position: absolute; width: 30px" />


   <input type="text" id="TelefoneResidencial" name="NumTelefoneResidencial"

      style="left: 250px; position: absolute; width: 100px" />
 
   <input type="text" id="DDDTelefoneComercial" name="DDDTelefoneComercial" maxlength="2"

      style="left: 200px; position: absolute; width: 30px" />


   <input type="text" id="TelefoneComercial" name="NumTelefoneComercial" style="left: 250px;

      position: absolute; width: 100px" />

 

   <input type="text" id="RamalTelefoneComercial" name="RamalTelefoneComercial"

      style="left: 400px; position: absolute; width: 50px" />

 

   <input type="text" id="DDDTelefoneCelular" name="DDDTelefoneCelular" maxlength="2"
      style="left: 200px; position: absolute; width: 30px" />

   <input type="text" id="TelefoneCelular" name="NumTelefoneCelular" style="left: 250px;
      position: absolute; width: 100px" />

   <input type="text" id="EnderecoResidencial" name="EnderecoResidencial"

      style="left: 200px; position: absolute" />

   <input type="text" id="NumeroResidencial" name="NumeroResidencial" style="left: 200px;
      position: absolute" />
  
   <input type="text" id="ComplementoResidencial" name="ComplementoResidencial"

      style="left: 200px; position: absolute" />

   <input type="text" id="CEPResidencial" name="CEPResidencial" style="left: 200px;
      position: absolute" />

   <input type="text" id="BairroResidencial" name="BairroResidencial" style="left: 200px;
      position: absolute" />
 
   <input type="text" id="CidadeResidencial" name="CidadeResidencial" style="left: 200px;
      position: absolute" />
    
   <select name="UFResidencial" style="left: 200px; position: absolute">
      <option value="" selected="selected">Selecione...</option>
      <option value='AC'>AC</option>
      <option value='AL'>AL</option>
      <option value='AM'>AM</option>
      <option value='AP'>AP</option>
      <option value='BA'>BA</option>
      <option value='CE'>CE</option>
      <option value='ES'>ES</option>
      <option value='DF'>DF</option>
      <option value='GO'>GO</option>
      <option value='MA'>MA</option>
      <option value='MG'>MG</option>
      <option value='MS'>MS</option>
      <option value='MT'>MT</option>
      <option value='PA'>PA</option>
      <option value='PB'>PB</option>
      <option value='PE'>PE</option>
      <option value='PI'>PI</option>
      <option value='PR'>PR</option>
      <option value='RJ'>RJ</option>
      <option value='RN'>RN</option>
      <option value='RR'>RR</option>
      <option value='RS'>RS</option>
      <option value='RO'>RO</option>
      <option value='SC'>SC</option>
      <option value='SE'>SE</option>
      <option value='SP'>SP</option>
      <option value='TO'>TO</option>
   </select>

 

    
   <!--Suprima a área "Endereço de Cobrança" caso você escolha utilizar o mesmo endereço

      da área "Endereço Residencial"-->


   <input type="text" id="EnderecoCobranca" name="EnderecoCobranca" style="left: 200px;
      position: absolute" />
   
   <input type="text" id="NumeroCobranca" name="NumeroCobranca" style="left: 200px;
      position: absolute" />
   

   <input type="text" id="ComplementoCobranca" name="ComplementoCobranca" style="left: 200px;
      position: absolute" />

 

   <input type="text" id="CEPCobranca" name="CEPCobranca" style="left: 200px;

      position: absolute" />
    
   <input type="text" id="BairroCobranca" name="BairroCobranca" style="left: 200px;
      position: absolute" />

   <input type="text" id="CidadeCobranca" name="CidadeCobranca" style="left: 200px;
      position: absolute" />

   <select name="UFCobranca" style="left: 200px; position: absolute">
      <option value="" selected="selected">Selecione...</option>
      <option value='AC'>AC</option>
      <option value='AL'>AL</option>
      <option value='AM'>AM</option>
      <option value='AP'>AP</option>
      <option value='BA'>BA</option>
      <option value='CE'>CE</option>
      <option value='ES'>ES</option>
      <option value='DF'>DF</option>
      <option value='GO'>GO</option>
      <option value='MA'>MA</option>
      <option value='MG'>MG</option>
      <option value='MS'>MS</option>
      <option value='MT'>MT</option>
      <option value='PA'>PA</option>
      <option value='PB'>PB</option>
      <option value='PE'>PE</option>
      <option value='PI'>PI</option>
      <option value='PR'>PR</option>
      <option value='RJ'>RJ</option>
      <option value='RN'>RN</option>
      <option value='RR'>RR</option>
      <option value='RS'>RS</option>
      <option value='RO'>RO</option>
      <option value='SC'>SC</option>
      <option value='SE'>SE</option>
      <option value='SP'>SP</option>
      <option value='TO'>TO</option>
   </select>

 

   <!--Suprima a área "Endereço de Cobrança" caso você escolha utilizar o mesmo endereço

      da área "Endereço Residencial"-->

 

 

 

   <!--Suprima a área "Endereço de Entrega" caso você escolha utilizar o mesmo endereço

      da área "Endereço Residencial"-->


   <input type="text" id="EnderecoEntrega" name="EnderecoEntrega" style="left: 200px;
      position: absolute" />

   <input type="text" id="NumeroEntrega" name="NumeroEntrega" style="left: 200px;

      position: absolute" />
   
   <input type="text" id="ComplementoEntrega" name="ComplementoEntrega" style="left: 200px;
      position: absolute" />
    
   <input type="text" id="CEPEntrega" name="CEPEntrega" style="left: 200px;

      position: absolute" />
    
   <input type="text" id="BairroEntrega" name="BairroEntrega" style="left: 200px;

      position: absolute" />
   
   <input type="text" id="CidadeEntrega" name="CidadeEntrega" style="left: 200px;

      position: absolute" />
   
   <select name="UFEntrega" style="left: 200px; position: absolute">
      <option value="" selected="selected">Selecione...</option>
      <option value='AC'>AC
</option>
      <option value='AL'>AL</option>
      <option value='AM'>AM</option>
      <option value='AP'>AP</option>
      <option value='BA'>BA</option>
      <option value='CE'>CE</option>
      <option value='ES'>ES</option>
      <option value='DF'>DF</option>
      <option value='GO'>GO</option>
      <option value='MA'>MA</option>
      <option value='MG'>MG</option>
      <option value='MS'>MS</option>
      <option value='MT'>MT</option>
      <option value='PA'>PA</option>
      <option value='PB'>PB</option>
      <option value='PE'>PE</option>
      <option value='PI'>PI</option>
      <option value='PR'>PR</option>
      <option value='RJ'>RJ</option>
      <option value='RN'>RN</option>
      <option value='RR'>RR</option>
      <option value='RS'>RS</option>
      <option value='RO'>RO</option>
      <option value='SC'>SC</option>
      <option value='SE'>SE</option>
      <option value='SP'>SP</option>
      <option value='TO'>TO</option>

   </select>


  
<!--Suprima a área "Endereço de Entrega" caso você escolha utilizar o mesmo endereço da área "Endereço Residencial"-->

  

   <input id="btnComprar" type="submit" value="Comprar" />
</form>

 
 
2 - Página de Retorno
 

<%@ language="VBScript" %>
<%

    Dim CodigoRetorno
    Dim MensagemRetorno

    CodigoRetorno =
Request.Form("ReturnCode")

    MensagemRetorno = HTMLDecode(Request.Form("ReturnMsg"))


    If (
CodigoRetorno = "IVJ.ECOMMERCE.INTERNALFAULT" _
        Or
CodigoRetorno = "IVJ.ECOMMERCE.ERR.001" _
        Or CodigoRetorno = "IVJ.ECOMMERCE.ERR.002" _
        Or CodigoRetorno = "IVJ.ECOMMERCE.ERR.003" _
        Or CodigoRetorno = "IVJ.ECOMMERCE.ERR.004" _
        Or CodigoRetorno = "IVJ.ECOMMERCE.RET.003") Then
       
Response.Write("Desculpe-nos ocorreu um erro!")
    ElseIf (CodigoRetorno = "IVJ.ECOMMERCE.RET.004") Then
        Response.Write("Estaremos sempre à disposição."
)
    ElseIf (CodigoRetorno = "IVJ.ECOMMERCE.RET.002") Then
       
Response.Write("Compra realizada com sucesso! Obrigado.")
    End If


   
    Function HTMLDecode(sText)
      Dim I
        
      sText = Replace(sText, "&quot;", Chr(34))
      sText = Replace(sText, "&lt;"  , Chr(60))
      sText = Replace(sText, "&gt;"  , Chr(62))
      sText = Replace(sText, "&amp;" , Chr(38))
      sText = Replace(sText, "&nbsp;", Chr(32))
        
      For I = 1 to 255
         sText = Replace(sText, "&#" & I & ";", Chr(I))
      Next
        
      HTMLDecode = sText
    End Function
%>

<html>
   <head>
      <title>Exemplo Integração iVarejo ASP 3.0</title>
   </head>
   <body>
   </body>
</html>


Retornos possíveis (ReturnCode - ReturnMsg)
  • Erros:
    • "IVJ.ECOMMERCE.INTERNALFAULT" - "Erro interno."
    • "IVJ.ECOMMERCE.ERR.001" - "Acesso não autorizado."
    • "IVJ.ECOMMERCE.ERR.002" - "O pedido referente a transação <NUMERO_DA_TRANSACAO> não foi localizado."
    • "IVJ.ECOMMERCE.ERR.003" - "Pedido já existe na base da iVarejo. Número do Pedido: <NUMERO_DO_PEDIDO>"
    • "IVJ.ECOMMERCE.ERR.004"
      • "|MSG1:A data da entrada não pode ser menor do que a data de hoje."
      • "|MSG4:O financiamento deve ter um máximo de <Quantidade máxima de parcelas da regra de negócio> parcelas."
      • "|MSG5:O financiamento deve ter um mínimo de <Quantidade mínima de parcelas da regra de negócio> parcelas."
      • "|MSG6:O financiamento deve ter um valor máximo de <Valor máximo para o parcelamento da regra de negócio>."
      • "|MSG7:O financiamento deve ter um valor mínimo de <Valor mínimo para o parcelamento da regra de negócio>."
      • "|MSG8:O CPF informado não é válido."
    • "IVJ.ECOMMERCE.ERR.005" - "URL de retorno inválida."
      • Não é necessária a implementação do tratamento deste erro na página de retorno, pois neste caso o usuário é direcionado para uma página de erro no ambiente iVarejo onde é orientado a procurar o cliente para informar o erro.
  • Processamento:
    • "IVJ.ECOMMERCE.RET.002" - "Pagamento realizado com sucesso."
    • "IVJ.ECOMMERCE.RET.003" - "Pagamento não autorizado."
      • A compra não foi permitida pela análise de risco e ou fraude do consumidor.
    • "IVJ.ECOMMERCE.RET.004" - "Pagamento cancelado pelo cliente."

Para realizar o tratamento do retorno, basta verificar o valor do campo ReturnCode e considerar as situações acima conforme demonstrado no exemplo.
ċ
meioPagamentoiVarejoPostForm.asp
(13k)
Usuário desconhecido,
6 de jul de 2011 13:20
ċ
retornoMeioPagamentoiVarejoPostForm.asp
(1k)
Usuário desconhecido,
6 de jul de 2011 13:20
Comments