Webhooks

Webhook是啥?

借助 Webhook,你能够即时收到应用程序的訊息和通知。首先,将 webhook URL 添加到你的应用,订阅主题并验证 webhook。你可以通过编辑你的应用并点击 webhook 选项卡来完成。在这个选项卡中,你还能看到可以订阅的主题。

为了让 Webhook 通知生效,你的应用需要读取通知权限。

身份验证

为了验证 Webhook 请求的真实性,确保请求来自 Cryptohopper 平台,请在请求中使用 X-Hub-Signature 头部。X-Hub-Signature 将是 payload 的 sha512 哈希字符串,其密钥为 app secret。

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 需要返回 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.';
}
?>