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", ... }
},
{...}
]
}
Types de messages
Lorsque vous configurez le webhook de votre app, vous choisissez lesquels de ces messages il reçoit. Chaque message d'un payload indique son type dans le champ type.
trade_completed | Order completed |
trade_error | Order error |
order_cancelled | Order cancelled |
order_placed | Order placed |
config_error | Config error |
on_first_start | First start |
on_trigger | Trigger |
on_panic_start | On panic mode start |
on_panic_end | On panic mode end |
aibot_proposal | AI Bot proposal |
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.';
}
?>