Webhook nedir?

Webhook ile uygulamamıza anında mesajlar ve bildirimler alabilirsin. Uygulamanın webhook URL'sini girerek, konulara abone olarak ve webhook'u doğrulayarak başla. Bunu uygulama düzenlemesi yaparak ve webhook sekmesine tıklayarak gerçekleştirebilirsin. Bu sekmede, webhook'una abone olabileceğin olası konuları da görebileceksin.

Webhook bildirimleri çalışması için uygulaman, Bildirim Okuma izinlerine ihtiyaç duyacak.

Kimlik Doğrulama

Webhook istekilerini doğrulamak için, Cryptohopper Platform'dan gelen geçerli bir istek olup olmadığını kontrol edebilmen için, istekte X-Hub-Signature başlığını kullan. X-Hub-Signature, yük ile uygulama sırrının anahtar olarak kullanıldığı sha512 ile hashlenen bir dizedir.

Webhook formatı

Webhook'lar, aşağıdaki biçimde ödemeler gönderir:

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

Mesaj türleri

Uygulamanızın webhook'unu ayarlarken bu mesajlardan hangilerini alacağını seçersiniz. Verideki her mesaj, türünü type alanında taşır.

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

Doğrulama

Webhook'u kaydetmek istediğinde doğrulaması gerekir. Webhook doğrulaması için webhook 200 HTTP durum kodu döndürmeli ve webhook formunda girdiğin doğrulama koduyla aynı kodu üretmelidir.

JSON doğrulama mesajı şu şekilde; webhook formuna girdiğiniz doğrulama kodunu aynısını girdiğinizden emin olun.

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

PHP Örneği

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