Webhooks

Qu'est-ce qu'un webhook ?

Avec un webhook, tu reçois instantanément des messages et des notifications dans ton application. Commence par fournir une URL de webhook à ton application, abonne-toi aux sujets et valide le webhook. Tu peux le faire en modifiant ton application et en cliquant sur l'onglet webhook. Dans cet onglet, tu verras aussi quels sont les sujets possibles auxquels tu peux abonner ton webhook.

Pour que les notifications webhook fonctionnent, ton application aura besoin des permissions Lecture des notifications.

Authentification

Pour authentifier les requêtes webhook, afin de vérifier qu'il s'agit bien d'une requête valide provenant de la plateforme Cryptohopper, utilise l'en-tête X-Hub-Signature dans la requête. L'X-Hub-Signature sera une chaîne hachée sha512 du payload avec la clé secrète de l'application.

Format de webhook

Le webhook envoie des payloads dans le format suivant :

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

Validation

Le webhook doit être validé lorsque tu souhaites l'enregistrer. Pour la validation, le webhook doit renvoyer un code HTTP 200 et afficher le même code de validation que celui entré dans le formulaire de webhook.

Le message de validation JSON est le suivant : assurez-vous de saisir le même code de validation que celui entré dans le formulaire webhook.

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

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