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'