Coder Social home page Coder Social logo

moip-php's Introduction

SDK Moip-PHP - API

O Moip-PHP é uma biblioteca que implementa uma camada de abstração para geração do XML de instruções do Moip, permitindo que você integre aos serviços de API sem poluir seu código com várias linhas de XML. Um exemplo rápido:

include_once "autoload.inc.php";

$moip = new Moip();
$moip->setEnvironment('test');
$moip->setCredential(array(
    'key' => 'ABABABABABABABABABABABABABABABABABABABAB',
    'token' => '01010101010101010101010101010101'
    ));

$moip->setUniqueID(false);
$moip->setValue('100.00');
$moip->setReason('Teste do Moip-PHP');

$moip->validate('Basic');

print_r($moip->send());

O Moip-PHP utiliza o padrão Fluent Interfaces, portanto, você pode fazer o exemplo acima da seguinte forma:

include_once "autoload.inc.php";

$moip = new Moip(); 
print_r($moip->setEnvironment('test')
        ->setCredential(array(
    'key' => 'ABABABABABABABABABABABABABABABABABABABAB',
    'token' => '01010101010101010101010101010101'
    ))->setUniqueID(false)
        ->setValue('100.00')
        ->setReason('Teste do Moip-PHP')
        ->validate('Basic')
        ->send());

Métodos disponíveis

Veja baixo relação e detalhes dos métodos disponíveis que você poderá utilizar com o Moip-PHP.


Moip()

Método construtor.

Moip()

$moip = new Moip();

setEnvironment()

Método que define o ambiente em qual o requisição será processada, 'test' para definir que será em ambiente de testes Moip o Sandbox, a omissão desse método define que a requisição deverá ser processada em ambiente real, de produção Moip.

Importante: ao definir o ambiente certifique-se de que está utilizando a autenticação correspondente ao ambiente, no Moip cada ambiente possui suas própria chaves de autenticação API.

setEnvironment($environment) $environment : String ('test')

$moip->setEnvironment('test');

setCredential()

O Moip requer que você se autentique para que seja possivel processar requisições em sua API, para isso antes de realizar qualquer requisição você deverá informar ao Moip suas credenciais da API formados por um TOKEN e uma KEY.

O parâmetro $credencials é um array associativo contendo as chaves key e token (ex: array('key'=>'sua_key','token'=>'seu_token')). Se você ainda não possui estes dados, veja como obtelas tarvés em sua conta Sandbox.

setCredential($credential)

$credential : Array('key','token')

$moip->setCredential(array(
        'key' => 'SUA_KEY',
    	'token' => 'SEU_TOKEN'
    	));

validate()

O método validate() irá realizar a validação dos dados obrigatórios para o tipo de instrução que você deseja processar, você pode optar por um dos dois níveis de validação disponíveis o 'Basic' e 'Identification'.

  1. Basic : Irá realizar a validação dos dados mínimos de para uma requisição XML ao Moip.
  2. Identification : Irá validar os dados necessários para se processar um XML com identificação Moip, usados geralmente para redirecionar o cliente já no segundo step da pagina de pagamento no checkout Moip ou usar o Moip Transparente.

validate($validateType)

$validateType : String ('Basic' ou 'Identification')

$moip->validate('Identification');

setUniqueID()

O método setUniqueID() atribui valor a tag "<IdProprio>" no XML Moip.

  1. <IdProprio>: Seu identificador único de pedido, essa mesma informações será enviada para você em nossas notificações de alterações de status para que você possa identificar o pedido e tratar seu status.

setUniqueID($id)

$id : String

$moip->setUniqueID('ABCD123456789');

setValue()

O método setValue() atribui valor a tag "<Valor>" no XML Moip.

  1. <Valor>: Responsável por definir o valor que deverá ser pago.

setValue($value)

$value : Numeric

$moip->setValue('100.00');	

setAdds()

O método setAdds() atribui valor a tag "<Acrescimo>" no XML Moip.

  1. <Acrescimo>: Responsável por definir o valor adicional que deverá ser pago.

setAdds($value)

$value : Numeric

$moip->setAdds('15.00');	

setDeduct()

O método setDeduct() atribui valor a tag "<Deducao>" no XML Moip.

  1. <Deducao>: Responsável por definir o valor de desconto que será subtraído do total a ser pago.

setDeduct($value)

$value : Numeric

$moip->setDeduct('15.00');

