Desvendando a API – Parte 7: Adicionais – PagamentoDireto: boleto bancário, cartão de crédito e débito
por MoIP LabsUtilizando 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

