API

  • Что такое API?

    API предназначен для разработчиков или компаний, которые хотят создавать приложения для работы с Paxful.


    Интерфейсы прикладного программирования (API) делают работу на Paxful еще более легкой и приятной. Нажмите здесь для получения дополнительной информации.

  • Как настроить вебхуки

    Вебхуки позволяют вам получать HTTPS-уведомления о событиях на платформе Paxful в режиме реального времени. Например, мы можем отправлять вам уведомления о новых сообщениях от торгового партнера или новых сделках. Таким образом, вам не придется постоянно отправлять API-запросы, чтобы узнать об изменениях или обновлениях. В этом руководстве мы расскажем вам, как настроить вебхуки на платформе Paxful.

    Paxful поддерживает вебхуки для следующих событий:

    • Новая сделка на Paxful
    • Новое сообщение в чате сделки
    • Новое вложение в чате сделки
    • Кто-то просмотрел ваш профиль на Paxful
    • Кто-то просмотрел ваше предложение
    • Торговый партнер оплатил покупку биткоинов
    • Сделка отменена или срок действия сделки истек
    • Биткоины проданы
    • Биткоины куплены
    • Зачисление биткоинов подтверждено
    • Ожидается зачисление биткоинов
    • Отзыв от торгового партнера
    • Получен новый ответ на отзыв

    Как настроить вебхуки

    Примечание: Убедитесь, что ваш сервис принимает вебхуки. При сохранении URL ваш сервис должен взять заголовок запроса "X-Paxful-Request-Challenge" и указать его в ответе в таком же виде.

    . Вот как должен выглядеть наш заголовок запроса (это пример вебхуков в Node.js):

    RequestHeader.png

    1. Войдите в аккаунт Paxful, наведите курсор на свое имя пользователя (в правом верхнем углу страницы) и выберите Настройки в появившемся контекстном меню.
    ClickSettings.png

    Вы перейдете на страницу настроек.

    2. В меню в левой части страницы нажмите Для разработчиков.
    Click_Developer.png

    Вы перейдете на страницу для разработчиков.

    3. Если у вас нет API-ключа, введите двухфакторный код в поле ниже и нажмите Добавить новый API-ключ. Если у вас есть API-ключ, вы можете пропустить этот шаг.
    AddAPIKey.png

    Ваш новый API-ключ появится на странице для разработчиков вместе с дополнительными разделами.

    4. Скопируйте URL из своего приложения.
    Перейдите в раздел Вебхуки на странице Для разработчиков. Вставьте ссылку в поле URL запроса и нажмите Сохранить.

    Внимание! Наши вебхуки поддерживаются только адресами формата HTTPS. Вы не сможете использовать для этой цели адреса HTTP.


    ClickSave.png

    Заголовок запроса отправлен на ваше приложение.

    Примечание: Таймаут при отправке — 10 секунд. Если мы за это время не получим ответ от вашего приложения, URL-ссылка не будет сохранена и вебхук не будет создан.

    5. Если все сделано правильно, вы увидите список доступных для подписки событий. Пометьте галочкой события, на которые вы хотите подписаться.
    Events.png

    Примечание:

    • После выбора события будут сохранены автоматически.
    • После трех неудачных попыток отправки информации на ваше приложение вебхук деактивируется. 
    • Чтобы вставить новую ссылку, замените текущую URL-ссылку новой и нажмите Изменить.
    • Чтобы деактивировать вебхуки, нажмите Удалить.
    • Чтобы заново активировать отключенную URL-ссылку, нажмите Повторить попытку.
      ClickRetry.png
       

    Если URL запроса успешно сохранена, в вашем приложении события будут отображаться следующим образом:

    WebhookexampleEvent.png

    Проверка запросов от 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-сервисах.