Oy ödülleri
Oy ödülleri server.vote ve project.vote Webhook olaylarını kullanır: handler olayı alır, API ile oy verisini çeker ve ödülü yalnızca bir kez verir.
Önce proje Webhook’unu ve signature doğrulamasını ayarlayın. Oy verisi GET /votes/:vote_id ile istenir.
Akış nasıl çalışır
- Webhook olayını alın ve signature doğrulayın. is_test
trueise oyu çekmeden ve ödül vermeden204döndürün. event_typedeğerininserver.voteveyaproject.voteolduğundan emin olun.event_iddeğerini oy ID’si olarak kullanın.- GET /votes/:vote_id ile oy verisini alın ve oyuncuyu kendi sisteminizde bulun.
- Tek transaction içinde
event_type+event_idile tekrar işleme korumasını uygulayın ve ödülü yalnızca yeni olay için verin. - Ödül güvenli şekilde verilemiyorsa hata yanıtı döndürün. Sebep düzeltildikten sonra teslimatı arayüzden tekrar gönderin.
Ödül örneği
PlayerName oyuncusunun ID’si 1 olan server için oy verdiğini ve sisteminizin ona 100 coin eklemesi gerektiğini varsayalım.
- GAMEMONITORING
event_type: server.voteveevent_id: 9824cabb-2203-437e-9b6c-aba43dde3e4bile Webhook gönderir. - Handler signature doğrular. İmza geçersizse
401döndürür ve durur. - Handler
GET /votes/9824cabb-2203-437e-9b6c-aba43dde3e4bister, nickname, server ve user verisini alır, ardından yerel hesabı bulur. - Transaction içinde handler
event_type+event_iddeğerini tekrar işleme koruması için kaydeder. - Yeni olay için handler aynı transaction içinde
100coin ekler. - Tekrar teslimatta handler zaten kaydedilmiş olayı bulur, ödülü tekrar vermez ve
204döndürür.
Aynı akış eşya, rol, VIP süresi, promosyon kodu veya dahili kuyruğa eklenecek işler için de uygundur.
Oy olayı
Server oyu için GAMEMONITORING server.vote, proje oyu için project.vote olayını gönderir. Olay gövdesinde yalnızca teslimat verileri vardır: event_type, event_id, is_test ve signature. Tam oy verisi ayrıca istenmelidir.
Bu olayda event_id oy ID’sidir. Nickname, server veya user verisi için Webhook gövdesini kaynak olarak kullanmayın: bu veriler API’den gelir.
Oy verisini alma
event_id değerini vote_id olarak kullanın ve oy verisini GET /votes/:vote_id ile isteyin:
Ödül vermek için genellikle response.nickname, response.server ve public response.user verileri gerekir. Ödül belirli bir server’a bağlıysa her zaman response.server.id kontrol edin.
Alanları kullanma şekli: response.nickname veritabanınızdaki oyuncu hesabını bulmaya yardım eder, response.server.id server için ödül kuralını seçer, response.user.id ise oy veren GAMEMONITORING kullanıcı ID’si olarak ödül loguna yazılabilir.
API geçici olarak kullanılamıyorsa veya beklenmeyen yanıt veriyorsa doğrulama yapmadan ödül vermeyin. Hata kodu döndürün, sebebi düzeltin ve teslimatı arayüzden tekrar gönderin.
Adım 3. Oy ödülü handler’ı
Örnek temel handler’ın devamıdır: imzayı doğrular, oy verisini alır, olayı tekrar işlemeye karşı korur ve ödülü tek transaction içinde ekler. Kullanıcı tablosu adını, bakiye alanını ve oyuncu arama kuralını kendi sistem yapınızla değiştirin.
Örneği çalıştırmadan önce proje Webhook’unu ayarlayın, GET /votes/:vote_id endpoint’ini kontrol edin ve SQL user update sorgularını kendi hesap modelinizle değiştirin.