• Cos'è un'API?

    Un API consente di collegarsi a Paxful a sviluppatori o attività che vogliono creare applicazioni.


    Le Application Programming Interface (API) consentono di collegarsi a Paxful in modo ancora più stretto. Per maggiori informazioni, fai clic qui.

  • Configurare i webhook

    I webhook ti consentono di ricevere notifiche HTTPS in tempo reale su ciò che avviene sul mercato di Paxful. Potremmo inviarti una notifica all'inizio di una nuova operazione, o ogni volta che la controparte dell'operazione invia un messaggio in chat. In questo modo non dovrai più inviare una query all'API per sapere se ci sono stati dei cambiamenti, e non raggiungerai più il limite. In questa guida ti spieghiamo nel dettaglio come configurare dei webhook su Paxful.

    Supportiamo i webhook per i seguenti eventi:

    • Nuova operazione in entrata su Paxful
    • Messaggio ricevuto nella chat dell'operazione
    • Allegato ricevuto nella chat dell'operazione
    • Qualcuno ha visualizzato il tuo profilo Paxful
    • Qualcuno ha visualizzato la tua offerta
    • La controparte dell'operazione ha pagato i propri bitcoin
    • L'operazione è stata annullata o è scaduta
    • Bitcoin venduti
    • Bitcoin acquistati
    • Deposito di bitcoin confermato
    • Il deposito di bitcoin in arrivo è in sospeso
    • Ricezione di feedback dalla controparte di un'operazione
    • Ricezione di una nuova risposta a un feedback

    Configurare i webhook

    Nota: assicurati che il servizio sia pronto per ricevere webhook. Durante la procedura di salvataggio dell'URL, il servizio assumerà l'intestazione X-Paxful-Request-Challenge" e invierà la risposta così com'è.

    Ecco che aspetto avrà l'intestazione della richiesta nel tuo payload (il presente è un esempio di servizio webhook in Node.js):

    RequestHeader.png

    1. Accedi al tuo conto Paxful, porta il mouse sul nome utente nell'angolo in alto a destra della pagina e fai clic su Impostazioni dal menu contestuale che viene visualizzato
    ClickSettings.png

    Viene visualizzata la pagina Impostazioni.

    2. Dal menu sul lato sinistro della pagina, fai clic su Sviluppatore.
    Click_Developer.png

    Viene visualizzata la pagina Sviluppatore.

    3. Se non hai una chiave API, inserisci il codice dell'autenticazione a due fattori nel campo di seguito, quindi fai clic su Aggiungi nuova chiave API. Se hai già una chiave API puoi saltare questo passaggio.
    AddAPIKey.png

    La tua nuova chiave API verrà visualizzata nella pagina Svilupatore, insieme ad altre sezioni.

    4. Copia l'URL dalla tua app.
    Vai alla sezione Webhook della pagina Sviluppatore di Paxful. Copia il link nel campo URL richiesta e fai clic su Salva.

    Attenzione: i nostri webhook sono supportati solamente da indirizzi di tipo HTTPS. Gli indirizzi HTTP non funzioneranno.


    ClickSave.png

    Invieremo un'intestazione di richiesta alla tua app.

    Nota: il nostro timeout è di 10 secondi. Se non dovessimo ricevere una risposta dalla tua app, l'URL non verrà salvato e non creeremo alcun webhook.

    5. Se tutto andrà a buon fine, di seguito verrà visualizzato un elenco di eventi ai quali sarà possibile abbonarsi. Fai clic sulle varie caselle per selezionare un evento dall'elenco Effettua la sottoscrizione agli eventi.
    Events.png

    Nota:

    • Una volta selezionati, gli eventi vengono salvati automaticamente.
    • Se per tre volte non riuscissi a inviare informazioni sull'evento alla tua app, il webhook (URL) verrà disattivato.
    • Per inserire un nuovo link sostituisci l'URL attuale con quello nuovo e fai clic su Modifica.
    • Per disattivare completamente i tuoi webhook, fai clic su Elimina.
    • Per riattivare un URL disattivato, fai clic su Riprova.
      ClickRetry.png
       

    Se l'URL della richiesta viene salvato, gli eventi verranno mostrati nell'app in questo modo:

    WebhookexampleEvent.png

    Verificare le richieste di Paxful

    Paxful crea una stringa unica per la tua app e la condivide con te. Verifica le richieste di Paxful nella massima fiducia verificando le firme e usando la tua firma segreta.

    Aggiungiamo a ogni richiesta HTTPS inviata un'intestazione HTTPS "X-Paxful-Signature". La firma viene creata unendo la firma segreta e il corpo della richiesta che inviamo tramite un hash criptato HMAC-SHA256.

    Nota: la firma è unica e diversa per ogni richiesta. Non contiene direttamente alcuna informazione segreta. In questo modo l'app resta sempre sicura, e i malintenzionati non possono causare danni.

    Esempio in Java Script

    
    const crypto = require('crypto');
    const express = require('express');
    const app = express();
    const port = 3000;
    const bodyParser = require('body-parser');

    Il tuo API secret dalla pagina https://paxful.com/account/developer:

    
    const apiSecret = 'maE5KV16FV0nDyh7XPm2F8f8FZTdtb5p';
    
    app.use(bodyParser.json());

    Quando ricevi una richiesta di verifica dell'indirizzo di servizio, prendi l'intestazione della richiesta "X-Paxful-Request-Challenge" e inseriscila nella risposta.

    
    app.use((req, res, next) => {
    

    La richiesta di verifica dell'indirizzo non contiene il payload e la firma.

    
      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();
        }
    });

    Quando ricevi una notifica per l'evento dovrai verificare l'intestazione "X-Paxful-Signature". Se la richiesta contiene la firma sbagliata, non elaborarla.

    
      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();
        }
    });

    Ora puoi elaborare un evento.

    
      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}`));

    Per ulteriori domande, contatta l'assistenza. Puoi anche saperne di più sui nostri servizi API nella documentazione per gli sviluppatori.