Cadastre-se

Comece agora a utilizar o MoIP em seus projetos.

Desvendando a API – Parte 7: Adicionais – PagamentoDireto: boleto bancário, cartão de crédito e débito

por

Utilizando a API do PagamentoDireto no MoIP você possui flexibilidade em sua aplicação para três opções de pagamento: 1) boleto bancário; 2) cartão de crédito; e 3) débito. Ela faz com que o seu cliente/comprador selecione a forma de pagamento direto do seu site/aplicativo. Isso evita que o cliente seja redirecionado para a página de checkout do MoIP, permitindo uma maior flexibilidade.

Para que o seu site possua o PagamentoDireto é necessário que ele cumpra algumas exigências. Para saber quais são e pedir a habilitação da funcionalidade na sua conta MoIP, mande um e-mail para integracao@moip.com.br.

A seguir vamos mostrar cada um dos métodos de pagamente usando o Pagamento Único no Sandbox, será mostrado como preparar o XML para fazer o  POST na URL https://desenvolvedor.moip.com.br/sandbox/ws/alpha/EnviarInstrucao/Unica com todas as instruções do pagamento.

Boleto Bancário

Veja o XML abaixo:

<EnviarInstrucao>
    <InstrucaoUnica>
        <Razao>Pagamento direto com boleto</Razao>
        <Valores>
            <Valor moeda=\"BRL\">150.25</Valor>
        </Valores>
        <IdProprio>". rand(1,1000) ."</IdProprio>
        <PagamentoDireto>
            <Forma>BoletoBancario</Forma>
        </PagamentoDireto>
        <Pagador>
            <Nome>Luiz Inácio Lula da Silva</Nome>
            <Email>presidente@planalto.gov.br</Email>
            <TelefoneCelular>(61)9999-9999</TelefoneCelular>
            <Apelido>Lula</Apelido>
            <Identidade>111.111.111-11</Identidade>
            <EnderecoCobranca>
                <Logradouro>Praça dos Três Poderes</Logradouro>
                <Numero>0</Numero>
                <Complemento>Palácio do Planalto</Complemento>
                <Bairro>Zona Cívico-Administrativa</Bairro>
                <Cidade>Brasília</Cidade>
                <Estado>DF</Estado>
                <Pais>BRA</Pais>
                <CEP>70100-000</CEP>
                <TelefoneFixo>(61)3211-1221</TelefoneFixo>
            </EnderecoCobranca>
        </Pagador>
        <Boleto>
            <DiasExpiracao Tipo=\"Corridos\">5</DiasExpiracao>
        </Boleto>
    </InstrucaoUnica>
</EnviarInstrucao>

Nele podemos notar alguns componentes que serão semelhantes em todos os três métodos, são eles: <Razao>, <Valores>, <IdProprio>, <PagamentoDireto> e <Pagador>. No caso do boleto, teremos o campo a mais <Boleto> com informações adicionais ao boleto. Como podemos perceber no campo <PagamentoDireto> basta definir o campo <Forma> com BoletoBancario para implementar o método. Já no campo <Boleto> é passado as intruções quanto ao vencimento do boleto.

Com a instrução XML preparada basta autenticar o seu POST e enviar ao Sandbox. O Sandbox irá retornar um XML informando o resultado da sua transação e confirmada a transação o ID e Token gerado a ser utilizado para gerar a página do boleto através da URL https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token=<Token>.

Veja um exemplo de código em PHP completo para o boleto bancário:

<?php ob_start();
$token = "SEU TOKEN";
$key = "SUA KEY";

