Webhooks
Was ist ein Webhook?
Mit einem Webhook erhältst du sofort Nachrichten und Benachrichtigungen in deiner App. Beginne, indem du eine Webhook-URL für deine App angibst, abonniere Themen und valideiere den Webhook. Das kannst du tun, indem du deine App bearbeitest und auf das Webhook-Tab klickst. In diesem Tab siehst du auch, welche Themen du deinen Webhook abonnieren kannst.
Um Webhook-Benachrichtigungen zu aktivieren, benötigt deine App die Berechtigung **Benachrichtigungen lesen**.
Authentifizierung
Um die Webhook-Anfragen zu authentifizieren, damit du prüfen kannst, ob es sich um eine gültige Anfrage von der Cryptohopper-Plattform handelt, verwendest du den X-Hub-Signature-Header im Request. Die X-Hub-Signature ist ein sha512-gehashter String der Payload mit dem App-Secret als Schlüssel.
Webhook-Format
Der Webhook sendet Payloads im folgenden Format:
{
"app_id": 123,
"type": "messages",
"messages": [
{
"type": "trade_completed",
"title": "Hop completed for BTC",
"message": "Your order has been successfully filled.",
"data": {"coin":"BTC", ... }
},
{...}
]
}
Validierung
Die Webhook muss validiert werden, wenn du sie speichern möchtest. Für die Validierung muss die Webhook einen 200er HTTP-Statuscode zurückgeben und den gleichen Validierungs-Code wie im Webhook-Formular eingegeben hast.
Die JSON-Validierungsmeldung sieht wie folgt aus, bitte stelle sicher, dass du denselben Validierungscode aus dem Webhook-Formular einträgst.
{
"app_id": 123,
"type": "validate",
"messages": []
}
PHP-Beispiel
<?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.';
}
?>