Вебхуки позволяют вам получать HTTPS-уведомления о событиях на платформе Paxful в режиме реального времени. Например, мы можем отправлять вам уведомления о новых сообщениях от торгового партнера или новых сделках. Таким образом, вам не придется постоянно отправлять API-запросы, чтобы узнать об изменениях или обновлениях. В этом руководстве мы расскажем вам, как настроить вебхуки на платформе Paxful.
Paxful поддерживает вебхуки для следующих событий:
- Новая сделка на Paxful
- Новое сообщение в чате сделки
- Новое вложение в чате сделки
- Кто-то просмотрел ваш профиль на Paxful
- Кто-то просмотрел ваше предложение
- Торговый партнер оплатил покупку криптовалюты
- Сделка отменена или срок действия сделки истек
- Криптовалюта продана
- Криптовалюта куплена
- Зачисление криптовалюты подтверждено
- Ожидается зачисление криптовалюты
- Отзыв от торгового партнера
- Получен новый ответ на отзыв
Как настроить вебхуки
Примечание: Убедитесь, что ваш сервис принимает вебхуки. При сохранении URL ваш сервис должен взять заголовок запроса "X-Paxful-Request-Challenge" и указать его в ответе в таком же виде.
. Вот как должен выглядеть наш заголовок запроса (это пример вебхуков в Node.js):
1. Войдите в аккаунт Paxful, наведите курсор на свое имя пользователя (в правом верхнем углу страницы) и выберите Настройки в появившемся контекстном меню.
Вы перейдете на страницу настроек.
2. В меню в левой части страницы нажмите Для разработчиков.
Вы перейдете на страницу для разработчиков.
3. Если у вас нет API-ключа, введите двухфакторный код в поле ниже и нажмите Добавить новый API-ключ. Если у вас есть API-ключ, вы можете пропустить этот шаг.
Ваш новый API-ключ появится на странице для разработчиков вместе с дополнительными разделами.
4. Скопируйте URL из своего приложения.
Перейдите в раздел Вебхуки на странице Для разработчиков. Вставьте ссылку в поле URL запроса и нажмите Сохранить.
Внимание! Наши вебхуки поддерживаются только адресами формата HTTPS. Вы не сможете использовать для этой цели адреса HTTP.
Заголовок запроса отправлен на ваше приложение.
Примечание: Таймаут при отправке — 10 секунд. Если мы за это время не получим ответ от вашего приложения, URL-ссылка не будет сохранена и вебхук не будет создан.
5. Если все сделано правильно, вы увидите список доступных для подписки событий. Пометьте галочкой события, на которые вы хотите подписаться.
Примечание:
- После выбора события будут сохранены автоматически.
- Чтобы вставить новую ссылку, замените текущую URL-ссылку новой и нажмите Изменить.
- Чтобы деактивировать вебхуки, нажмите Удалить.
- Чтобы заново активировать отключенную URL-ссылку, нажмите Повторить попытку.
Если URL запроса успешно сохранена, в вашем приложении события будут отображаться следующим образом:
Проверка запросов от Paxful
Paxful создает уникальную строку для вашего приложения и передает ее вам. Вы можете проверять запросы от Paxful при помощи проверки подписей.
Мы добавляем HTTPS-заголовок "X-Paxful-Signature" к каждому отправленному HTTPS-запросу. Подпись создается путем соединения ключа подписи с телом отправляемого запроса, для чего используется стандартный хеш HMAC-SHA256.
Примечание: В результате получается уникальная подпись для каждого запроса, которая не содержит какой-либо конфиденциальной информации. Это обеспечивает защиту вашего приложения от злоумышленников.
Примеры в JavaScript
const crypto = require('crypto');
const express = require('express');
const app = express();
const port = 3000;
const bodyParser = require('body-parser');
Ваш приватный ключ API со страницы https://paxful.com/account/developer:
const apiSecret = 'maE5KV16FV0nDyh7XPm2F8f8FZTdtb5p';
app.use(bodyParser.json());
Когда вы получите запрос на подтверждение адреса, вам нужно скопировать заголовок "X-Paxful-Request-Challenge" из запроса и вставить его в ответ.
app.use((req, res, next) => {
Запрос на подтверждение информации не содержит содержимого запроса и подписи запроса.
if (!Object.keys(req.body).length && !req.get('X-Paxful-Signature')) {
console.log('Address verification request received.');
const challengeHeader = 'X-Paxful-Request-Challenge';
res.set(challengeHeader, req.get(challengeHeader));
res.end();
} else {
next();
}
});
При получении уведомления о событии вы должны проверить заголовок "X-Paxful-Signature". Если запрос содержит неверную подпись, не обрабатывайте его.
app.use((req, res, next) => {
const providedSignature = req.get('X-Paxful-Signature');
const calculatedSignature = crypto.createHmac('sha256', apiSecret).update(JSON.stringify(req.body)).digest('hex');
if (providedSignature !== calculatedSignature) {
console.log('Request signature verification failed.');
res.status(403).end();
} else {
next();
}
});
Теперь вы можете обработать событие.
app.post('*', async (req, res) => {
console.log('New event received:');
console.log(req.body);
res.end();
});
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));
Если у вас есть вопросы, свяжитесь с нашей службой поддержки. Вы также можете изучить нашу документацию для разработчиков, чтобы узнать больше об API-сервисах.