setReason()

O método setReason() atribui valor a tag "<Razao>" no XML Moip.

  1. <Razao>: Responsável por definir o motivo do pagamento.
  2. Este campo é sempre obrigatório em um instrução de pagamento.

setReason($value)

$value : String

$moip->setReason('Pagamento de teste do Moip-PHP');

setPayer()

O método setPayer() atribui valores ao nodo "<Pagador>" no XML Moip.

  1. <Pagador>: Nodo de informações de quem está realizando o pagamento.
  2. name : <Nome> : Nome completo do pagador
  3. email : <Email> : E-mail do pagador
  4. payerId : <IdPagador> : Identificados unico do pagador
  5. identity : <Identidade> : Identidade do pagador (CPF)
  6. phone : <TelefoneCelular> : Telefone de contato secundário do pagador
  7. billingAddress : <EnderecoCobranca> : Endereço do pagador
  8. address : <Logradouro> : Logradouro do pagador, rua, av, estrada, etc.
  9. number : <Numero> : Numero residencial do pagador
  10. complement : <Complemento> : Complemento do endereço do pagador
  11. city : <Cidade> : Cidade do endereço do pagador
  12. neighborhood : <Bairro> : Bairro do endereço do pagador
  13. state : <Estado> : Estado do endereço do pagador em formato ISO-CODE (UF)
  14. country : <Pais> : Pais do pagador em formato ISO-CODE
  15. zipCode : <CEP> : CEP de endereço
  16. phone : <TelefoneFixo> : Telefone de contato do pagador

setPayer($value)

$value : Array ('name','email','payerId','identity', 'phone','billingAddress' => Array('address','number','complement','city','neighborhood','state','country','zipCode','phone'))

$moip->setPayer(array('name' => 'Nome Sobrenome',
    	'email' => '[email protected]',
    	'payerId' => 'id_usuario',
        'billingAddress' => array('address' => 'Rua do Zézinho Coração',
        		'number' => '45',
        		'complement' => 'z',
        		'city' => 'São Paulo',
        		'neighborhood' => 'Palhaço Jão',
        		'state' => 'SP',
        		'country' => 'BRA',
        		'zipCode' => '01230-000',
        		'phone' => '(11)8888-8888')));

addPaymentWay()

O método addPaymentWay() atribui valor a tag "<FormaPagamento>" do nodo "<FormasPagamento>" no XML Moip.

<FormaPagamento>: Define quais as formas de pagamento que serão exibidas ao pagador no Checkout Moip.

  1. billet : Para disponibilizar a opção "Boleto Bancário" como forma de pagamento no checkout Moip.
  2. financing : Para disponibilizar a opção "Financiamento" como forma de pagamento no checkout Moip.
  3. debit : Para disponibilizar a opção "Debito em conta" como forma de pagamento no checkout Moip.
  4. creditCard : Para disponibilizar a opção "Cartão de Crédito" como forma de pagamento no checkout Moip.
  5. debitCard : Para disponibilizar a opção "Cartão de débito" como forma de pagamento no checkout Moip.

addPaymentWay($way)

$way : String ('billet','financing','debit','creditCard','debitCard')

$moip->addPaymentWay('creditCard');
$moip->addPaymentWay('billet');
$moip->addPaymentWay('financing');
$moip->addPaymentWay('debit');
$moip->addPaymentWay('debitCard');

setBilletConf()

O método setBilletConf() atribui valores ao node "<Boleto>" no XML Moip que é responsável por definir as configurações adicionais e personalização do Boleto bancário.

  1. $expiration : Data em formato "AAAA-MM-DD" ou quantidade de dias.
  2. $workingDays : Caso "$expiration" seja quantidade de dias você pode definir com "true" para que seja contado em dias úteis, o padrão será dias corridos.
  3. $instructions : Mensagem adicionais a ser impresso no boleto, até três mensagens.
  4. $uriLogo : URL de sua logomarca, dimensões máximas 75px largura por 40px altura.

setBilletConf($expiration, $workingDays, $instructions, $uriLogo)

$expiration : Int ou Date

$workingDays : Boolean

$instructions : Array()

$uriLogo : String

$moip->setBilletConf("2011-04-06",
        	false,
        	array("Primeira linha",
            	"Segunda linha",
            	"Terceira linha"),
        	"http://seusite.com.br/logo.gif");

addMessage()

