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());
Veja baixo relação e detalhes dos métodos disponíveis que você poderá utilizar com o Moip-PHP.
Método construtor.
Moip()
$moip = new Moip();
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');
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'
));
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'.
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');
O método setUniqueID() atribui valor a tag "<IdProprio>" no XML Moip.
setUniqueID($id)
$id : String
$moip->setUniqueID('ABCD123456789');
O método setValue() atribui valor a tag "<Valor>" no XML Moip.
setValue($value)
$value : Numeric
$moip->setValue('100.00');
O método setAdds() atribui valor a tag "<Acrescimo>" no XML Moip.
setAdds($value)
$value : Numeric
$moip->setAdds('15.00');
O método setDeduct() atribui valor a tag "<Deducao>" no XML Moip.
setDeduct($value)
$value : Numeric
$moip->setDeduct('15.00');
O método setReason() atribui valor a tag "<Razao>" no XML Moip.
setReason($value)
$value : String
$moip->setReason('Pagamento de teste do Moip-PHP');
O método setPayer() atribui valores ao nodo "<Pagador>" no XML Moip.
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@cliente.com.br',
'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')));
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.
addPaymentWay($way)
$way : String ('billet','financing','debit','creditCard','debitCard')
$moip->addPaymentWay('creditCard');
$moip->addPaymentWay('billet');
$moip->addPaymentWay('financing');
$moip->addPaymentWay('debit');
$moip->addPaymentWay('debitCard');
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.
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");
O método addMessage() atribui valor a tag "<Mensagem>" do node "<Mensagens>" no XML Moip.
addMessage($msg)
$msg : String
$moip->addMessage('Seu pedido contem os produtos X,Y e Z.');
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');
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/');
O método addComission() atribui valores as tags "<Comissoes>" no XML Moip, responsável por atribuir recebedores secundários a transação.
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);
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.
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);
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.
setReceiver($receiver)
$receiver : String
$moip->setReceiver('integracao@labs.moip.com.br');
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>
O método send() executa o envio da instrução ao Moip, e retorna os dados de resposta obtidos do Moip.
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>
)
O método getAnswer() retorna os dados de resposta do Moip em forma de objeto.
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
)
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..
REQUEST
$login: Login Moip do usuario.
$maxParcel: Máximo de parcelar a ser consultado.
$rate: Taxa de juros para simulação.
$simulatedValue: Valor pago ao qual será simulado.
RESPONSE
response : "true" em caso de resposta Moip com "<Status>" "Sucesso" e "false" em caso de "Falha"
installment: Numero de parcela correspondente aos valores.
total : Total a ser pago.
rate: Taxa de juros atribuido.
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('integracao@labs.moip.com.br', '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
)
)
)