Webフック

ウェブフックって何?

Webhookを使って、アプリにメッセージと通知を瞬時に届けることができます。まず、アプリのWebhook URLを指定し、トピックを購読してWebhookを検証してください。アプリを編集してWebhookタブをクリックすることで可能です。このタブには、Webhookが購読できるトピックも表示されます。

Webhook通知が機能するには、アプリは**読み込み通知**の権限が必要です。

認証

Cryptohopperプラットフォームからの有効なリクエストであるかどうかを確認するために、Webhookリクエストを認証するには、リクエストのX-Hub-Signatureヘッダーを使用してください。X-Hub-Signatureは、アプリの秘密鍵を使ってペイロードをsha512ハッシュした文字列になります。

Webhook形式

Webhookが以下の形式でペイロードを送信します。

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

検証

Webhookを保存するには、Webhookの検証が必要です。検証のためには、Webhookが200のHTTPステータスコードを返し、Webhookフォームに入力した同じ検証コードを出力する必要があります。

JSONバリデーションメッセージは、以下のとおりです。Webhookフォームに入力したのと同一のバリデーションコードを出力してください。

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

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