O método addMessage() atribui valor a tag "<Mensagem>" do node "<Mensagens>" no XML Moip.

  1. <Mensagens>: Node com "<Mensagens>".
  2. <Mensagem>: TAG que define mensagem adicional a ser exibida no checkout Moip.

addMessage($msg)

$msg : String

$moip->addMessage('Seu pedido contem os produtos X,Y e Z.');

setReturnURL()

O método setReturnURL() atribui valor a tag "<URLRetorno>" no XML Moip, responsável por definir a URL que o comprador será redirecionado ao finalizar um pagamento através do checkout Moip.

setReturnURL($url)

$url : String

$moip->setReturnURL('https://meusite.com.br/cliente/pedido/bemvindodevolta');

setNotificationURL()

O método setNotificationURL() atribui valor a tag "<URLNotificacao>" no XML Moip, responsável por definir a URL ao qual o Moip deverá notificar com o NASP (Notificação de Alteração de Status de Pagamento) as mudança de status.

setNotificationURL($url)

$url : String

$moip->setNotificationURL('https://meusite.com.br/nasp/');

addComission()

O método addComission() atribui valores as tags "<Comissoes>" no XML Moip, responsável por atribuir recebedores secundários a transação.

  1. $reason : Razão/Motivo ao qual o recebedor secundário receberá o valor definido.
  2. $receiver: Login Moip do usuario que receberá o valor.
  3. $value : Valor ao qual será destinado ao recebedor secundário.
  4. $percentageValue: Caso "true" define que valor será calculado em relação ao percentual sobre o valor total da transação.
  5. $ratePayer: Caso "true" define que esse recebedor secundário irá pagar a Taxa Moip com o valor recebido.

addComission($reason, $receiver, $value, $percentageValue, $ratePayer)

$reason : String

$receiver : String

$value : Number

$percentageValue: Boolean

$ratePayer : Boolean

$moip->addComission('Razão do Split',
		'recebedor_secundario',
		'5.00');
$moip->addComission('Razão do Split',
		'recebedor_secundario_2',
		'12.00',
		true,
		true);

addParcel()

O método addParcel() atribui valores as tags de "<Parcelamentos>" no XML Moip, responsável configuras as opções de parcelamento que serão disponíveis ao pagador.

  1. $min : Quantidade mínima de parcelas disponível ao pagador.
  2. $max : Quantidade máxima de parcelas disponíveis ao pagador.
  3. $rate : Valor de juros a.m por parcela.
  4. $transfer : Caso "true" define que o valor de juros padrão do Moip será pago pelo pagador.

addParcel($min, $max, $rate, $transfer)

$min : Number

$max : Number

$rate : Number

$transfer : Boolean

$moip->addParcel('2', '4');
$moip->addParcel('5', '7', '1.00');
$moip->addParcel('8', '12', null, true);

setReceiver()

O método setReceiver() atribui valor a tag "<LoginMoIP>" do node "<Recebedor>" que identifica o usuário Moip que irá receber o pagamento no Moip.

  1. $receiver : Login Moip do recebedor primario.

setReceiver($receiver)

$receiver : String

$moip->setReceiver('[email protected]');

getXML()

O método getXML() irá retornar o XML gerado com todos os atributos que você configurou, esse método pode ajudar a saber exatamente o XML que você irá enviar ao Moip.

getXML()

$moip = new Moip();
$moip->setEnvironment('test');
$moip->setCredential(array(
    'key' => 'ABABABABABABABABABABABABABABABABABABABAB',
    'token' => '01010101010101010101010101010101'
    ));
$moip->setUniqueID(false);
$moip->setValue('100.00');
$moip->setReason('Teste do Moip-PHP');
$moip->validate('Basic');

print_r($moip->getXML());

    //IRÃ? IMPRIMIR
    <?xml version="1.0" encoding="utf-8"?>
    <EnviarInstrucao>
        <InstrucaoUnica>
            <IdProprio></IdProprio>
            <Razao>Teste do Moip-PHP</Razao>
            <Valores>
                <Valor moeda="BRL">100.00</Valor>
            </Valores>
        </InstrucaoUnica>
    </EnviarInstrucao>

send()

O método send() executa o envio da instrução ao Moip, e retorna os dados de resposta obtidos do Moip.

  1. response : "true" para o caso de sucesso e "false" para quando ocorre algum erro.
  2. error : Retorna sempre uma mensagem quando "response" é "false".
  3. xml: Retorna sempre o XML de resposta Moip quando "response" é "true".

