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_completedOrder completed
trade_errorOrder error
order_cancelledOrder cancelled
order_placedOrder placed
config_errorConfig error
on_first_startFirst start
on_triggerTrigger
on_panic_startOn panic mode start
on_panic_endOn panic mode end
aibot_proposalAI 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.';
}
?>