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", ... }
    	},
        {...}
    ]
}

Tipi di messaggio

Quando configuri il webhook della tua app scegli quali di questi messaggi riceve. Ogni messaggio del payload indica il suo tipo nel campo type.

trade_completedOrder completed
trade_errorOrder error
order_cancelledOrder cancelled
order_placedOrder placed
config_errorConfig error
on_first_startFirst start
on_triggerTrigger
on_panic_startOn panic mode start
on_panic_endOn panic mode end
aibot_proposalAI Bot proposal

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.';
}
?>