NAME

Net::Moip - Interface com o gateway de pagamentos Moip

SYNOPSE

    use Net::Moip;

    my $gateway = Net::Moip->new(
        token => 'MY_MOIP_TOKEN',
        key   => 'MY_MOIP_KEY',
    );

    my $resposta = $gateway->pagamento_unico({
        razao           => 'Pagamento para a Loja X',
        tipo_validacao  => 'Transparente',
        valor           => 59.90,
        id_proprio      => 1,
        url_retorno     => 'http://exemplo.com/callback',
        url_notificacao => 'http://exemplo.com/notify',
        pagador => {
            id_pagador => 1,
            nome       => 'Cebolácio Júnior Menezes da Silva',
            email      => 'cebolinha@exemplo.com',
            endereco_cobranca => {
                logradouro    => 'Rua do Campinho',
                numero        => 9,
                bairro        => 'Limoeiro',
                cidade        => 'São Paulo',
                estado        => 'SP',
                pais          => 'BRA',
                cep           => '11111-111',
                telefone_fixo => '(11)93333-3333',
            },
        },
    });

    if ($resposta->{status} eq 'Sucesso') {
        print $resposta->{token};
        print $resposta->{id};
    }

Don't speak portuguese?

This module provides an interface to talk to the Moip API. Moip is a popular brazilian online payments gateway. Since the target audience for this distribution is mainly brazilian developers, the documentation is provided in portuguese only. If you need any help or want to translate it to your language, please send us some pull requests! :)

DESCRIÇÃO

Este módulo funciona como interface entre sua aplicação e a API do Moip. Por enquanto apenas a versão 1 da API é suportada, e apenas pagamentos únicos.

Toda a API de pagamentos únicos é manipulada através de XMLs sem schema, mas com estrutura documentada no site do Moip. Com o método pagamento_unico deste módulo você tem acesso direto ao endpoint de pagamentos únicos do Moip e, enquanto a documentação deste módulo não está completa, pode se guiar por lá.

A conversão entre tags XML e a estrutura de dados que você passa é direta, exceto pelas tags Valor, Acrescimo e Deducao, que por questões práticas podem opcionalmente ficar no nível mais alto da estrutura, como mostrado no exemplo da Sinopse.

Outra mudança é que as tags são escritas em snake_case como é padrão em Perl, em vez de CamelCase como estão no XML do Moip. Em outras palavras, a estrutura:

    <EnderecoCobranca>
        <Cidade>São Paulo</Cidade>
        <Estado>SP</Estado>
    </EnderecoCobranca>

deve ser passada na forma:

    endereco_cobranca => {
        cidade => 'São Paulo',
        estado => 'SP',
    }

Atenção com o encoding!

O Moip espera que seus dados estejam em iso-8859-1. Este módulo fará a coisa certa se seus dados estiverem no formato interno do Perl. Se por acaso seus dados já estiverem codificados em utf-8 ou qualquer outro formato, defina o atributo ""decode_as"" para o formato desejado.

EXEMPLOS

Pagamentos únicos via checkout transparente

    my $resposta = $gateway->pagamento_unico({
        razao          => 'Pagamento para a Loja X',
        tipo_validacao => 'Transparente',
        valor          => 59.90,
        id_proprio     => 1,
        pagador => {
            id_pagador => 1,
            nome       => 'Cebolácio Júnior Menezes da Silva',
            email      => 'cebolinha@exemplo.com',
            endereco_cobranca => {
                logradouro    => 'Rua do Campinho',
                numero        => 9,
                bairro        => 'Limoeiro',
                cidade        => 'São Paulo',
                estado        => 'SP',
                pais          => 'BRA',
                cep           => '11111-111',
                telefone_fixo => '(11)93333-3333',
            },
        },
    });

decode_as

    my $gateway = Net::Moip->new(
        token     => '...',
        key       => '...',
        decode_as => 'utf-8',
    );

ou, a qualquer momento:

    $gateway->decode_as( 'utf-8' );

Por padrão, as strings da sua estrutura de dados não são decodificadas. Utilize esse atributo para decodificá-las no formato desejado antes de recodificá-las em 'iso-8859-1' e enviá-las ao Moip.

Compatibilidade e SSL/TLS

Como mencionado na descrição, o Net::Moip é compatível apenas com a v1 da API do Moip.

Em meados de 2015, o Moip anunciou uma mudança de endpoints, de www.moip.com.br para api.moip.com.br. A fim de melhorar a segurança, esse endpoint exigiria conexão com TLS 1.1 ou 1.2, usando certificado digital assinado com SHA-256 e desativando completamente os protocolos SSLv3 e TLS 1.0, considerados inseguros.

A versão 0.04 deste módulo foi lançada para acomodar essa mudança. Porém, o Moip não cumpriu com seu próprio roadmap e o endpoint novo nunca foi lançado. A versão 0.06 deste módulo restaura o uso do endpoint antigo e as permissões liberais de SSL.

VEJA TAMBÉM

Business::CPI, Business::CPI::Gateway::Moip

https://desenvolvedor.moip.com.br

LICENÇA E COPYRIGHT

Copyright 2014-2017 Breno G. de Oliveira garu at cpan.org. Todos os direitos reservados.

Este módulo é software livre; você pode redistribuí-lo e/ou modificá-lo sob os mesmos termos que o Perl. Veja a licença perlartistic para mais informações.

DISCLAIMER

PORQUE ESTE SOFTWARE É LICENCIADO LIVRE DE QUALQUER CUSTO, NÃO HÁ GARANTIA ALGUMA PARA ELE EM TODA A EXTENSÃO PERMITIDA PELA LEI. ESTE SOFTWARE É OFERECIDO "COMO ESTÁ" SEM QUALQUER GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA. TODO O RISCO RELACIONADO À QUALIDADE, DESEMPENHO E COMPORTAMENTO DESTE SOFTWARE É DE QUEM O UTILIZAR.