PHP Application Example

This shows one example of API application.

To use it, type in the command row (after you switched to the script folder):

# php script.php URL USERNAME PUBLIC_KEY PRIVATE_KEY OWNER_ID COMMAND

Where:

  • URL = URL of the platform that you wish to connect to (for example: http://dom.altosmail.net)
  • PRIVATE_KEY = The private key
  • PUBLIC_KEY = The public key
  • OWNER_ID = The ID of the Lead owner. This is a platform user. You can see the list of the users by clicking Settings > Users; here you can get the ID for each user.
  • COMMAND = The examples command that should be followed, such as:
    • leads: Show 1 Lead, starting from the 100th lead
    • fields: Show the list of fields
    • leads_save: Save a generic lead

Use:

# php script.php –help

To see an application message.

<?php
error_reporting(E_ERROR);

$url            = $argv[1] . '/z/dmkapi/';    //Endpoint Webservice: $argv[1] è il dominio della tua piattaforma (ad es: http://dom.altosmail.net), quindi si avrà: 'http://dom.altosmail.net/z/dmkapi'
$username       = $argv[2];              //Username
$public_key     = $argv[3];                //Chiave pubblica: Può anche essere utilizzata per accessi diretti
$private_key    = $argv[4];                //Chiave privata: Nessun altro deve conoscerla (solo client e server)
$owner_id    = $argv[5];            //Rappresenta l'ID dell'Owner, ovvero a chi saranno assegnati i nuovi Lead creati. Devi inserire l'ID di un'utente presente nella piattaforma. Puoi visualizzare la lista degli utenti cliccando da AltosMail su Rotellina in alto a destra > Utenti e quindi visualizzare la lista degli utenti. La colonna ID mostra l'ID per ogni utente.
$command        = $argv[6];            //Tipologia di comando eseguito: Lista, creazione, etc


/* LETTURA DELLE LISTE DEI LEAD */
if($command == 'leads'){
    $response = sendRequest($url, 'leads/leads', $username, $private_key, $public_key, array(
        'limit'     => 1, //Legge 1 solo lead
        'offset'    => 100, //Parte da 100 leads
    ));
    /* Stampo la lista dei lead */
    print_r($response);
}else if($command == 'fields'){
    /* LETTURA DELLA LISTA DEI CAMPI DEI LEAD */
    $response = sendRequest($url, 'leads/fields/fields', $username, $private_key, $public_key, 
        array()
    );
    //Stampa la lista dei campi
    print_r($response);
}else if($command == 'leads_save'){
    /* CREAZIONE DI UN NUOVO LEAD */
    $response = sendRequest($url, 'leads/save', $username, $private_key, $public_key, 
        array(
            'lead' => array(
                'owner_id'     => $owner_id,
                'firstname'    => 'FIRSTNAME',
                'lastname'     => 'LASTNAME',
                'email'        => 'firstname.lastname@dom.it',
        /* Ricordati di inserire altri eventuali campi obbligatori, la lista dei campi sono visualizzabili cliccando su Gruppi & Campi nella piattaforma */
                )
        )
    );
    //Stampa della risposta
    print_r($response);
}

if($argv[1] == "--help"){
    echo "URL USERNAME PUBLIC_KEY PRIVATE_KEY COMMAND\n";
    echo "COMMANDS ARE: \n";
    echo "\tleads: List of leads\n";
    echo "\tfields: List of fields\n";
    echo "\tleads_save: Save/Update a lead\n";
}

/*
 * Invia una richiesta
 */
function sendRequest($url, $action, $username, $private_key, $public_key, $other_data = array()){
    
    $realToken = getToken($url, $username, $private_key, $public_key);

    $request = array(
        'token'         => $realToken,
    );
    
    foreach($other_data as $key => $value){
        $request[$key] = $value;
    }
    
    $reponse = postCryptedRequest($url . $action, $username, $public_key, $private_key, $request);

    return json_decode($reponse['decrypted'], true);
}

/* 
 * Richiede la generazione di un codice Token
 */
function getToken($url, $username, $private_key, $public_key){
    $realToken = postCryptedRequest($url . "get-token", $username, $public_key, $private_key);
    return $realToken['decrypted'];
}

/*
 * Effettua un invio di dati utilizzando POST, ma cripta i dati utilizzando
 * AES-256, con chiave privata
 */
function postCryptedRequest($url, $username, $public_key, $private_key, $fields = array()){

    $jsonData = json_encode($fields);
    $data = openssl_encrypt($jsonData, "aes-256-cbc", $private_key, 0, "0000000000000000");

    $dataArray = array();
    $dataArray[] = "username=$username";
    $dataArray[] = "key=$public_key";
    $dataArray[] = "data=" . base64_encode($data);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, count($dataArray));
    curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $dataArray));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $result = curl_exec($ch);

    curl_close($ch);

    return array(
        'raw'       => $result,
        'decrypted'   => openssl_decrypt($result, "aes-256-cbc", $private_key, 0, "0000000000000000")
    );
    
}

?>