Webhooki

Co to jest webhook?

Z webhookiem otrzymasz natychmiastowe powiadomienia i wiadomości w swoim programie. Zaczynaj od podania webhook URL dla swojej aplikacji, subskrybuj tematy i waliduj webhooka. Możesz to zrobić, edytując swoją aplikację i klikając na zakładkę webhook. W tym okienku zobaczysz również możliwe tematy, na które możesz subskrybować swój webhook.

Aby powiadomienia webhook działały, twoja aplikacja potrzebuje uprawnień do odczytu powiadomień.

Autentykacja

Aby zweryfikować żądania webhook, by sprawdzić, czy to prawidłowe żądanie z platformy Cryptohopper, użyj nagłówka X-Hub-Signature w żądaniu. X-Hub-Signature będzie ciągiem skrótem SHA512 payload z sekretem aplikacji jako kluczem.

Format webhooka

Webhook publikuje ładunki w następującym formacie:

{
    "app_id": 123,
    "type": "messages",
    "messages": [
    	{
            "type": "trade_completed",
            "title": "Hop completed for BTC",
            "message": "Your order has been successfully filled.",
            "data": {"coin":"BTC", ... }
    	},
        {...}
    ]
}

Typy wiadomości

Konfigurując webhook swojej aplikacji, wybierasz, które z tych wiadomości ma otrzymywać. Każda wiadomość w danych ma swój typ w polu 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

Walidacja

Webhook trzeba zwalidować, żeby je zapisać. Do walidacji webhook musi zwrócić kod statusu HTTP 200 i taki sam kod walidacyjny, jaki podałeś w formularzu webhooka.

Wiadomość walidacji JSON wygląda następująco, proszę upewnić się, że wygenerowany kod walidacji jest taki sam, jak w formularzu webhook.

{
    "app_id": 123,
    "type": "validate",
    "messages": []
}

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