package br.com.caelum.stella.gateway.redecard;
import java.math.BigDecimal;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import br.com.caelum.stella.gateway.core.HttpIntegrationRequester;
import br.com.caelum.stella.gateway.core.IntegrationHandler;
public class RedecardSolicitacaoConfirmacaoTransacao implements
IntegrationHandler<RedecardConfirmacaoTransacaoReturn> {
private static final String CODIGO_CONFIRMACAO_TRANSACAO = "203";
private RedecardAutorizacaoReturn autorizacaoReturn;
private RedecardCheckout checkoutASerVerificado;
private RedecardDadosConfiguracao dadosConfiguracao;
public RedecardSolicitacaoConfirmacaoTransacao(
RedecardAutorizacaoReturn autorizacaoReturn,
RedecardFormaPagamento parcelamento, BigDecimal total,RedecardDadosConfiguracao dadosConfiguracao) {
super();
this.autorizacaoReturn = autorizacaoReturn;
this.checkoutASerVerificado = new RedecardCheckout(total, parcelamento,
null, null, null);
this.dadosConfiguracao = dadosConfiguracao;
}
public RedecardSolicitacaoConfirmacaoTransacao(
RedecardAutorizacaoReturn autorizacaoReturn,
RedecardFormaPagamento parcelamento, BigDecimal total) {
this(autorizacaoReturn,parcelamento,total,new RedecardDadosConfiguracao());
}
public RedecardConfirmacaoTransacaoReturn handle() {
// TODO Auto-generated method stub
GetMethod getMethod = new GetMethod(dadosConfiguracao.getUrlConfirmacaoTransacao());
getMethod
.setQueryString(new NameValuePair[] {
new NameValuePair("DATA", autorizacaoReturn
.getDataFormatada()),
new NameValuePair("TRANSACAO",
CODIGO_CONFIRMACAO_TRANSACAO),
new NameValuePair("TRANSORIG", checkoutASerVerificado
.getFormaPagamento().getTipoTransacao()
.getCodigo()),
new NameValuePair("PARCELAS", checkoutASerVerificado
.getFormaPagamento()
.getNumeroDeParcelasComNoMinimoDoisDigitos()),
new NameValuePair("FILIACAO", String.valueOf(dadosConfiguracao.getNumeroFiliacaoFornecedor())),
new NameValuePair("DISTRIBUIDOR",String.valueOf(dadosConfiguracao.getNumeroFiliacaoFornecedor())),
new NameValuePair("TOTAL", checkoutASerVerificado
.getTotalComDuasCasasDecimais().toString()),
new NameValuePair("NUMPEDIDO", autorizacaoReturn
.getNumPedido()),
new NameValuePair("NUMAUTOR", autorizacaoReturn
.getNumAutor()),
new NameValuePair("NUMCV", autorizacaoReturn.getNumCV()),
new NameValuePair("NUMSQN", autorizacaoReturn
.getNumSQN()), });
String retorno = new HttpIntegrationRequester(getMethod).makeRequest();
return new RedecardVerificadorRetornoConfirmacaoTransacao(retorno)
.verificaRetorno();
}
}