¿Qué es un webhook?

Con un webhook, recibirás mensajes y notificaciones instantáneamente en tu app. Empieza proporcionando la URL de webhook de tu app, suscríbete a los temas y valida el webhook. Puedes hacerlo editando tu aplicación y haciendo clic en la pestaña webhook. En esta pestaña también verás qué temas puedes suscribir tu webhook.

Para que las notificaciones webhook funcionen, tu app necesita permisos de Lectura de notificaciones.

Autenticación

Para autenticar las peticiones webhook, para comprobar que son válidas y provienen de la plataforma Cryptohopper, usa el encabezado X-Hub-Signature en la solicitud. El X-Hub-Signature será una cadena hash SHA512 del payload con la clave secreta de la app.

Formato de webhook

Los webhooks publican cargas útiles en el siguiente formato:

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

Tipos de mensaje

Al configurar el webhook de tu app eliges cuáles de estos mensajes recibe. Cada mensaje del contenido indica su tipo en el campo 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

Validación

La webhook necesita validación para guardarla. Para validar la webhook, debe devolver un código HTTP 200 y el mismo código de validación que introdujiste en el formulario de la webhook.

La validación JSON del mensaje es la siguiente, asegúrate de que el código de validación ingresado en el formulario webhook sea el mismo.

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

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