Você está na página 1de 3

Documento Verso Data

Tutorial PHP API 1.0 24/07/2009

Integrao API MoIP em PHP


Como integrar sua aplicao PHP API MoIP
O processo de integrao realizado em trs passos. Veja na imagem abaixo:

1) Envio de instruo XML com as informaes de pagamento:


<?php $token = "SEU_TOKEN"; $key = "SUA_KEY"; $base = $token . ":" . $key; $auth = base64_encode($base); $header[] = "Authorization: Basic " . $auth; $param = "<EnviarInstrucao><InstrucaoUnica><Razao>COLOQUE A RAZAO DO PAGAMENTO</Razao><IdProprio>12345</IdProprio></InstrucaoUnica></EnviarInstrucao>";

1 de 3

Documento Verso Data

Tutorial PHP API 1.0 24/07/2009

$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_USERPWD, $user . ":" . $passwd); 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); echo $ret . ' - ' . $err; ?>

2) Redirecionamento do cliente para o site do MoIP para realizar o pagamento:


Com o token retornado acima, voc deve redirecionar o pagador para o site do MoIP (customizado com o seu layout) para que ele escolha a forma de pagamento e o realize.
https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token=TOKEN_RETORNADO

3) Tratar as notificaes de alterao de status de pagamento enviadas pelo MoIP ao seu sistema:
Toda vez que o pagador escolhe uma forma de pagamento ou o status do pagamento alterado, o MoIP avisa o seu sistema (pelo NASP Notificao de Alterao de Status de Pagamento) sobre essas alteraes. Esse aviso enviado por meio de um POST do sistema do MoIP para o seu sistema com os parmetros abaixo: Aps o processamento de qualquer transao, o MoIP ir enviar um POST para esse URL com os parmetros abaixo:
Parmetro enviado id_transacao Descrio Tipo Tamanho Maxmo 32 Exemplo abcd1234

Identificador da transao informado por voc para Alfanumrico controle em seu site (IdProprio) Valor total do pagamento, sem Numrico valor vrgulas, com casas decimais (inteiro) (veja exemplo para R$21,90) Codigo informando o status Numrico status_pagamento atual da transao (veja Anexo inteiro A) Cdigo da transao no ambiente MoIP. Valor nico cod_moip Alfanumrico gerado pelo MoIP para cada pagamento. Codigo informando a forma de Numrico forma_pagamento pagamento escolhida pelo inteiro pagador (veja Anexo B) tipo_pagamento Tipo de pagamento utilizado, Alfanumrico

2190

32

Daw4es-1wq2.341234

2 32

1 CartaoDeCredito

2 de 3

Documento Verso Data

Tutorial PHP API 1.0 24/07/2009

email_consumidor

descritivo, em formato de texto (veja Anexo C) E-mail informado pelo pagador, Alfanumrico no MoIP

45

pagador@email.com.br

print(**************** INICIO DO NASP ************************** "); // Pega os valores retornados pelo MoIP $id_transacao = $_POST['id_transacao']; $valor = $_POST['valor']; $status_pagamento = $_POST['status_pagamento']; $cod_moip = $_POST['cod_moip']; $forma_pagamento = $_POST['forma_pagamento']; $tipo_pagamento = $_POST['tipo_pagamento']; $email_consumidor = $_POST['email_consumidor']; // TODO: inicio // Voce deve tratar cada parametro retornado de acordo com o seu sistema // pegue o id_transacao e relacione com o IdProprio enviado pelo seu sistema no XML do passo 1 // Se o seu processamento ocorrer corretamente, responda com o codigo HTTP 2XX (200, por exemplo). Se ocorrer algum erro, retorne outro codigo (3XX, 4XX ou 5XX). Caso seu sistema retorne erro, o MoIP continuara e enviar as notificaes durante uma semana, de 30 em 30 minutos ate que o seu sistema responda com o codigo 2XX. // TODO: fim if($ok){ // enviar resposta para MOIP header("HTTP/1.0 200 OK"); }else{ // se tiver algum erro de processamento nao esperado // loga o erro em seu sistema e // o MoIP continua enviando os posts para o seu sistema header("HTTP/1.0 404 Not Found"); } } print(************* FIM DO NASP **************************);

3 de 3