send()

$moip = new Moip();
$moip->setEnvironment('test');
$moip->setCredential(array(
    'key' => 'ABABABABABABABABABABABABABABABABABABABAB',
    'token' => '01010101010101010101010101010101'
    ));
$moip->setUniqueID(false);
$moip->setValue('100.00');
$moip->setReason('Teste do Moip-PHP');
$moip->validate('Basic');

print_r($moip->send());

    //IRÃ? IMPRIMIR
    stdClass Object
    (
        [response] => 1
        [error] =>
        [xml] => <ns1:EnviarInstrucaoUnicaResponse xmlns:ns1="http://www.moip.com.br/ws/alpha/"><Resposta><ID>201209042007216380000000989104</ID><Status>Sucesso</Status><Token>M2C031R2Q0Z9W0Y4Q2S0H0W7E2G1Z6P3E8C0C0W050T01070Y9Y8V9G1F0F4</Token></Resposta></ns1:EnviarInstrucaoUnicaResponse>
    )

getAnswer()

O método getAnswer() retorna os dados de resposta do Moip em forma de objeto.

  1. response : "true" para o caso onde o "<Status>" Moip retornou "Sucesso" e "false" para quando retornou "Falha".
  2. error : Retorna sempre uma mensagem quando "response" é "false".
  3. token: Retorna o TOKEN de pagamento gerado para quando "response" é "true".
  4. payment_url : Retorna a URL de checkout Moip preparada para redirecionar o cliente com o TOKEN de pagamento para quando "response" é "true".

getAnswer()

$moip = new Moip();
$moip->setEnvironment('test');
$moip->setCredential(array(
    'key' => 'ABABABABABABABABABABABABABABABABABABABAB',
    'token' => '01010101010101010101010101010101'
    ));

$moip->setUniqueID(false);
$moip->setValue('100.00');
$moip->setReason('Teste do Moip-PHP');
$moip->validate('Basic');
$moip->send();

print_r($moip->getAnswer());

//IRÃ? IMPRIMIR
stdClass Object
(
    [response] => 1
    [error] =>
    [token] => 92D091R2I0Y9X0E4T2K034L2H2V4H2J6L9R0S0T0K0N0L0T0Y9H879H144O8
    [payment_url] => https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token=92D091R2I0Y9X0E4T2K034L2H2V4H2J6L9R0S0T0K0N0L0T0Y9H879H144O8
)

queryParcel()

O método queryParcel() retorna um Array() contendo as informações de parcelas e seus respectivos valores cobrados por parcela e o valor total a ser pago referente a taxa de juros simulada..

  1. REQUEST

  2. $login: Login Moip do usuario.

  3. $maxParcel: Máximo de parcelar a ser consultado.

  4. $rate: Taxa de juros para simulação.

  5. $simulatedValue: Valor pago ao qual será simulado.

  6. RESPONSE

  7. response : "true" em caso de resposta Moip com "<Status>" "Sucesso" e "false" em caso de "Falha"

  8. installment: Numero de parcela correspondente aos valores.

  9. total : Total a ser pago.

  10. rate: Taxa de juros atribuido.

  11. value: Valor por parcela.

queryParcel($login, $maxParcel, $rate, $simulatedValue)

$login : String

$maxParcel : Number

$rate : Number

$simulatedValue: Number

    $moip = new Moip();
    $moip->setEnvironment('test');
    $moip->setCredential(array(
        'key' => 'ABABABABABABABABABABABABABABABABABABABAB',
        'token' => '01010101010101010101010101010101'
        ));


    print_r($moip->queryParcel('[email protected]', '4', '1.99', '100.00'));


    //IRÃ? IMPRIMIR
    Array
    (
        [response] => 1
        [installment] => Array
            (
                [1] => Array
                    (
                        [total] => 100.00
                        [rate] => 1.99
                        [value] => 100.00
                    )


                [2] => Array
                    (
                        [total] => 103.00
                        [rate] => 1.99
                        [value] => 51.50
                    )


                [3] => Array
                    (
                        [total] => 104.01
                        [rate] => 1.99
                        [value] => 34.67
                    )


                [4] => Array
                    (
                        [total] => 105.04
                        [rate] => 1.99
                        [value] => 26.26
                    )


            )


    )

moip-php's People

