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