package br.com.caelum.stella.gateway.amex; import java.math.BigInteger; import javax.servlet.http.HttpServletRequest; import br.com.caelum.stella.gateway.core.BigDecimalFormatter; import br.com.caelum.stella.gateway.core.EnumComCodigoFinder; import br.com.caelum.stella.gateway.core.IntegrationHandler; import br.com.caelum.stella.gateway.core.ProblematicTransactionException; /** * Verifica o retorno da transação realizada através da interface do Amex * * @author Alberto Pc * */ public class AmexVerificaRetornoAutorizacao implements IntegrationHandler<AmexAutorizacaoReturn> { private HttpServletRequest request; public AmexVerificaRetornoAutorizacao(HttpServletRequest request) { this.request = request; } public AmexAutorizacaoReturn handle() { // TODO Auto-generated method stub String codigoRetorno = request.getParameter("vpc_TxnResponseCode"); String mensagemRetorno = request.getParameter("vpc_Message"); String secureHash = request.getParameter("vpc_SecureHash"); AmexDadosConfiguracao amexDadosConfiguracao = new AmexDadosConfiguracao( null, request.getParameter("vpc_Merchant"), null, request .getParameter("vpc_Command"), null,null); AmexCheckout checkout = new AmexCheckout(request .getParameter("vpc_MerchTxnRef"), request .getParameter("vpc_OrderInfo"), new BigDecimalFormatter() .stringInCentsToBigDecimal(request.getParameter("vpc_Amount")), null, new AmexFormaPagamento(new EnumComCodigoFinder() .descobreAEnumPeloCodigo(AmexTipoCartao.class, request .getParameter("vpc_Card")))); if (!"0".equals(codigoRetorno)) { throw new ProblematicTransactionException(mensagemRetorno, new AmexAutorizacaoReturn(amexDadosConfiguracao, checkout, mensagemRetorno, codigoRetorno, null, null, null, null, null, secureHash)); } return new AmexAutorizacaoReturn(amexDadosConfiguracao, checkout, mensagemRetorno, codigoRetorno, request .getParameter("vpc_AcqResponseCode"), new BigInteger( request.getParameter("vpc_TransactionNo")), Integer .valueOf(request.getParameter("vpc_BatchNo")), request .getParameter("vpc_ReceiptNo"), request .getParameter("vpc_AuthorizeId"),"00"); } }