package br.com.caelum.stella.gateway.integration; import java.io.File; import java.math.BigDecimal; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import org.junit.BeforeClass; import org.junit.Test; import br.com.caelum.stella.gateway.HtmlViewerHelper; import br.com.caelum.stella.gateway.core.GatewaysConf; import br.com.caelum.stella.gateway.pagseguro.PagSeguroCheckout; import br.com.caelum.stella.gateway.pagseguro.PagSeguroDadosAutorizacaoPagamento; import br.com.caelum.stella.gateway.pagseguro.PagSeguroDadosCliente; import br.com.caelum.stella.gateway.pagseguro.PagSeguroDadosConfiguracao; import br.com.caelum.stella.gateway.pagseguro.PagSeguroItem; import br.com.caelum.stella.gateway.pagseguro.PagSeguroMoeda; import br.com.caelum.stella.gateway.pagseguro.PagSeguroSolicitaAutorizacaoPagamento; import br.com.caelum.stella.gateway.pagseguro.PagSeguroTipoFrete; public class PagSeguroTestSolicitacaoIntegracao { private static PagSeguroDadosConfiguracao configuracao; @BeforeClass public static void setUp() { GatewaysConf conf = new GatewaysConf(); configuracao = new PagSeguroDadosConfiguracao(conf .getPagSeguroUrlComponenteDeAutorizacao(), "123456", "teste@teste.com.br", conf.getPagSeguroUrlVerificacaoToken()); } @Test public void testSolicitacaoAutorizacaoComFreteESemDadosDoUsuario() { PagSeguroCheckout checkout = PagSeguroCheckout.newCheckoutComFrete( PagSeguroMoeda.BRASIL_REAL, new HashSet<PagSeguroItem>(), "http://www.qqsite.com.br/botao.jpg", "1234567890", PagSeguroTipoFrete.SEDEX); adicionaItens(checkout); criarPaginaDeTeste(checkout, "post_dados_pagseguro_frete_sem_dados_cliente.html"); } @Test public void testSolicitacaoAutorizacaoComFreteParaUsuarioDecidirESemDadosDoUsuario() { PagSeguroCheckout checkout = PagSeguroCheckout .newCheckoutComFreteParaUsuarioDecidir( PagSeguroMoeda.BRASIL_REAL, new HashSet<PagSeguroItem>(), "http://www.qqsite.com.br/botao.jpg", "1234567890"); adicionaItens(checkout); criarPaginaDeTeste(checkout, "post_dados_pagseguro_sem_frete_sem_dados_cliente.html"); } @Test public void testSolicitacaoAutorizacaoComFreteEComDadosDoUsuario() { PagSeguroDadosCliente cliente = new PagSeguroDadosCliente("40000000", "Salvador", "Av Marques de Caravelas", "Cliente", "BA", "2626", "Edf XXX", "Rio Vermelho", "71", "33333333", "cliente@email.com.br"); PagSeguroCheckout checkout = PagSeguroCheckout .newCheckoutComFreteEComDadosDoUsuario( PagSeguroMoeda.BRASIL_REAL, new HashSet<PagSeguroItem>(), "http://www.qqsite.com.br/botao.jpg", "1234567890", PagSeguroTipoFrete.SEDEX, cliente); adicionaItens(checkout); criarPaginaDeTeste(checkout, "post_dados_pagseguro_frete_com_dados_cliente.html"); } @Test public void testSolicitacaoAutorizacaoComFreteParaUsuarioDecidirEComDadosDoUsuario() { PagSeguroDadosCliente cliente = new PagSeguroDadosCliente("40000000", "Salvador", "Av Marques de Caravelas", "Cliente", "BA", "2626", "Edf XXX", "Rio Vermelho", "71", "33333333", "cliente@email.com.br"); PagSeguroCheckout checkout = PagSeguroCheckout .newCheckoutComFreteParaUsuarioDecidirEComDadosDoUsuario( PagSeguroMoeda.BRASIL_REAL, new HashSet<PagSeguroItem>(), "http://www.qqsite.com.br/botao.jpg", "1234567890", cliente); adicionaItens(checkout); criarPaginaDeTeste(checkout, "post_dados_pagseguro_sem_frete_com_dados_cliente.html"); } private void adicionaItens(PagSeguroCheckout checkout) { checkout .adicionaItem( new PagSeguroItem("123", "produto1", 2, BigDecimal.TEN)) .adicionaItem( new PagSeguroItem("1234", "produto2", 3, BigDecimal.ONE)); } private void criarPaginaDeTeste(PagSeguroCheckout checkout, String nomeArquivo) { PagSeguroDadosAutorizacaoPagamento dadosAutorizacaoPagamento = new PagSeguroSolicitaAutorizacaoPagamento( checkout).handle(); new HtmlViewerHelper().body("") .form(configuracao.getUrlComponenteAutorizacao(), "post", "pagamento").createInputsHidden( criarCampos(dadosAutorizacaoPagamento)) .criarPaginaTemporariaNoDisco( new File("").getAbsolutePath() + File.separator + "/" + nomeArquivo); } private Map<String, Object> criarCampos( PagSeguroDadosAutorizacaoPagamento pagamento) { Map<String, Object> mapa = new HashMap<String, Object>(); mapa.put("email_cobranca", configuracao.getEmailCobranca()); mapa.put("tipo", pagamento.getTipo()); mapa.put("moeda", pagamento.getMoeda()); mapa.put("moeda", pagamento.getMoeda()); int i = 1; for (PagSeguroItem item : pagamento.getItens()) { mapa.put("item_id_" + i, item.getId()); mapa.put("item_descr_" + i, item.getDescricao()); mapa.put("item_quant_" + i, item.getQuantidade()); mapa.put("item_valor_" + i, item.getValorFormatado()); mapa.put("item_frete_" + i, item.getValorFreteFormatado()); mapa.put("item_peso_" + i, item.getPesoFormatado()); i++; } if (pagamento.hasDadosDoCliente()) { mapa.put("cliente_nome", pagamento.getNomeCliente()); mapa.put("cliente_cep", pagamento.getCep()); mapa.put("cliente_end", pagamento.getEndereco()); mapa.put("cliente_num", pagamento.getNumero()); mapa.put("cliente_compl", pagamento.getComplemento()); mapa.put("cliente_bairro", pagamento.getBairro()); mapa.put("cliente_cidade", pagamento.getCidade()); mapa.put("cliente_uf", pagamento.getEstado()); mapa.put("cliente_pais", pagamento.getPais()); mapa.put("cliente_ddd", pagamento.getDdd()); mapa.put("cliente_tel", pagamento.getTelefone()); mapa.put("cliente_email", pagamento.getEmail()); } mapa.put("tipo_frete", pagamento.getTipoFrete()); return mapa; } }