$base = $token . ":" . $key;
$auth = base64_encode($base);
$header[] = "Authorization: Basic " . $auth;
$param = "
<EnviarInstrucao>
    <InstrucaoUnica>
        <Razao>Pagamento direto com boleto</Razao>
        <Valores>
            <Valor moeda=\"BRL\">150.25</Valor>
        </Valores>
        <IdProprio>". rand(1,1000) ."</IdProprio>
        <PagamentoDireto>
            <Forma>BoletoBancario</Forma>
        </PagamentoDireto>
        <Pagador>
            <Nome>Luiz Inácio Lula da Silva</Nome>
            <Email>presidente@planalto.gov.br</Email>
            <TelefoneCelular>(61)9999-9999</TelefoneCelular>
            <Apelido>Lula</Apelido>
            <Identidade>111.111.111-11</Identidade>
            <EnderecoCobranca>
                <Logradouro>Praça dos Três Poderes</Logradouro>
                <Numero>0</Numero>
                <Complemento>Palácio do Planalto</Complemento>
                <Bairro>Zona Cívico-Administrativa</Bairro>
                <Cidade>Brasília</Cidade>
                <Estado>DF</Estado>
                <Pais>BRA</Pais>
                <CEP>70100-000</CEP>
                <TelefoneFixo>(61)3211-1221</TelefoneFixo>
            </EnderecoCobranca>
        </Pagador>
        <Boleto>
            <DiasExpiracao Tipo=\"Corridos\">5</DiasExpiracao>
        </Boleto>
    </InstrucaoUnica>
</EnviarInstrucao>";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://desenvolvedor.moip.com.br/sandbox/ws/alpha/EnviarInstrucao/Unica");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_USERPWD, $user . ":" . $passwd);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$ret = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$xml = new SimpleXMLElement($ret);
$token = $xml->Resposta->Token[0];
$url = 'Location: https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token='.$token;
header($url);

Na imagem a seguir o resultado do código acima:

Débito

No caso do débito os procedimentos serão os mesmos do boleto bancário. Toda a mudança ocorre no XML a ser enviado para o Sandbox, veja como fica:

<EnviarInstrucao>
    <InstrucaoUnica> <!-- Identificador do tipo de instrução -->
    <!-- *********** DADOS OBRIGATÓRIOS *********** -->
        <Razao>Pagamento direto com debito online</Razao>
        <Valores>
             <Valor moeda="BRL">121.75</Valor>
        </Valores>
        <IdProprio>dir_deb_3</IdProprio>
        <PagamentoDireto>
             <Forma>DebitoBancario</Forma>
             <Instituicao>BancoDoBrasil</Instituicao>
        </PagamentoDireto>
        <Pagador>
        	<Nome>Luiz Inácio Lula da Silva</Nome>
        	<LoginMoIP>lula</LoginMoIP>
        	<Email>presidente@planalto.gov.br</Email>
        	<TelefoneCelular>(61)9999-9999</TelefoneCelular>
        	<Apelido>Lula</Apelido>
        	<Identidade>111.111.111-11</Identidade>
        	<EnderecoCobranca>
        		<Logradouro>Praça dos Três Poderes</Logradouro>
        		<Numero>0</Numero>
        		<Complemento>Palácio do Planalto</Complemento>
        		<Bairro>Zona Cívico-Administrativa</Bairro>
        		<Cidade>Brasília</Cidade>
        		<Estado>DF</Estado>
        		<Pais>BRA</Pais>
        		<CEP>70100-000</CEP>
        		<TelefoneFixo>(61)3211-1221</TelefoneFixo>
        	</EnderecoCobranca>
        </Pagador>
    </InstrucaoUnica>
</EnviarInstrucao>

Neste caso é possível perceber não criamos outro campo <Debito> como no caso do boleto, as informações adicionais para a instrução de débito foram passadas dentro com campo <PagamentoDireto>.

Cartão de crédito

Novamente, a mudança na instrução de envio ao Sandbox vai acontecer no XML a ser trocado com o MoIP. Veja exemplo de XML abaixo um exemplo de instrução:

