Atualmente existem dois tipos de integração com a API LAHAR.
A integração 'conversions' é utilizada para a inclusão / atualização de leads e a integração 'leads' é utilizada para atualização específica do estágio do lead na LAHAR.
Para efetuar a integração com a API LAHAR por meio do PHP, siga os passos abaixo:
1) O snippet ao final da página deve ser aplicado na página de resposta do formulário que você deseja integrar.
2) Siga as instruções presentes no snippet.
3) Clique aqui para ver a lista atualizada de campos disponíveis (tanto para o envio via PHP ou utilização do array de tradução $traducao).
4) Se o campo que deseja integrar é um campo personalizado, você deve utilizar o token do campo para identificar na integração. Caso não saiba como encontrar esse token clique aqui.
Exemplo:
$traducao = array( 'uNuQarKCor' => $VARIAVEL_CAMPO_PERSONALIZADO_1, 'Gi7isGip6J' => $VARIAVEL_CAMPO_PERONALIZADO_2 );
Obs.: Se o campo personalizado for do tipo caixa suspensa, o valor informado na variável de tradução deve existir como uma das opções no campo personalizado.
// Snippet - Integração de conversões LAHAR function integra_api_lahar($token_api_lahar, $endpoint, $nome_formulario, $campos) { $endpoint_full_url = 'https://app.lahar.com.br/api/'.$endpoint; if ($endpoint == 'conversions') { $method = 'POST'; } if ($endpoint == 'leads') { $method = 'PUT'; } try { if (!array_key_exists('token_api_lahar',$campos)) { $campos['token_api_lahar'] = $token_api_lahar; } else if ($campos['token_api_lahar'] == NULL) { $campos['token_api_lahar'] = $token_api_lahar; } if (!array_key_exists('nome_formulario',$campos)) { $campos['nome_formulario'] = $nome_formulario; } else if ($campos['nome_formulario'] == NULL) { $campos['nome_formulario'] = $nome_formulario; } if (!array_key_exists('url_origem',$campos)) { $campos['url_origem'] = 'integracao-javascript'; } else if ($campos['url_origem'] == NULL) { $campos['url_origem'] = 'integracao-javascript'; } $post_fields = http_build_query($campos); if ($method == 'POST') { $ch = curl_init($endpoint_full_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $curl_response = curl_exec($ch); curl_close($ch); $json = json_decode($curl_response); $retorno = $json; } else if ($method == 'PUT') { $ch = curl_init($endpoint_full_url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($campos)); $curl_response = curl_exec($ch); curl_close($ch); $json = json_decode($curl_response); $retorno = $json; } } catch (Exception $e) { $retorno = array( 'status' => 'erro', 'data' => array( 'error' => array( 'code' => 404, 'message' => 'Erro imprevisto.' ) ) ); } return $retorno; } // Se as informações constarem em outro array que não o próprio $_POST, substitua na linha abaixo $valores = $_POST; if (count($valores) > 0) { // Caso os campos de seu array não estejam nomeados de acordo com a documentação da API, você deve utilizar o array de tradução abaixo /* $traducao = array( 'email_contato' => $valores['NOME_DO_CAMPO_EMAIL'], // Texto, 100 caracteres, email, OBRIGATÓRIO 'token_api_lahar' => NULL, // Já é enviado default pela rotina, mas se vier no array de campos, será prioritário 'nome_formulario' => NULL, // 100 caracteres, obrigatório (identificador da conversão), enviado por default pela rotina, mas se vier no array de campos, será prioritário 'nome_contato' => NULL, // Texto, 100 caracteres 'nome_empresa' => NULL, // Texto, 100 caracteres 'endereco_empresa' => NULL, // Texto, 100 caracteres 'cargo' => NULL, // Texto, 100 caracteres 'site_empresa' => NULL, // Texto, 100 caracteres 'site_contato' => NULL, // Texto, 100 caracteres 'tel_fixo' => NULL, // Numérico (pode receber número formatado, ex. (14) 3222-1415) 'tel_empresa' => NULL, // Numérico (pode receber número formatado, ex. (14) 3222-1415) 'tel_celular' => NULL, // Numérico (pode receber número formatado, ex. (14) 99851-1415) 'anotacoes' => NULL, // Texto, sem limite 'twitter' => NULL, // Texto, 100 caracteres 'estado' => NULL, // Texto, 2 caracteres (uf) 'setor' => NULL, // Texto, 100 caracteres 'cep' => NULL, // Numérico (pode receber número formatado, ex. 15441-474) 'email_empresa' => NULL, // Texto, 100 caracteres, email 'facebook' => NULL,// Texto, 100 caracteres 'tags' => NULL, // Texto, 1024 caracteres, termos separados por vírgula 'facebook_empresa' => NULL, // Texto, 100 caracteres 'twitter_empresa' => NULL, // Texto, 100 caracteres 'linkedin' => NULL, // Texto, 100 caracteres 'url_origem' => NULL, // Texto, 100 caracteres 'estagio_lead' => NULL, // Número, 1 dígito, contido em (1, 2, 3) 'tipo_integracao' => NULL // Texto, nome do endpoint ); $valores = $traducao; */ // Caso precise utilizar o retorno da API, capture o retorno da função abaixo // Formato de retorno: /* $retorno = array( 'status' => 'sucesso' OU 'erro', 'data' => array( 'error' => array( // exibido apenas caso status == erro 'code' => 404, // Código numérico 'message' => 'Exemplo' // Descrição textual do erro ), 'return' => 'Exemplo' // Mensagem de retorno caso status == sucesso ) ); */ // TIPO_DE_INTEGRACAO pode ser 'conversions' ou 'leads' integra_api_lahar('TOKEN_API_LAHAR_OBTIDO_EM_CONFIGURACOES', 'TIPO_DE_INTEGRACAO', 'NOME_DO_IDENTIFICADOR_DA_PAGINA', $valores); }
Segue abaixo a relação dos retornos de erros da API:
- 101 => 'Não foi possível enviar o email de notificação, porém o lead foi incluído com sucesso no ambiente.',
- 102 => 'Não é possível obter conversões via GET. Para inserir uma nova conversão, use POST.',
- 103 => 'Não é possível obter o estágio dos leads via GET. Para atualizar o estágio do Lead, use PUT.',
- 104 => 'Não é possível atualizar atividades dos leads via GET. Para atualizar as atividades do Lead, use PUT.',105 => 'Não é possível enviar emails do BPM via GET, use POST.',
- 401 => 'Acesso não autorizado: Token não identificado.',
- 404 => 'Erro imprevisto.',
- 520 => 'O limite da cota de contatos foi excedido.',
- 540 => 'Erro na inclusão do contato no banco de dados. O ambiente LAHAR está ativo?',
- 541 => 'Erro na atualização de estágio do lead no banco de dados. O ambiente LAHAR está ativo?',
- 550 => 'Nenhum campo recebido na requisição.',
- 551 => 'Campo obrigatório recebido na requisição está duplicado.',
- 552 => 'Envio não contempla os campos obrigatórios necessários. Envie em sua requisição, ao menos, os campos: <campos obrigatórios>',
- 553 => 'Erro de validação de campo. O campo a seguir não está tratado: ' . $string_campos_obrigatórios,
- 554 => 'Contato enviado não existe. O email enviado (' <email>') existe?',
- 555 => 'Conversão via telefone não foi possível: nenhum contato identificado na base com o número informado',
- 556 => 'A conversão não foi realizada pois o lead não deu o consentimento',
- 557 => 'A conversão não foi realizada pois a categoria de nota é inválida. As categorias permitidas são: <campos obrigatórios>',
- 600 => 'Parâmetros não fornecidos',
- 601 => 'Estrutura dos parâmetros inconsistente',
- 602 => 'Parâmetro "token" não fornecido',
- 603 => 'Parâmetro "modelo" não fornecido',
- 604 => 'Parâmetro "posição" não fornecido',
- 605 => 'Parâmetro "destinatário" não fornecido',
- 606 => 'Parâmetro "destinatário" inconsistente',
- 607 => 'Parâmetro "dados" não fornecido',
- 608 => 'Um dos pares do parâmetro "dados" está inconsistente',
- 609 => 'Parâmetro "secret key" não fornecido',
- 620 => 'Acesso inválido ou e-mail não existente'