Webhooks
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", ... }
},
{...}
]
}
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.';
}
?>