API doc

JPAnalytics

Questo documento definisce alcune regole per il collegamento degli account JpAnalytics e del (NOME_PARTNER). Questa integrazione è necessaria per controllare la validità degli account che si registrano usufruendo delle condizioni agevolate definite dalla nostra collaborazione, evitando così che utenti non desiderati possano avere accesso alle medesime condizioni.

Il flusso

Il flusso informativo è piuttosto semplice:

Link API

Con il Link API di JpAnalytic è possibile facilitare il processo di registrazione di un utente alla piattaforma JpAnalytic prepopolando alcuni campi necessari per la registrazione. Tutti i campi indicati sono opzionali.

Campo Descrizione Type Default
first_name Nome del cliente string nil
last_name Cognome del cliente string nil
email Email del cliente email nil
kind Tipologia cliente string, può essere 'company' o 'user', a seconda della tipologia del cliente 'company'
company_name Nome dell'azienda string nil
fiscal_code Codice fiscale string, 16 caratteri alfanumerici nil
vat_code Partita IVA string, 11 caratteri nil
billing_address Indirizzo di fatturazione string nil
billing_city Comune string nil
billing_zip CAP string nil
billing_province Provincia string, 2 caratteri per la sigla della provincia, es: MI nil

I parametri sono passati con richiesta GET, all'indirizzo http://NOME_PARTNER.jpanalytics.it/users/sign_up

Esempio

  <a href="http://NOME_PARTNER.jpanalytics.it/users/sign_up?first_name=Andrea&last_name=Fognini">Accedi a JpAnalytics</a>

Callback API

Validazione

Il controllo avviene al momento della registrazione, e utilizza l'indirizzo email come chiave primaria. Al momento della registrazione JpAnalytics manderà una richiesta al vostro server con i seguenti dati:

  {
    email: "info@jpanalytics.it", # Indirizzo email dell'utente che sta effettuando la registrazione
    app_id: APP_ID_PARTNER,
    app_secret: APP_SECRET_PARTNER,
  }

La richiesta POST è una richiesta non autenticata, i dati sono passati in formato json. A fronte di questo callback ai vostri server è possibile sia validare l'account che effettuare altre operazioni (contatori, statistiche, etc..).

L'account viene considerato valido solo se la chiamata al vostro callback_url ottiene un response_code 200. In tutti gli altri casi l'account viene considerato non valido

Esempi

PHP

  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);

  if ($_POST['app_id'] === YOUR_APP_ID && $_POST['app_secret'] === YOUR_APP_SECRET) {
    # Qui potete inserire altri controlli, per semplicità al momento controlliamo solo l'esistenza di un account.
    $stmt = $conn->prepare("SELECT email FROM users WHERE email = ?");
    $stmt->bind_param("s", $_POST['email']);

    $stmt->execute();
    $stmt->bind_result($email);
    $stmt->fetch();

    if ($email) {
      # Oltre al controllo di validità dell'account potreste volere aggiungere dei contatori o effettuare altre operazioni.
      http_response_code(200);
      die();
    } else {
      # Una persona sta cercando di accedere all'account JpAnalytics ma non è vostro cliente
      http_response_code(403);
      die();
    }
  } else {
    # Questa richiesta non è certificata, non arriva da JpAnalytics
    http_response_code(500);
    die();
  }

Ruby

  def callback_url
    if params[:app_id] == YOUR_APP_ID && params[:app_secret] == YOUR_APP_SECRET
      # Qui potete inserire altri controlli, per semplicità al momento controlliamo solo l'esistenza di un account.
      user = User.find_by_email(params[:email])
      if user
        # Oltre al controllo di validità dell'account potreste volere aggiungere dei contatori o effettuare altre operazioni.
        user.update_attributes({ has_jpanalytics: true })
        render nothing: true, status: 200
      else
        # Una persona sta cercando di accedere all'account JpAnalytics ma non è vostro cliente
        render nothing: true, status: 403
      end
    else
      # Questa richiesta non è certificata, non arriva da JpAnalytics
      render nothing: true, status: 500
    end
  end