Contributors

aleborba avatar herberthamaral avatar jvrmaia avatar luizguilhermesj avatar netojoaobatista avatar pocesar avatar sabbaticaldev avatar saintclair avatar sostheblack avatar vagnerfiuza avatar wesleywillians avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moip-php's Issues

API v2.0

Fiquei sabendo que a API v2.0 será lançada ainda esse ano!
Tem alguma data especifa ?

Erro SSl

Meus clientes estão reclamando que quando testam o MOIP com conta desenvolvedor recebem o seguinte erro: Unknown SSL protocol error in connection to desenvolvedor.moip.com.br:443

$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_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);

maior parte do phpDoc completamente errado

o phpDoc dentro da livraria está completamente confuso. Exemplos:

    /**
     * Method setEnvironment()
     *
     * Define the environment for the API utilization.
     *
     * @param string $environment Only two values supported, 'sandbox' or 'producao'
     */

daí, dentro da função ele testa por 'test' ou [qualquer outra coisa]
outro exemplo:

    /**
     * Method setPaymentType()
     *
     * Define the payment's type between 'Unico' or 'Direto'
     *
     * @param string $tipo Can be 'Unico' or 'Direto'
     * @return void
     * @access public
     */

return void na verdade retorna Moip $this. $tipo é checado por

if ($tipo == 'Basic' || $tipo == 'Identification') {

e não 'Unico' ou 'Direto'. A documentação do labs.moip já é bem precária, com essas inconsistencias no phpDoc, dificulta ainda mais a situação. No meu phpStorm, fica cheio de erro por causa que muitas funções tem o return void e quebra o auto-complete. o code inspection do phpStorm mostra que tem pelo menos 119 inconsistências na livraria, o que é bem preocupante para um SDK

Composer

Seria muito bom colocar no packagist.org, só precisa criar o composer.json e criar a conta lá, bem tranquilo.

Uma adaptação pra instalar com composer enquanto não tem suporte é colocar isso no composer.json:

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "moiplabs/moip-php",
                "version": "master",
                "source": {
                    "type": "git",
                    "url": "https://github.com/moiplabs/moip-php.git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lib"]
                }
            }
        }
    ],
    "require": {
        "moiplabs/moip-php": "dev-master"
    },

Vencimento do boleto

Tem como definir dentro da classe a data de vencimento do boleto? Porque no painel do sandbox aparece ao lado de cada transação um espaço chamado "vencimento" mas ele está sempre vazio.

Melhor uso da Markdown

