वोट पुरस्कार
Vote rewards server.vote Webhook event use करते हैं: handler event receive करता है, API से vote data लेता है, player को आपके system में ढूंढता है और reward सिर्फ एक बार देता है।
इस method को integrate करने के लिए पहले project Webhook configure करें और signature verify करें। Vote data GET /votes/:vote_id से लिया जाता है।
Flow
- Webhook event accept करें और signature verify करें। अगर is_test
trueहै, vote fetch किए बिना और reward दिए बिना204लौटाएं। - Confirm करें कि
event_typeserver.voteहै। event_idलें:server.voteके लिए यह vote ID है।- GET /votes/:vote_id से vote data लें और player को अपने system में find करें।
event_type+event_idसे duplicate processing protection लागू करें और reward उसी transaction में दें।- अगर reward safely नहीं दिया जा सकता, error response लौटाएं, cause fix करें और interface से delivery resend करें।
Reward उदाहरण
मान लें player PlayerName ने ID 1 वाले server के लिए vote किया और system को 100 coins जोड़ने हैं।
- GAMEMONITORING
event_type: server.voteऔरevent_id: 9824cabb-2203-437e-9b6c-aba43dde3e4bके साथ Webhook भेजता है। - Handler signature verify करता है। Signature invalid हो तो
401लौटाकर रुकता है। - Handler
GET /votes/9824cabb-2203-437e-9b6c-aba43dde3e4brequest करता है और nickname, server, user data लेता है। - अपने database में handler nickname या account link से local account खोजता है।
- Transaction में handler
server.vote+event_idसे duplicate processing protection लागू करता है और100coins जोड़ता है। - उसी event की repeated delivery को उन्हीं duplicate processing rules से handle करें।
यही flow items, roles, VIP time, promo code या internal queue के लिए भी काम करता है।
Vote event
जब server को vote मिलता है, GAMEMONITORING server.vote event भेजता है। Body में सिर्फ delivery data होता है: event_type, event_id, is_test और signature। Full vote data अलग से request करें।
इस event में event_id vote ID है। Nickname, server या user data के source के रूप में Webhook body इस्तेमाल न करें: ये data API से आता है।
Vote data प्राप्त करें
event_id को vote_id की तरह use करें और GET /votes/:vote_id से vote data request करें:
Reward delivery के लिए आम तौर पर response.nickname, response.server और public response.user data चाहिए। अगर reward specific server पर depend करता है, हमेशा response.server.id check करें।
Mapping example: response.nickname आपके database में player account ढूंढता है, response.server.id server reward rule चुनता है, और response.user.id reward log में save किया जा सकता है।
API temporary unavailable हो या unexpected response दे, तो बिना जांच reward न दें। Error code लौटाएं, कारण fix करें और delivery retry करें।
पूरा उदाहरण
Example signature verify करता है, vote data लेता है, duplicate rewards रोकता है और reward add करता है। Users table name, balance field और player lookup rule को अपने system structure से replace करें।
Example चलाने से पहले project Webhook configure करें, GET /votes/:vote_id check करें और SQL user update queries को अपने account model से बदलें।