Webhook'ları ayarlamak

Webhook'lar, Paxful platformundaki etkinlikler ile ilgili gerçek zamanlı HTTPS bildirimleri almanızı mümkün hale getirir. Örneğin, yeni bir işlem başladığında veya bir işlem sohbetinde işlem ortağınız bir mesaj gönderdiğinde size bir bildirim gönderebiliriz. Bu durum, nesneler üzerinde meydana gelmiş veya gelmemiş olabilecek değişiklikler hakkında API üzerinden sorguda bulunarak hız limitinize ulaşmadan sakınmanıza yardımcı olacaktır. Bu kılavuz, Paxful ile Webhook ayarlamalarını tam olarak nasıl yapabileceğinizi açıklar.

Aşağıdaki etkinlikler için Webhook desteğimiz vardır:

  • Paxful’da yeni gelen işlem
  • İşlem sohbetinde alınan mesaj
  • İşlem sohbetinde alınan eklenti
  • Birisi Paxful profilinizi görüntüledi
  • Birisi teklifinizi görüntüledi
  • İşlem ortağı, bitcoini için ödeme yaptı
  • İşlem iptal edildi veya süresi sona erdi
  • Bitcoin başarılı bir şekilde satıldı
  • Bitcoin satın alındı
  • Bitcoin yatırma işlemi onaylandı
  • Gelen bitcoin yüklemesi beklemede
  • Bir işlem ortağından geri bildirim alındı
  • Yeni geri bildirim yanıtı alındı

Webhook'ları ayarlamak

Not: Hizmetinizin Webhook almaya hazır olduğundan emin olun. URL kayıt prosesi sırasında, hizmetiniz “X-Paxful-İsteği-Meydan-Okuması” istek başlığını almalı ve bunu yanıta olduğu gibi koymalıdır.

Veri yükünüz içerisinde isteğimizin başlığı şu şekilde görüntülenmelidir (bu, Node.js): içerisinde bir Webhook hizmeti örneğidir)

RequestHeader.png

1. Paxful hesabınıza giriş yapın, sayfanın sağ üst köşesindeki kullanıcı adınızın üzerine gelin ve açılacak içerik menüsünden Ayarlar seçeneğine tıklayın..
ClickSettings.png

Ayarlar sayfası görüntülenecektir.

2. Sayfanın sol tarafındaki Geliştirici düğmesine tıklayın.
Click_Developer.png

Geliştirici sayfası görüntülenecektir.

3. Bir API anahtarınız yoksa, aşağıdaki alana iki adımlı doğrulama kodunu girin ve Yeni bir API anahtarı ekle seçeneğine tıklayın. Zaten bir API anahtarınız varsa, bu adımı atlayabilirsiniz. 
AddAPIKey.png

Yeni API anahtarınız Geliştirici sayfasında diğer bölümler ile birlikte görüntülenir.

4. Uygulamadan URL’yi kopyalayın.
Paxful Geliştirici sayfası üzerinden Webhooklar bölümüne gidin. Linki İstek URL’si alanına yapıştırın ve Kaydet seçeneğine tıklayın.

Warning: Webhook'larımız yalnızca HTTPS adres türleri tarafından desteklenmektedir. HTTP adresleri bu amaç için çalışmayacaktır.


ClickSave.png

Bir istek başlığı, uygulamanıza gönderilmiştir.

Not: 10 saniyelik bir zaman aşımımız söz konusudur. Uygulamanızdan bir yanıt almamamız durumunda, URL kaydedilmeyecektir ve bir Webhook oluşturulmayacaktır.

5. Başarılı olma durumunda üye olunabilecek etkinliklerin bir listesi aşağıda görüntülenir. Etkinliklere abone ol listesinde bir etkinliğe abone olmak için bir kutuyu işaretleyin.
Events.png

Not:

  • Seçildiğinde etkinlikler otomatik olarak kaydedilir.
  • Uygulamanıza etkinlik bilgisi göndermede üç başarısız girişim olması durumunda, Webhook (URL) devre dışı olur. 
  • Yeni bir link eklemek için, mevcut URL’yi yenisiyle değiştirin ve Değiştir seçeneğine tıklayın. 
  • Webhookları tamamen devre dışı bırakmak için Sil seçeneğine tıklayın.
  • Bir URL’yi devre dışı bırakmak için Yeniden Dene
    ClickRetry.png
    seçeneğine tıklayın. 

İstek URL’sinin başarılı şekilde kaydedilmesi halinde, uygulamanızda etkinliklerimiz şu şekilde görüntülenecektir:

WebhookexampleEvent.png

Paxful'dan istekleri doğrulamak

Paxful, uygulamanız için eşsiz bir dize(string) oluşturur ve bunu sizinle paylaşır. Paxful'dan gelen istekleri, imzalama sırrınızı kullanmak suretiyle güven içinde doğrulayabilirsiniz.

Gönderilen her bir HTTPS isteği üzerinde bir "X-Paxful İmzası" HTTPS başlığı ekleriz. İmzanın oluşturulması, standart bir HMAC-SHA256 tuşlu sağlama(hash) kullanılarak imzalama sırrının, istek gövde(metni)ni kombine etmek suretiyle gerçekleştirilir.

Not: Sonuçta ortaya çıkan imza, her bir istek için eşsizdir ve herhangi bir sır bilgiyi doğrudan içermez. Bu sayede uygulamanız güvende kalırken, kötü aktörlerin soruna sebep olması da önlenmiş olur.

JavaScript'te örnek


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

https://paxful.com/account/developer sayfasından API sırrınız:


const apiSecret = 'maE5KV16FV0nDyh7XPm2F8f8FZTdtb5p';

app.use(bodyParser.json());

Bir hizmet adres doğrulama isteği aldığınızda, istekteki "X-Paxful-İstek-Meydan-Okuması" başlığını alıp yanıt içerisine bunu yapıştırmalısınız.


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

Adres doğrulama isteği, veri yükünü ve istek imzasını içermez.


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

Etkinlik bildirimi aldığınızda, "X-Paxful-İmzası" başlığını doğrulamalısınız. İsteğin yanlış bir imza içermesi halinde, bunu işlemeyin.


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

Şimdi bir etkinliği işleyebilirsiniz.


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

Herhangi bir ek sorunuz olması halinde Destek ile iletişime geçin. Ayrıca API hizmetlerimiz hakkında daha fazla bilgiyi geliştirici belgeleri içerisinden öğrenebilirsiniz.

Bu bölümdeki makaleler