<EnviarInstrucao>
    <InstrucaoUnica> <!-- Identificador do tipo de instrução -->
    <!-- *********** DADOS OBRIGATÓRIOS *********** -->
        <Razao>Pagamento direto com cartão de crédito</Razao>
        <Valores>
             <Valor moeda="BRL">213.25</Valor>
        </Valores>
        <IdProprio>dir_card_2</IdProprio>
        <PagamentoDireto>
             <Forma>CartaoCredito</Forma>
             <Instituicao>AmericanExpress</Instituicao>
             <CartaoCredito>
             	<Numero>345678901234564</Numero>
             	<Expiracao>08/11</Expiracao>
             	<CodigoSeguranca>1234</CodigoSeguranca>
             	<Portador>
             		<Nome>Nome do Portador</Nome>
             		<Identidade Tipo="CPF">111.111.111-11</Identidade>
             		<Telefone>(11)1111-1111</Telefone>
             		<DataNascimento>30/11/1980</DataNascimento>
             	</Portador>
             </CartaoCredito>
             <Parcelamento>
             	<Parcelas>2</Parcelas>
             	<Recebimento>AVista</Recebimento>
             </Parcelamento>
        </PagamentoDireto>
        <Pagador>
        	<Nome>Luiz Inácio Lula da Silva</Nome>
        	<LoginMoIP>lula</LoginMoIP>
        	<Email>presidente@planalto.gov.br</Email>
        	<TelefoneCelular>(61)9999-9999</TelefoneCelular>
        	<Apelido>Lula</Apelido>
        	<Identidade>111.111.111-11</Identidade>
        	<EnderecoCobranca>
        		<Logradouro>Praça dos Três Poderes</Logradouro>
        		<Numero>0</Numero>
        		<Complemento>Palácio do Planalto</Complemento>
        		<Bairro>Zona Cívico-Administrativa</Bairro>
        		<Cidade>Brasília</Cidade>
        		<Estado>DF</Estado>
        		<Pais>BRA</Pais>
        		<CEP>70100-000</CEP>
        		<TelefoneFixo>(61)3211-1221</TelefoneFixo>
        	</EnderecoCobranca>
        </Pagador>
    </InstrucaoUnica>
</EnviarInstrucao>

No caso do cartão de crédito algumas informações complementares foram informadas para a transação, por exemplo, o número do cartão, código de segurança e outros. É muito importante que sua aplicação verifique bem as informações a serem passadas ao MoIP para executar a transação sem falhas.

Mais detalhes sobre como criar uma instrução de pagamento usando a API do PagamentoDireto podem ser vista na documentação da API e através de dúvidas no nosso Fórum.

Que tal começar sua aplicação agora? Divirta-se! =D


Ver outros Posts
  • http://www.facebook.com/RonnySantana.com.br Ronny Santana

    Como posso estar passando via xml a instrução da url do retorno?
    ?

  • http://twitter.com/jvrmaia João Víctor R. Maia

    Ronny, não entendi sua dúvida. A URL de retorno é tratada pela sua aplicação, na reposta do MoIP vai constar um Token que em caso de sucesso basta concatenar a URL => https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token= que no caso de boleto, o boleto será gerado; no caso de débito será redirecionado para o site do banco; e no crédito apenas dizendo o status do pagamento pois não precisa retornar a URL nesse caso.

  • Claudio7cesar

    pessoal pra quem ten dunvida no TAL DO IP PROPRIO, E TRVAMENTO, ATIVE a opçao INGNORAR TOKEN do seu site de loja e ai resolverá tudo ehehheh .. é isto ai.. fuiiiii

  • http://www.facebook.com/RonnySantana.com.br Ronny Santana

    Ola, tava olhando esse pequeno manual do pagamento direto, na instrução do boleto não tem a tag LoginMoIP em Pagador, já na instrução de debito tem essa tag dentro do pagador, é mesmo necessário?

    • Joao Victor

      o LoginMoIP é opcional

  • Anderson Nunes

    Tentei fazer a integração do Boleto, mas quando eu executo ele abre a pagina do moip com todas as opções de pagamento no lugar de ir direto ao boleto