Coder Social home page Coder Social logo

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

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';

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

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.

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

API v2.0

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

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

Remover o xml2array

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

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?

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();

Class 'MoipClient'

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

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::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'.

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');
        }

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

Autoload

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

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"
    },

Laravel Framework

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

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.

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.

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

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.

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.