Webhooks

Che cos'è un webhook?

Con un webhook puoi ricevere messaggi e notifiche istantanee nella tua app. Inizia inserendo l'URL del webhook per la tua app, iscriviti agli argomenti e valida il webhook. Puoi farlo modificando la tua applicazione e cliccando sulla scheda webhook. In questa scheda vedrai anche quali sono gli argomenti possibili a cui puoi iscrivere il tuo webhook.

Per far funzionare le notifiche webhook, la tua app ha bisogno dei permessi di Lettura notifiche.

Autenticazione

Per autenticare le richieste webhook, in modo da controllare se si tratta di una richiesta valida proveniente dalla piattaforma Cryptohopper, utilizza l'header X-Hub-Signature nella richiesta. L'X-Hub-Signature sarà una stringa hash sha512 del payload con la secret dell'app come chiave.

Formato webhook

Il webhook pubblica i payload nel seguente formato:

{
    "app_id": 123,
    "type": "messages",
    "messages": [
    	{
            "type": "trade_completed",
            "title": "Hop completed for BTC",
            "message": "Your order has been successfully filled.",
            "data": {"coin":"BTC", ... }
    	},
        {...}
    ]
}

Validazione

Il webhook deve essere validato quando lo si vuole salvare. Per la convalida, il webhook deve restituire un codice di stato HTTP 200 e deve restituire lo stesso codice di convalida inserito nel modulo webhook.

Il messaggio di validazione JSON è il seguente: assicurati di inviare lo stesso codice di validazione inserito nel modulo webhook.

{
    "app_id": 123,
    "type": "validate",
    "messages": []
}

Esempio PHP

<?php

$app_secret = 'ENTER_YOUR_APP_SECRET';
$verification_code = 'MY_VERIFICATION_CODE';

$requestBody = file_get_contents('php://input');
$headers = getallheaders();
$headers = array_change_key_case($headers, CASE_UPPER);
$json = json_decode($requestBody, true);

$signature = hash_hmac('sha512', $requestBody, $app_secret);

if($signature == $headers['X-HUB-SIGNATURE']){
	//valid webhook request
	if($json['type'] == 'validate'){
		// validate webhook
		echo $verification_code;
	}elseif($json['type'] == 'messages'){
		// receive messages
		print_r($json['messages'], true);
	}else{
		// unkown type
		echo 'Unkown webhook message type.';
	}
}else{
	//invalid signature
	echo 'Invalid signature.';
}
?>