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:
- l'utente effettua l'accesso alla vostra area riservata, con email e password
- clicca sul link di JPAnalytics e compila il form per attivare il suo account
-
JPAnalytics invia una chiamata
POST
alcallback_url
indicato- se l'account è ritenuto valido, l'utente riceve conferma di attivazione dell'account e può utilizzare il prodotto
- se l'account non è ritenuto valido, l'utente torna alla creazione dell'account generica di JPAnalytics
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 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({ 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