por Cesar Cassiano Schimanco

Tutorial de integração MoIP em ASP.NET / C#

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 (api@moip.com.br) 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 (api@moip.com.br) 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>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>
        </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/

Comentários

Carregando comentários

Postar um novo comentário



Processando...