Webhooks
Wat is een webhook?
Met een webhook krijg je direct berichten en notificaties in je app. Begin met het opgeven van een webhook-URL voor je app, abonneer je op onderwerpen en valideer de webhook. Je kunt dit doen door je applicatie te bewerken en op het webhook-tabblad te klikken. In dit tabblad zie je ook welke onderwerpen je webhook kan abonneren.
Om webhook-notificaties te laten werken, heeft je app Leesmeldingen-machtigingen nodig.
Authenticatie
Om webhook-verzoeken te authenticeren, zodat je kunt controleren of het een geldig verzoek is van het Cryptohopper Platform, gebruik je de X-Hub-Signature header in het verzoek. De X-Hub-Signature is een sha512-gehashte string van de payload met de app-secret als sleutel.
Webhook-formaat
De webhook plaatst payloads in het volgende formaat:
{
"app_id": 123,
"type": "messages",
"messages": [
{
"type": "trade_completed",
"title": "Hop completed for BTC",
"message": "Your order has been successfully filled.",
"data": {"coin":"BTC", ... }
},
{...}
]
}
Berichttypes
Bij het instellen van de webhook van je app kies je welke van deze berichten hij ontvangt. Elk bericht in een payload heeft zijn type in het veld 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 |
Validatie
De webhook moet gevalideerd worden als je hem wilt opslaan. Voor de validatie moet de webhook een 200 HTTP-statuscode terugsturen en dezelfde validatiecode als die je in het webhookformulier hebt ingevuld.
De JSON-validatiemelding ziet er als volgt uit, zorg ervoor dat je dezelfde validatiecode invult als je in het webhook-formulier hebt ingevoerd.
{
"app_id": 123,
"type": "validate",
"messages": []
}
PHP Voorbeeld
<?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.';
}
?>