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ğı, kripto parası için ödeme yaptı
- İşlem iptal edildi veya süresi sona erdi
- Kripto para başarılı bir şekilde satıldı
- Kripto satın alındı
- Kripto yatırma onaylandı
- Gelen kripto yatırma işlemi 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)

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..

Ayarlar sayfası görüntülenecektir.
2. Sayfanın sol tarafındaki Geliştirici düğmesine tıklayın.

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.

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.

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.

Not:
- Seçildiğinde etkinlikler otomatik olarak kaydedilir.
-
Olay bilgisini uygulamanıza gönderme doğrultusunda üç başarısız girişim olması durumunda Webhook (URL) devre dışı hale gelir. Bir Webhook araması için zaman aşımı 3 saniyedir.
-
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
seçeneğine tıklayın.
İstek URL’sinin başarılı şekilde kaydedilmesi halinde, uygulamanızda etkinliklerimiz şu şekilde görüntülenecektir:

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.