Primeiro passo é criar uma conta no MoIP (Conta de Negócios/Profissional):
www.moip.com.br
Também crie sua conta no ambiente para desenvolvedores:
desenvolvedor.moip.com.br
Nota: Após fazer os cadastros, você pode perceber que na sua conta Sandbox tem o item API MoIP no menu Ferramentas, mas na sua conta MoIP não, você deve solicitar ao suporte MoIP ([email protected]) o acesso ao token/key de acesso à API. Então esse menu passara a aparecer.
Por padrão, a conta SandBox é criada com o perfil “Pessoal”. Mas para usufruir de toda a área de testes sua conta deve ter o perfil “Negócios”.
Para fazer esta migração vá no menu "Meus Dados" -> "Conta MoIP" -> "Tipo de Conta" e efetue a migração para "Negócios".
Vamos inicair a integração utilizando o Sandbox, para que possamos fazer todos os testes necessários.
E como o foco deste tutorial é integrar o sistema de pagamento, vou criar uma página de fechamento de pedido e uma página para tratar o retorno do MoIP. Não vou criar um carrinho de compras, porem vou mostrar como enviar intens de uma suposta compra.
Carrinho de compras / enviar XML com os dados do pedido.
O processo é bem interessante, ao finalizar o pedido, geramos um XML com os dados do pedido, mais os do cliente e o enviamos ao MoIP. Se tudo ocorrer bem, o MoIP nos retorna uma chave(Token) para redirecionarmos o cliente para sua página de pagamento (página de checkout do MoIP). Na minha opinião esse é um processo bem seguro.
XML simples de envio:
<EnviarInstrucao>
<!-- Identificador do tipo de instrução -->
<InstrucaoUnica>
<!-- *********** DADOS OBRIGATÓRIOS *********** -->
<Razao>Pagamento de exemplo</Razao>
<Valores>
<Valor moeda="BRL">150.25</Valor>
</Valores>
<!-- *********** DADOS RECOMENDADOS *********** -->
<IdProprio>pag1</IdProprio>
<DataVencimento>2008-04-06T12:01:48.703-02:00</DataVencimento>
</InstrucaoUnica>
</EnviarInstrucao>
XML de Retorno:
<ns1:EnviarInstrucaoUnicaResponse xmlns:ns1="https://desenvolvedor.moip.com.br/sandbox/">
<Resposta>
<ID>200807272314444710000000000022</ID>
<Status>Sucesso</Status>
<Token>T2N0L0X8E0S71217H3W1T4F4S4G4K731D010V0S0V0S080M010E0Q082X2</Token>
</Resposta>
</ns1:EnviarInstrucaoUnicaResponse>
Bom, agora vamos trabalhar um pouco, segue abaixo o exemplo de integração MoIP.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Finalizar pedido</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnPay" runat="server" Text="Comprar" onclick="btnPay_Click" />
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;
using System.Net;
using System.Text;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnPay_Click(object sender, EventArgs e)
{
string sStatus, sToken;
//URL MoIP: https://www.moip.com.br/ws/alpha/EnviarInstrucao/Unica
//Abaixo a URL Sandbox
string URI = "https://desenvolvedor.moip.com.br/sandbox/ws/alpha/EnviarInstrucao/Unica";
//URL de redirect MoIP: https://www.moip.com.br/Instrucao.do?token=
//Abaixo a URL de redirect Sandbox
string sURLRedirect = "https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token=";
//Para obter Token e Chave de acesso, va em Sandbox - Ferramentas / API / Chaves de acesso
//Para sua conta MoIP você deve solicitar ao suporte MoIP ([email protected]) o Token e Chave
const string TOKEN = "SeuToken";
const string KEY = "SuaChaveDeAcesso";
//Codificação do conteúdo do arquivo (UTF8)
Response.ContentEncoding = System.Text.Encoding.UTF8;
WebClient client = new WebClient(); //Criando o WebClient
#region Gerar XML
string strXML =
@"<EnviarInstrucao>
<InstrucaoUnica>
<Razao>Pagamento de testes</Razao>
<Valores>
<Valor moeda='BRL'>0.50</Valor>
</Valores>
<IdProprio>id_pedido</IdProprio>
<Mensagens>" +
//quando tiver mais de um produto,
//voce pode secreve-los desta forma:
@"<Mensagem>Produto 1 - Quantidade - Valor</Mensagem>
<Mensagem>Produto 2 - Quantidade - Valor</Mensagem>
</Mensagens>
</InstrucaoUnica>
<DataVencimento>2008-04-06T12:01:48.703-02:00</DataVencimento>" +
//Os dados do Pagador não são obrigatórios,
//use os que achar necessário.
@"<Pagador>
<Nome>Luiz Inácio Lula da Silva</Nome>
<Email>[email protected]</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>
</EnviarInstrucao>";
#endregion
#region Comunicação com o MoIP
string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes(TOKEN + ":" + KEY));
client.Headers.Add("Authorization: Basic " + auth);
client.Headers.Add("User-Agent: Mozilla/4.0");
byte[] ResponseArray = client.UploadData(URI, "POST", Encoding.UTF8.GetBytes(strXML));
string sResponse = Encoding.UTF8.GetString(ResponseArray);
#endregion
XmlDocument xml = new XmlDocument();
xml.LoadXml(sResponse); //XML de retorno
//Pegar o Status
sStatus = xml.DocumentElement.SelectSingleNode("//Resposta//Status").InnerText;
if (sStatus != "Falha")
{
//Se o status for diferente de Falha pega o token
sToken = xml.DocumentElement.SelectSingleNode("//Resposta//Token").InnerText;
//Salve o token junto com os dados do seu pedido
//Redirecionar o cliente para concluir o processo no MoIP
Response.Redirect(sURLRedirect + sToken);
}
else
{
//Se o status for "Falha"
}
}
}
Para saber mais detalhes sobre Integração API - Pagamento Único:
Integração API - Pagamento Único.pdf
Conteúdo direto do site MoIP:
Integração via API – Exemplo de integração em Java
Integração via API – Exemplo de integração em ASP
Integração via API – Exemplo de integração em PHP
http://labs.moip.com.br/2010/08/15/exemplos/