Kazanç (credit)
Callback · Sağlayıcı → OperatörTur kazanç ürettiğinde Boss Hub, tutarı oyuncunun bakiyesine eklemeniz için bu uç noktayı çağırır. Kazanç kesindir: yanıt alınamazsa tur iptal edilmez, istek takvimle tekrar edilir.
Başlıklar
| Başlık | Açıklama |
|---|---|
| Content-Type | application/json |
| X-Operator-Id | Operatör kimliğiniz |
| X-Timestamp | Unix saniye. ±30 sn dışını reddedin |
| X-Signature | hex(HMAC_SHA256(secret, ts + "." + "POST" + "." + path + "." + body)). path, callback adresinizin taban yolu dahil tam yoludur, örn. /bossgaming/bet. Bkz. İmza |
| X-Request-Id | Bu çağrının kimliği. Tekrar denemelerde aynı kalır |
| X-Api-Key | Callback’i imzalayan API anahtarınız. Birden çok anahtarınız varsa doğru secret’ı seçer |
{
"status": "OK",
"balance": 153.60,
"currency": "USD",
"operator_tx_id": "op_tx_9921845"
}{
"status": "ERROR",
"code": "TRANSACTION_ROLLED_BACK",
"balance": 150.60
}Yanıt kuralları
- Başka her HTTP durumu (3xx, 4xx, 5xx, WAF veya bakım sayfası) da belirsizdir.
- status: OK yanıtında currency zorunludur ve istekteki para birimiyle aynı olmalıdır. Eksik veya farklıysa yanıt belirsiz sayılır ve alarm üretilir.
- balance: işlem sonrası bakiye; JSON sayısı (148.60) veya sayı metni ("148.60"), en çok iki ondalık, üs (1e3) yok. balance çağrısında zorunludur, diğerlerinde gönderin.
- Kendi işlem kimliğinizi operator_tx_id alanında dönün. Yanıta transaction_id koyarsanız istektekiyle aynı olmalıdır.
- Çözülemeyen gövde, bilinmeyen status veya code dışı bir hata belirsiz sayılır ve alarm üretir. Tanımadığınız istek alanlarını yok sayın.
- İstekteki tutarlar her zaman iki ondalıklı JSON sayısıdır (2.00, 0.00), metin değildir. Gövdeyi kayıpsız okuyun, float kullanmayın.
| HTTP | Yanıt gövdesi | Boss Hub ne yapar |
|---|---|---|
| 200 | {"status":"OK","balance":148.60,"currency":"USD","operator_tx_id":"op_tx_9921844"} | Başarılı. |
| 200 | {"status":"OK","balance":"148.60","currency":"USD"} | Başarılı. balance sayı metni de olabilir; operator_tx_id isteğe bağlıdır. |
| 200 | {"status":"ERROR","code":"INSUFFICIENT_FUNDS","balance":0.40} | Temiz red. Bahis düşülmedi, tur başlamaz, rollback gelmez. |
| 400 | {"status":"ERROR","code":"INSUFFICIENT_FUNDS"} | Belirsiz: HTTP 200 değil, gövdeye bakılmaz. Bahis tekrar edilir, sonra otomatik rollback gelir. |
| 200 | {"status":"OK","balance":148.60} | Belirsiz + alarm: currency yok. |
| 200 | {"status":"OK","balance":148.60,"currency":"EUR"} | Belirsiz + alarm: istek USD idi, para birimi tutmuyor. |
| 200 | {"status":"OK","balance":148.605,"currency":"USD"} | Belirsiz + alarm: üç ondalık; en çok iki ondalık olur. |
| 200 | {"status":"OK","balance":1.486e2,"currency":"USD"} | Belirsiz + alarm: üslü sayı. |
| 200 | {"status":"OK","transaction_id":"tx_other","balance":148.60,"currency":"USD"} | Belirsiz + alarm: transaction_id istektekiyle aynı değil. |
| 200 | {"status":"ERROR"} | Belirsiz + alarm: code yok. |
Oturum eşleme ve imza yolu
- Yetki başlığı yok: Callback’lerde Authorization başlığı ve oyuncu token’ı yoktur. Çağrıyı yalnız X-Signature doğrular; token’ı yalnız authenticate taşır.
- `session_id` ile eşleyin: authenticate isteği token ile session_id’yi birlikte getirir. Cüzdanınız token’a bağlıysa o anda session_id → token / oyuncu eşlemesini saklayın. balance, bet, win ve rollback aynı session_id’yi, launch’taki player_id’yi ve site_id’yi taşır.
- Oturum kapanmış olabilir: win ve rollback oturumunuz veya token’ınız düştükten sonra da gelir; session_id artık canlı değil diye reddetmeyin. Oyuncuyu player_id ile bulun.
- Ters vekil ve taban yol: İmza, Boss Hub’ın çağırdığı adresin tam yolu üzerindendir: callback adresiniz https://casino.example.com/bossgaming ise bahis /bossgaming/bet üzerinden imzalanır. Önünüzdeki vekil, API ağ geçidi veya çatı uygulamanın bağlama noktası öneki kesip uygulamanıza /bet iletiyorsa imzayı /bossgaming/bet ile yeniden kurun (önek ayarınızdan veya X-Forwarded-Prefix’ten) ya da öneki korumasını sağlayın. Boss Hub callback’e sorgu dizesi eklemez; alan adı imzaya girmez.
Tekrar takvimi
| Deneme | Zaman | Not |
|---|---|---|
| 1 | T0 | İlk çağrı |
| 2 | T0 + 30 sn | |
| 3 | T0 + 2 dk | |
| 4 | T0 + 10 dk | Bu da başarısızsa tur takılı olur, mutabakat kalemi açılır ve round.stuck gönderilir; tekrar sürer |
| 5 | T0 + 30 dk | Son deneme. Sonrası portaldan veya API’den elle çözüm |
Her denemede gövde ve X-Request-Id aynıdır; yalnız X-Timestamp ile X-Signature değişir. Takvim içinde OK gelirse takılı kayıt kendiliğinden kapanır.
Sıfır kazanç
Turun hiçbir kazancı round_closed: true taşımadıysa Boss Hub tur kapanırken amount: 0 ve round_closed: true ile bir kazanç gönderir. Bu en iyi çaba bildirimidir: bakiye değişmez, OK dönün. Yanıtınız turu ve faturayı etkilemez: reddedilirse tekrar edilmez, belirsiz kalırsa takvimle tekrar edilir ve sonunda kalem açılmadan düşer.
Bahissiz kazanç
Bir win, sizde beti olmayan bir round_id ile gelebilir. Bunu reddetmeyin, kazanç gibi ekleyin; idempotency yine transaction_id iledir. Bahissiz kazanç iki durumda gelir: promosyon kredisi (aşağıda) ve sağlayıcının kendi yürüttüğü free round (Boss Hub kampanyası dışında, örneğin sağlayıcının oyun içinde verdiği dönüşler). İkincisinde tur Boss Hub’da doğrudan kapalı açılır: is_freeround: true, campaign_id: null, freeround_grant_id yok ve kampanya kazanç tavanı uygulanmaz.
{
"transaction_id": "tx_01HF3M2C7D-w1",
"round_id": "rnd_01HF3M2C7D",
"session_id": "ses_01HF3K7M",
"site_id": "site_mrd01",
"player_id": "u_88213",
"game_id": "sultans-ember",
"amount": 3.40,
"currency": "USD",
"is_freeround": true,
"campaign_id": null,
"jackpot": null,
"promo": null,
"round_closed": true,
"created_at": "2026-11-05T14:25:41.902Z"
}Promosyon kredisi
Turnuva ödülü gibi promosyon kredileri de bu uçtan gelir. Promosyon kredisi bahissiz bir turda gelir: promo doludur, round_closed: true, is_freeround: false, jackpot: null. Tutarı kazanç gibi oyuncunun bakiyesine ekleyin. Aynı ödül için tek transaction_id gelir; idempotency, tekrar takvimi ve takılı tur kuralları aynıdır. Promosyon kredisi GGR’a ve faturaya girmez, günlük mutabakatta kazançlara sayılır.
Elle ödeme
Takılı bir kazancı elle ödeyecekseniz önce portalda Çöz deyin. Kilit açılınca tutarı aynı `transaction_id` ile kendi defterinize işleyin, sonra operatör ödedi seçin. Başka bir kimlik kullanırsanız geç gelen win ikinci kez ödenir.
Hata kodları
| Kod | Anlam | Boss Hub davranışı |
|---|---|---|
| PLAYER_BLOCKED | Oyuncu kısıtlı / self-exclusion | Tekrar yok, tur takılı olur (win_rejected). Engel kalkınca aynı kimlikle yeniden gönderilebilir |
| LIMIT_EXCEEDED | Sorumlu oyun limiti aşıldı | Tekrar yok, tur takılı olur (win_rejected) |
| INVALID_TOKEN | Sözleşme ihlali: win token yüzünden reddedilmez | Tekrar yok, tur takılı olur (win_rejected) |
| INSUFFICIENT_FUNDS | Sözleşme dışı: kazanç bakiye yüzünden reddedilmez | Tekrar yok, tur takılı olur (win_rejected) |
| TRANSACTION_ROLLED_BACK | Bu işlem için iptal kaydınız var | Reddedilmiş sayılır, tur takılı olur (win_rejected), uyarı üretilir |
| DUPLICATE_TRANSACTION | Aynı işlem farklı içerikle | Takvim durur, manuel incelemeye düşer (duplicate_conflict) |
| INVALID_SIGNATURE | İmza doğrulanamadı | Belirsiz sayılır: takvim sürer, alarm üretilir. Secret döndürme kazancı kaybettirmez |
| INTERNAL_ERROR | Operatör hatası | Belirsiz sayılır: takvim sürer |
Önceki bir deneme belirsiz kaldıysa reddiniz de belirsiz sayılır ve takvim sürer. Tüm yanıtların sınıflandırması: Hata kodları.