Blog‎ > ‎

Integração Pop-Up com Post/XML‎ (via ASP)

postado em 16 de mai de 2012 07:25 por Usuário desconhecido
por Filipe Abelha

Nos últimos posts (1 e 2) vimos o processo de funcionamento da integração pop-up com Post/XML, utilizando a tecnologia Microsoft ASP .NET. Para simplificar a integração do PDV com a plataforma iVarejo, nós desenvolvemos uma aplicação exemplo em tecnologia ASP, ainda muito utilizada. Ela se encontra na página da integração pop-up com Post/XML (aqui). Então sugiro que você baixe o arquivo "meioPagamentoiVarejo.asp", para conseguir acompanhar melhor o seu funcionamento.

A aplicação exemplo

Esta aplicação foi desenvolvida em ASP (Active Server Pages), portanto não está compilada (o ASP é interpretado). Abrindo o arquivo podemos ver uma série de métodos implementados e no final a página propriamente dita. Agora veremos as particularidades de cada um desses elementos.

O código presente entre as linhas 3 e 11 realiza a execução das procedures principais "EnviaPedido", "RequisitarSegundaViaBoletos" e "ObtemStatusMeioPagamento" de acordo com a ação realizada.


private sub EnviaPedido()

Procedure responsável pelo envio de pedidos para a iVarejo. Esse método executa os seguintes passos:
  • Cria uma conexão com o webservice de entrada de pedido; 
  • Monta e carrega o XML, através dos métodos "MontarXMLEnvioMeioPagamento" e "LoadXML" (do "Microsoft.XMLDOM"), respectivamente;
  • Executa o post para o serviço de entrada de pedido;
  • Carrega o XML de retorno;
  • Trata o retorno do XML, através do método "TrataRetornoEntradaPedido";
  • Caso ocorra algum erro, ele é tratado através da procedure "TrataErro".

private sub ObtemStatusMeioPagamento()

Procedure responsável por requisitar o status do pagamento realizado na iVarejo. Esse método executa os seguintes passos:
  • Cria uma conexão com o webservice de retorno de processamento de pedido;
  • Monta e carrega o XML, através dos métodos "MontarXMLRequisicaoStatusPagamento"  e "LoadXML" (do "Microsoft.XMLDOM"), respectivamente;
  • Executa o post para o serviço de retorno de processamento de pedido;
  • Carrega o XML de retorno;
  • Trata o retorno do XML, através do método "TrataRetornoStatusMeioPagamento";
  • Caso ocorra algum erro, ele é tratado através da procedure "TrataErro".

private sub RequisitarSegundaViaBoletos()

Procedure responsável por requisitar o envio da segunda via dos boletos. Esse método executa os seguintes passos:
  • Cria uma conexão com o webservice de segunda via de boletos;
  • Monta e carrega o XML, através dos métodos "MontarXMLRequisicaoSegundaViaBoletos"  e "LoadXML" (do "Microsoft.XMLDOM"), respectivamente;
  • Executa o post para o serviço de segunda via de boletos;
  • Carrega o XML de retorno;
  • Trata o retorno do XML, através do método "TrataRetornoRequisicaoSegundaViaBoletos";
  • Caso ocorra algum erro, ele é tratado através da procedure "TrataErro".

private sub TrataRetornoEntradaPedido(retorno)

Procedure responsável por tratar o retorno do serviço de entrada de pedido. Esse método cria um javascript para a abertura da pop-up modal e define novamente a url original para a geração de postback, a fim de permitir a obtenção do status do pagamento assim que o fluxo de pagamento for finalizado. Observe que a altura e a largura da pop-up já se encontram no exemplo, de modo que a sua alteração diminuirá a qualidade da experiência dos seus clientes.


private sub TrataRetornoRequisicaoSegundaViaBoletos(retorno)

Procedure responsável por tratar o retorno do serviço de segunda via dos boletos. Caso o código retornado seja 
"IVJ.ECOMMERCE.RET.100", os boletos foram gerados com sucesso.


private sub TrataRetornoStatusMeioPagamento(retorno)

Procedure responsável por tratar o retorno do serviço de retorno do processamento do pedido. Cada código retornado possui um significado diferente, seguem os significados a seguir:
  • "IVJ.ECOMMERCE.RET.002": pagamento finalizado com sucesso;
  • "IVJ.ECOMMERCE.RET.003": pagamento cancelado pelo cliente em algum momento do fluxo;
  • "IVJ.ECOMMERCE.RET.004": utilização da iVarejo não aprovada como meio de pagamento para aquele pedido;
  • "IVJ.ECOMMERCE.FPI.000": fluxo interrompido pelo cliente pelo cancelamento do passo "análise de risco";
  • "IVJ.ECOMMERCE.FPI.001" fluxo interrompido pelo cliente pelo cancelamento do passo "dados da compra";
  • "IVJ.ECOMMERCE.FPI.002"fluxo interrompido pelo cliente pelo cancelamento do passo "dados do consumidor";
  • "IVJ.ECOMMERCE.FPI.003": fluxo interrompido pelo cliente pelo cancelamento do passo "plano de pagamento";

private function MontarXMLEnvioMeioPagamento()

Função responsável pela geração do XML de envio para o meio de pagamento.


private function MontarXMLRequisicaoStatusPagamento(idTransacao)

Função responsável pela geração do XML de requisição do status do pagamento.


private function MontarXMLRequisicaoSegundaViaBoletos()

Função responsável pela geração do XML de requisição da segunda via de boletos.


private sub TrataErro(retorno)

Procedure responsável pelo tratamento de erros. Cada código retornado possui um significado diferente, seguem os significados a seguir:
  • "IVJ.ECOMMERCE.ERR.FP1": erro no passo "dados da compra";
  • "IVJ.ECOMMERCE.ERR.FP2": erro no passo "dados do consumidor";
  • "IVJ.ECOMMERCE.ERR.FP3": erro no passo "plano de pagamento";
  • "IVJ.ECOMMERCE.ERR.FP4": erro no passo "finalização de pagamento";
  • "IVJ.ECOMMERCE.ERR.FP7": erro na impressão de boletos;
  • "IVJ.ECOMMERCE.WSVCCONTENTFAULT": erro no formato do XML;
  • "IVJ.ECOMMERCE.INTERNALFAULT": erro interno.

private function CapturaErro(message)

Função de suporte para identificação de retorno de erro pela iVarejo.



No próximo post trataremos da integração sem pop-up, utilizando POST/FORM. Até lá!



tags: #integracao, #xml, #asp, #aspclassico

Fontes:

---
Comments