Esempio di utilizzo in PHP

Questo esempio visualizza un’esempio di utilizzo delle API.

Per utilizzarlo digitare da riga di comando (dopo essersi spostati sulla cartella dello script):

# php script.php URL USERNAME PUBLIC_KEY PRIVATE_KEY COMMAND

Dove:

  • URL = Url della piattaforma a cui collegarsi
  • PRIVATE_KEY = La chiave privata
  • PUBLIC_KEY = La chiave pubblica
  • COMMAND = I comandi di esempio da eseguire, che possono essere:
    • leads: Visualizza 1 lead, a partire dal 100° lead
    • fields: Visualizza la lista dei campi
    • leads_save: Salva un generico lead

Utilizzare:

# php script.php –help

Per visualizzare un messaggio di utilizzo.

<?php
error_reporting(E_ERROR);

$url            = $argv[1] . '/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)
$command        = $argv[5];

/* 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'     => 1,
                'firstname'    => 'Enrico',
                'lastname'     => 'Venezia',
                'email'        => 'enrico.venezia@sefin.it',
                )
        )
    );
    //Stampa della risposta
    print_r($response);
}

if($argv[1] == "--help"){
    echo "URL USERNAME PUBLIC_KEY PRIVATE_KEY COMMANDn";
    echo "COMMANDS ARE: n";
    echo "tleads: List of leadsn";
    echo "tfields: List of fieldsn";
    echo "tleads_save: Save/Update a leadn";
}

/*
 * 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")
    );
	
}

?>