Download the PHP package carloswgama/php-moip without Composer
On this page you can find all versions of the php package carloswgama/php-moip. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download carloswgama/php-moip
More information about carloswgama/php-moip
Files in carloswgama/php-moip
Package php-moip
Short Description Biblioteca para realizar compras no MoIP com e sem checkout transparente
License MIT
Informations about the package php-moip
PHP - MoIP
Classe para realizar pagamentos normais no ambiente MoIP ou com checkout transparente
Está biblioteca é baseada na Versão 1 do Moip (Uma vez que a Versão 2 ainda está em Beta e com alguns bugs) e usa por trás a SDK V1 do Moip
Ambientes
Primeiro é necessário saber que o Moip possui dois ambientes: Produção e Sandbox (Ambiente de teste) e duas versões:
Moip V2 - Atual e ainda em Beta Moip V1 - Antigo, funcional e o mais usado ainda nos projetos.
Os links para acessos são:
Moip V2 - Produção Moip V2 - Sandbox
Moip V1 - Produção Moip V1 - Sandbox
O ambiente V2 ainda estão em desenvolvimento, por isso alguns recursos podem apresentar falhas ou não estar disponíveis ainda, mas todos recursos que formos usar no V2, também está disponível e 100% funcional no V1.
Configurando
Buscando o Token e a Key
O primeiro passo é logar na conta do MoiP.
MoIP V2
Após logar, ir na opção Minha Conta >> Configurações >> Chaves de Acesso e buscar o Token e a Chave (key):
MoIP V1
Após logar, ir na opção Ferramentas >> API MoIP >> Chaves de Acesso e buscar o Token e a Chave (key):
Configurando URL de notificação
a URL de notifcação é o link para onde será enviado todas as notificações de atualização do status da compra (Ex: Foi iniciada, cancelada, aprovada...)
MoIP V2
Ir na opção Minha Conta >> Configurações >> Notificações e inserir o link para onde as notificações serão enviadas
MoIP V1
Ir na opção Meus Dados >> Preferências >> Notificação de Transações e inserir o link para onde as notificações serão enviadas
Instalando a biblioteca
Para usar a biblioteca em seu projeto, baixe esse repositório e importe as classes MoipPagamento.php e MoipNASP.php ou importe no seu projeto através do Composer (Mais indicado):
Caso seu projeto já possua um arquivo composer.json, você pode também adiciona-lo nas dependências require e rodar um composer install:
Atualização 1.2.0
- Novo recurso do MoIP Marketplace
Permitir na mesma venda adicionar produtos de diferentes vendedores. Caso o produto náo seja do vendedor principal, basta informar no terceiro parametro o login do vendedor que receberá pela venda daquele produto
- addProduto($produto, $valor, $login = '')
Permitir adicionar uma porcentagem que será cobrada dos outros vendedores e dado ao vendedor principal
- setComissaoVendedorPrincipal($porcentagem)
Usando a biblioteca
Checkout no Ambiente MoIP
Criando uma nova compra simples
Criando uma nova compra informando Produtos
A biblioteca para realizar a compra através do ambiente do MoIP possuio os seguintes métodos:
Método | Parametro | Descrição | Retorna | Obrigatório |
---|---|---|---|---|
setID($id) | $id (string) | Seta um ID único para identificar a compra. Esse ID normalmente é usado para identificar a compra no seu sistema | Própria Classe MoipPagamento | NÃO |
setPreco($preco) | $preco (float) | Informa o preço da compra | PrópriaClasse MoipPagamento | NÃO |
setDescricao($desc) | $desc (string) | Informa ao vendedor a descrição do que está sendo comprado | Própria Classe MoipPagamento | SIM (Não caso use o método addProduto()) |
pagar() | --- | Processa o pedido e gera o link para acessar o ambiente de compra do MoIP | URL para o checkout no ambiente MoIP | SIM para compra no ambiente MoIP |
setCredenciais($token, $key) | $token (string) $key (string) | Seta as credênciais do MoIP na classe, caso elas não tenham sido passadas no construtor. | PrópriaClasse MoipPagamento | NÃO |
setSandbox($sandbox) | $sandbox (boolean) | Informa se é para usar o ambiente sandbox (true) ou de produção (false), caso não informado no construtor. | PrópriaClasse MoipPagamento | NÃO |
setVendedor($login) | $login(string login ou email do vendedor principal) | Por padrão o vendedor principal é a conta vinculada a Token usado na API. Ao setar um vendedor, este vendedor é que receberá o dinheiro da venda e não mais o dono do token na API | Própria Classe MoipPagamento | NÃO |
addComissao($login, $valor, $forma = false, $taxaMoip = false) | $login (string com login ou senha do vendedor secundário) $valor (Valor que o vendedor irá ganhar de comissão) $forma (FALSE - Se o valor da comissão é um valor fixo ou TRUE caso o valor da comissão seja em porcentagem) $taxaMoip (TRUE se o vendedor secundário também vai pagar a taxa do MoIP ou FALSE caso ele não pague a taxa do MoIP) | Este método adiciona vendedores secundários que irão dividir o recebimento do valor da venda com o vendedor principal | Própria Classe MoipPagamento | NÃO |
addProduto($produto, $valor, $login = '') | $produto (string) $valor (float) $login (string opcional, com o login de outro vendedor caso o produto pertença a outro vendedor, que irá receber pelo produto) | Este método adiciona ao total da compra o preço de um produto. Caso o produto pertença a outro vendedor será creditado na conta informada. | Própria Classe MoipPagamento | NÃO |
setComissaoVendedorPrincipal($porcentagem) | $porcentagem (float) | Caso informado, será reduzido do valor que seria recebido pelos vendedores secundários uma porcentagem que será dada ao vendedor principal | Própria Classe MoipPagamento | NÃO |
addFormaPagamento($forma) | $forma:MoipPagamento::CHECKOUT_BOLETO || MoipPagamento::CHECKOUT_CARTAO || MoipPagamento::CHECKOUT_DEBITO_BANCARIO | Caso não informado, libera todas as formas de pagamento, caso informado libera apenas os modos informados | PrópriaClasse MoipPagamento | Não |
configurarBoleto($data, $logo, $info) | $data (YYYY-MM-DD) $logo (url para a logo ou null para não usar logo no boleto) $info (array, onde cada valor do array é uma linha de informações no boleto) | Adiciona informações extra ao boleto como data de expirar, uma logo própria ou informações extras | PrópriaClasse MoipPagamento | NÃO |
getErro() | --- | Retorna mensagem de erro, caso não tenha sido possivel realizar a compra | string | NÃO |
Criando uma nova compra avançada
Como vimos na tabela acima, podemos ainda definir quais tipos de formas de pagamentos estarão liberadas assim como adicionar informações ao boleto:
Checkout com Marketplace
Também é possível setar os produtos da venda, onde poderá ter produtos de vendedores diferentes. Os produtos que forem de outros vendedores, deverá ser informado o login da conta MoIP do vendedor que irá receber por aquele produto.
Também é possível informar uma comissão em porcentgaem que irá reduzir dos valores de recebimento dos outros vendedores e dado ao vendedor principal.
Checkout transparente
Pagando com Boleto (Checkout Transparente)
O comando é bastante semelhante ao Checktou no ambiente MoIP, porém aqui iremos gerar alguns scripts (javascripts) para realizar o processo todo no ambiente do cliente:
O método getCheckoutTransparente(), irá retornar um array contendo todos os scripts necessários para rodar o checkout transparente. Na sua forma mais básica basta chamar o valor 'default' do array, que já contem todos os scripts prontos.
Para chamar o boleto basta chamar a função javascript: MoipPagarBoleto() que uma nova aba irá abrir com o boleto
No ambiente Sandbox, ao invés de abrir o banco ou o boleto sempre irá abrir o ambiente de teste do MoIP
Além dos métodos citados na tabela anterior, para usar o checkout transparente haverão os seguintes metodos a mais disponíveis:
Método | Parametros | Descrição | Retorna | Obrigatório |
---|---|---|---|---|
getCheckoutTransparente($extraSucesso, $extraFalha) | $extraSucesso (string) - código javascript extra adicionado a função caso o pedido seja executado com sucesso | Método responsável por gerar todos os javascripts usados para realizar o checkout transparente | um array contendo: default - todos os scripts (abaixo) necessários;scriptMoip - Script que inicia o chamado ao Moip; scriptSucesso - Função javascript chamada quando a requisição é executada com sucesso; scriptFalha - Função javascript que é chamada quando o pedido da compra falha; scriptPagamentos - retorna os javascripts que inicial o pedido da compra | SIM para compra com checkout transparente |
getInstituicoesDebito() | ---- | Retorna a lista de instituições permitidas para debito bancário | Array com instituições | NÃO |
Entre os javascripts gerados pelo método temos:
- MoipFuncaoSucesso(data) -> Função chamada caso a requisição seja realizada com sucesso. Na variável data é enviado alguns informações pelo MoIP como Status da compra caso pago com o cartão
- MoipFuncaoFalha(data) -> Função chamada caso houve alguma falha ao realizar o pedido como cartão inválido. Na variável data é enviado algumas informações pelo MoIP como Mensagem e código da falha
- MoipPagarBoleto() -> Inicia o checkout transparente para gerar o boleto
- MoipPagarDebitoBancario() -> Inicia o checkout transparente para compra por debito bancário
- MoipPagarCartao() -> Inicia o checkout transparente para compra com cartão de crédito
Pagando com Debito Bancário (Checkout Transparente)
Para realizar o pagamento por Debito Bancário com checkout transparente, é preciso informar qual será o banco que irá ser realizado o deposito. Os bancos disponíveis, podem ser pegos através do método getInstituicoesDebito(). O bancos disponíveis são:
- Banco do Brasil (BancoDoBrasil)
- Bradesco (Bradesco)
- Itau (Itau)
- Barinsul (Barinsul)
Para selecionar o banco, o campo input ou select deverá conter o id "moip_debito_instituicao" que será usado pela função javascript MoipPagarDebitoBancario():
Pagando com Cartão (Checkout Transparente)
Para realizar o pagamento por cartão de crédito com checkout transparente o processo é semelhante aos demais, porém para iniciar o pagamento usamos a função javascript MoipPagarCartao()
Essa função irá buscar por 8 campos que deverão estar com os seguintes id's:
- moip_cartao_titular_nome => Nome do títular do cartão igual a como está no cartão
- moip_cartao_titular_nascimento => Data de nascimento do títular do Cartão (DD/MM/YYYY)
- moip_cartao_titular_telefone => Telefone do Títular do Cartão. Ex: (99)99999-9999
- moip_cartao_titular_cpf => CPF do títular do cartão (999.999.999-99)
- moip_cartao_parcelas => Em quantas parcelas será a compra (1-12 acima de 3 há juros)
- moip_cartao_numero => Número do cartão
- moip_cartao_validade => Período que o cartão expira (MM/YYYY). Ex: 07/2018
- moip_cartao_codigo_seguranca => Código de segurança CVV que vem atrás do cartão
Exemplo:
Mais de uma opção de Pagamento com checkout transparente
Para dar ao cliente mais de uma opção de compra usando o checkout transparente, basta seleciona a forma de pagamento (Caso nenhuma seja informada, todas as 3 estarão disponíveis) e chamar a função javascript relacionada ao tipo de pagamento:
- MoipPagarBoleto() -> Boleto
- MoipPagarDebitoBancario() -> Debito Bancário
- MoipPagarCartao() -> Cartão de Crédito
OBS: Lembrar de ver quais campos os pagamentos por Debito Bancário e Cartão de Crédito necessitam
Personalizando scripts de pagamentos
As funções usadas pelo MoIP que são chamadas quando houve uma falha ou sucesso na requisição da compra, podem facilmente receber scripts extras simplesmente passando os scripts como parametros no método getCheckoutTransparente():
Caso deseje alterar os métodos MoipPagarBoletoPersonalizado(), MoipPagarDebitoBancario() e MoipPagarCartao(), ao invés de chamar o script default retornado através do método getCheckoutTransparente(), usar os scripts separadamente:
- ["scriptMoip"] -> Obrigatório, é ele quem inica a comunicação com o MoIP
- ["scriptSucesso"] -> Gera a função MoipFuncaoSucesso(data), caso não deseje criar sua própria, basta chamar esse campo
- ["scriptFalha"] -> Gera a função MoipFuncaoFalha(data), caso não deseje criar sua própria, basta chamar esse campo
- ["scriptPagamentos"]["boleto"] -> Gera a função MoipPagarBoleto(), caso não deseje criar sua própria, basta chamar esse campo
- ["scriptPagamentos"]["debito_bancario"] -> Gera a função MoipPagarDebitoBancario(), caso não deseje criar sua própria, basta chamar esse campo
- ["scriptPagamentos"]["cartao"] -> Gera a função MoipPagarCartao(), caso não deseje criar sua própria, basta chamar esse campo
Exemplo:
Para mais informações de como criar seu próprio javascript, pode olhar a documentação do MoIP de Pagamentos via JavaScripts Javascript de Pagamento MOIP
NASP
O NASP (Notificação de Alteração de Status de Pagamento) é a notificação enviada para o link configurado na sua conta Moip. A requisição é enviada POST.
A classe MoipNASP ajuda a traduzir alguns códigos enviados pelo MoIP como:
Exemplo:
MoipNASP::getClassificacao($_POST['classificacao'])
Retorna uma descrição do que o código 'classificacao' enviado significa. Normalmente é enviado em compras cancelas.
MoipNASP::getStatusPagamento($_POST['status_pagamento'])
Retorna uma descrição do que o código 'status_pagamento' enviado significa. As opções podem ser:
- Autorizado
- Iniciado
- Boleto Impresso
- Concluído
- Cancelado
- Em Análise
- Estornado
- Reembolsado
MoipNASP::getFormaPagamento($_POST['forma_pagamento'])
Retorna uma descrição do que o código 'forma_pagamento' enviado significa, podendo ser o saldo da carteira moip (checkout no ambient moip), cartões, boleto ou debitos.
MoipNASP::formateNASP($_POST)
Formata todo o post enviado documentando os códigos enviados como nos método acima.
Links extras:
Documentação Oficial do Moip V1 Conta do Moip V1 Conta Sandbox do Moip V1
Autor: Carlos W. Gama ([email protected]) Licença: MIT Livre para usar, modificar como desejar e destribuir como quiser