Substitua as partes que estão escritas 3a por ```.

Poderia usar, nas partes de código do READM.md, não só 3a, mas 3aphp (fechamento 3a), assim o código terá ficará com a exibição mudada para outro style, com cores, itálicos e negritos.

Set código:

$var = 'text';

Com 3aphp:

$var = 'text';

Receber os pagamentos em parcelas

Hoje esta integração feita em PHP não permite alterar o valor Recebimento do Parcelamento no XML, fica como fixo AVista, desta forma todos os pagamentos feitos em cartãod e crédito são recebidos inteiro em 30 dias, com uma taxa por conta do adiantamento.

Precisa ser alterado o método addParcel para que o mesmo possibilite receber os pagametnos de acordo com a parcela escolhida pelo cliente.

Link da documentação deste node:

https://labs.moip.com.br/parametro/Parcelamentos/

PR com uma solução #56

SSL connect error

Estou utilizando a classe na minha aplicação. Tudo funcionando perfeitamente em ambiente local e também no site. Mas quando acionei o SSL no site para ficar https:// parou de funcionar.
Agora recebe o seguinte erro:
(17) "SSL connect error"

Alguém tem alguma dica, já verifiquei os arquivos da classe diversas vezes e não consegui encontrar o motivo do erro.

Singleton e polimorfismo

Seria interessante o SDK funcionar implementar uma forma de singleton? Dessa forma, uma mesma instância do Moip poderia conter vários tokens, podendo manipular todos ao mesmo tempo, de certa forma usando polimorfismo.
Seria tipo (pseudo code):

$moip = Moip::instance();
$moip['000000000000000000000000000000000000000000000000000000000000']->removeInstruction();
$moip['111111111111111111111111111111111111111111111111111111111111']->setReason('Pedido #21');
$lastToken = $moip->setReason('adsf')->setValue(11.20)->send(); // retorna o token criado
$moip[$lastToken]->removeInstruction();

Claro, que o token não seria escrito manualmente, mas sim, pegaria o valor de alguma variável, tipo:

$moip[$token]->removeInstruction();

eu faria essa modificação facilmente, e daí criaria uns testes via phpunit

Payment institution names inconsistent

For the various payment institutions (VISA, MasterCard, American Express, Banco do Brasil), an array is used in the ./lib/MoIP.php file:

private $institution = array('moip'=>'MoIP',
    'visa'=>'Visa',
    'american_express'=>'AmericanExpress',
    'mastercard'=>'Mastercard',
    'diners'=>'Diners',
    'banco_brasil'=>'BancoDoBrasil',
    'bradesco'=>'Bradesco',
    'itau'=>'Itau',
    'real'=>'BancoReal',
    'unibanco'=>'Unibanco',
    'aura'=>'Aura',
    'hipercard'=>'Hipercard',
    'paggo'=>'Paggo', //oi paggo
    'banrisul'=>'Banrisul'
);

Note that the key => name mappings are not consisten. We have stored the names of the supported institutions in our database and would like to use:
$institutionKey = str_replace(' ', '_', $institutionName); //replace spaces with underscores
$institutionKey = strtolower($institutionKey); //make the whole string lowercase

However, this approach fails for:

  • 'Banco do Brasil'
  • 'Banco Real'
  • 'Oi Paggo'

I would like to suggest to add the following entries to the array:
'banco_do_brasil' => 'BancoBrasil'
'banco_real' => 'BancoReal'
'oi_paggo' => 'Paggo'

This way the client is consistent with general naming of the payment institutions and no changes to the MoIP engine are required, since the keys map to the same name (which is used in the request)

Cheers

MoIP::setPagamentoDireto() requires information that is not used

MoIP::setPagamentoDireto() contains a check on the incoming array:

    if ($params['forma'] == 'cartao_credito' and
        (!isset($params['cartao']) or
        !isset($params['cartao']['numero']) or
        !isset($params['cartao']['expiracao']) or
        !isset($params['cartao']['codigo_seguranca']) or
        !isset($params['cartao']['portador']) or
        !isset($params['cartao']['portador']['nome']) or
        !isset($params['cartao']['portador']['identidade_numero']) or
        !isset($params['cartao']['portador']['identidade_tipo']) or
        !isset($params['cartao']['portador']['telefone']) or
        !isset($params['cartao']['portador']['data_nascimento']) or
        !isset($params['cartao']['parcelamento']) or
        !isset($params['cartao']['parcelamento']['parcelas']) or
        !isset($params['cartao']['parcelamento']['recebimento'])
       )
      )

A part of this check is about the 'portador':
!isset($params['cartao']['portador']) or
!isset($params['cartao']['portador']['nome']) or
!isset($params['cartao']['portador']['identidade_numero']) or
!isset($params['cartao']['portador']['identidade_tipo']) or
!isset($params['cartao']['portador']['telefone']) or
!isset($params['cartao']['portador']['data_nascimento']) or

However, the following fields are not used when generating the XML:

  • 'telefone'
  • 'data_nascimento'

//See how some fields are simply not used
$portador = $cartao->addChild('Portador');
$portador->addChild('Nome',$params['cartao']['portador']['nome']);
$portador->addChild('Identidade',$params['cartao']['portador']['identidade_numero'])
->addAttribute('tipo',$params['cartao']['portador']['identidade_tipo']);

Please remove the unrequired fields from the check and update the documentation. Is there an XSD available with the exact definition of the request?

Remover o xml2array

Não faz sentido deixar esta funcionalidade já que estamos utilizando o SimpleXML para parsing de XML.

Autoload

O autoload deve ser registrado com spl_autoload_register quando disponível.

Bug in validation MoIP::addCommision()

The MoIP::addCommission() method contains the following validation:

<?php
//When either one is not set, an exception is thrown (incorrect: in this case an exception is ALWAYS thrown)
if (!isset($param['valor_fixo']) or !isset($param['valor_percentual']))
            throw new InvalidArgumentException('Você deve especificar um tipo de valor para comissionar.');

//When both are set, an exception is thrown (correct)
if (isset($param['valor_fixo']) and isset($param['valor_percentual']))
            throw new InvalidArgumentException('Você deve especificar somente um tipo de valor de comissão');
?>

The result of these validations is that none of the options are allowed.
The solution is to use an 'and' in the first validation:

<?php
//When BOTH are not set, we don't know how to proceed: throw exception
if (!isset($param['valor_fixo']) and !isset($param['valor_percentual']))
            throw new InvalidArgumentException('Você deve especificar um tipo de valor para comissionar.');
?>

Also note that the provided unit test does not cover this area.

Cheers

MoIP::addComission() uses wrong element name

The MoIP::addComission() seems to add an element named 'Comissao' to the wrapping element 'Comissoes'. However, the specs state that this element should be named 'Comissionamento'.

Remoção da dependencia cURL

Há formas de enviar o xml para o servidor sem o uso do cURL, o que pode eliminar uma das dependências da biblioteca.

Função validate() gera erro mesmo com todos os campos preenchidos

Mesmo preenchendo todos os atributos solicitados para enviar uma transação, o SDK ficava me retornando o erro "Error: The following data required were not informed: ."

Motivo: Na linha 285 do Moip.php a variável $varNotSeted está setada com '', porém a validação que ocorre na linha 314 verifica se a variável não é "false".

Alterando a linha 285 para $varNotSeted = false; o problema é resolvido.

Obrigado.

Laravel Framework

Tem algum repositorio ou está em desenvolvimento o moip adptado/compativel com o Framework Laravel4 ou 5?

Ao tentar pagar direto com o boleto, obtivemos erro até descobrir que setPagamentoDireto() existe e é o único método em pt-br da lib toda. Bizarro.

Segue abaixo uma implementacao para boletos, funcionando:
Ao tentar pagar direto com o boleto, obtivemos erro até descobrir que setPagamentoDireto() existe e é o único método em pt-br da lib toda. Bizarro.

Resumidamente, voce define como ('Direto'), mas é como se fosse inutil, voce precisa setar setPagamentoDireto() para que funcione.

        $payer = array();
        $payer['nome'] = 'Djalma Araujo';
        $payer['email'] = '[email protected]';
        $payer['celular'] = '(81)55558899';
        $payer['apelido'] = 'djalmaaraujo'; 
        $payer['identidade'] = '111.111.111-11';
        $payer['endereco']['logradouro'] = 'Rua lalala';
        $payer['endereco']['numero'] = '555';
        $payer['endereco']['complemento'] = 'Apt 503'; 
        $payer['endereco']['bairro'] = 'Bairro';
        $payer['endereco']['cidade'] = 'Cidade';
        $payer['endereco']['estado'] = 'PE';
        $payer['endereco']['pais'] = 'BRA';
        $payer['endereco']['cep'] = '55448-888';
        $payer['endereco']['telefone'] = '(81)32222222';


        $this->gateway = new MoIP();
        $this->gateway->setCredential(array(
            'key'=>'123',
            'token'=>'123')
        )
        ->setReason('Testes')
        ->setUniqueID(rand(1,rand(5, 9999)))
        ->setValue(123.45)
        ->setPayer($payer)
        ->setEnvironment('producao')
        ->setPaymentType('Direto')
        ->setPagamentoDireto(array(
            'forma' => 'boleto'
        ))
        ->addPaymentWay('boleto', array(
            'dias_expiracao'=> array(
                'dias' => 7,
                'tipo' => 'corridos'
                )
            )
        )
        ->validate()
        ->send();

        $response = $this->gateway->getAnswer();
        if ($response->success) {
            header('Location: ' . $this->redirectGateway . $response->token);
            exit;
        } else {
            die('ERROR');
        }

Class 'MoipClient'

Estou tentando implementar o moip com codeigniter 2, porém está sendo retornado o seguinte erro: Class 'MoipClient'

Expor base_url de forma mágica (__get)

Quando trabalhando por 'fora' da livraria, fica impossível acessar o base_url a não ser que se extenda a classe Moip. Então, utilizando o método mágico de __get, pode-se acessar a url de base (que depende do ambiente) sem um __set, tornando-a apenas leitura. Assim fica mais fácil incluir, por exemplo, o javascript do checkout transparente, pois ele depende da url de ambiente também.
E ainda, todas propriedades estão setadas como private, o que torna impossível extender a classe Moip plenamente

Nome incorreto da classe

Nome incorreto ao instanciar a classe MoIPClient.
Moip.php nos métodos send e queryParcel

$client = new MoipClient();

Correto

$client = new MoIPClient();

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.