SSG Gaming

Product API Single wallet vs transfer wallet

Single wallet kumpara sa transfer wallet

Teknikal na paghahambing ng dalawang wallet model na ginagamit upang ikonekta ang balance ng player ng operator sa isang casino game API: sino ang may hawak ng pera, aling mga call ang dumadaan sa network habang may taya, paano nare-recover ang mga failure, at ano ang kailangan mong buuin sa iyong panig.

Sa isang sulyap

AspetoSingle walletTransfer wallet
Custody ng balanceAng iyong database lang ang may hawak ng balance. Hindi kailanman nag-iingat ng pondo ng player ang provider.May hiwalay na game balance ang provider. Ang pondo ay inililipat papasok at palabas gamit ang mga transfer call.
Mga call habang may tayaBawat taya at panalo ay nagti-trigger ng server-to-server callback sa iyo (balance, debit, credit, rollback).Wala. Tumatakbo ang laro sa balance na nasa panig ng provider. May call lang kapag may transfer in at out.
Kinakailangang availabilityDapat sagutin ng iyong mga wallet endpoint ang bawat callback, karaniwan sa loob ng ilang daang milliseconds. Kapag down ang mga ito, hihinto ang laro.Kailangan lang para sa mga transfer. Tuloy ang mga round kahit saglit na offline ang iyong sistema.
Consistency modelAng iyong ledger ang real-time na source of truth. Mga game round lang ang kailangang i-reconcile, hindi ang mga balance.Dalawang ledger na nagtutugma lang sa mga hangganan ng transfer. Kailangan ng reconciliation sa antas ng transfer.
Failure recoveryNalulutas ang mga timeout sa pamamagitan ng idempotent retry at rollback call na naka-key sa transaction ID.Dalawang yugto ang mga transfer: pending, saka success o failed. Nilulutas ng status query ang mga hindi tiyak na resulta.
Hirap ng integrationMas mataas. Ikaw ang bubuo at magpapatakbo ng low-latency na callback service na may idempotency at ledger.Mas mababa. Tatlo o apat na REST endpoint lang ang tatawagin mo, nang walang inbound traffic na kailangang i-secure o i-scale.
Karanasan ng playerIsang balance lang, walang transfer step. Bagay sa mga bonus, cross-product play at live na pagpapakita ng balance.Inililipat ang pondo papasok bago maglaro at palabas pagkatapos. May kaunting delay ito at may panganib na maiwan ang balance kung aalis ang player sa gitna ng session.
Karaniwang angkop para saMga operator na may sariling wallet o platform at mahigpit na kontrol sa pondo at promosyon.Mga operator na gustong mag-launch nang mabilis o walang real-time na wallet service.

Single wallet (seamless)

Sa single wallet (seamless) model, ang iyong sistema ang wallet. Kapag naglagay ng taya ang player, tatawagin ng SSG API ang iyong callback endpoint, babaguhin mo ang balance sa sarili mong ledger, at sasagot ka ng bagong balance. Hindi kailanman lalabas sa iyong database ang pondo.

Call flow

PlayerOperatorSSG APIloop1. open game2. launch(playerId, token)3. launchUrl4. spin5. debit(txId, roundId, amount)6. OK, balance7. credit(txId, roundId, win)8. OK, balance9. rollback(txId) [on timeout]
  1. Launch: humihingi ang iyong backend sa SSG ng game URL gamit ang player ID at session token.
  2. Taya: sa bawat round, tatawag ang SSG ng debit na may natatanging txId. Susuriin mo ang pondo, isusulat ang ledger row at ibabalik ang bagong balance.
  3. Panalo: tatawag ang SSG ng credit na may payout (maaaring zero) para sa parehong round.
  4. Failure: kung mag-timeout ang isang call, magre-retry ang SSG gamit ang parehong txId, at pagkatapos ng retry limit ay magpapadala ito ng rollback.

Mga callback method (ilustratibo)

MethodLayuninMga pangunahing fieldIdempotent
balanceIbalik ang kasalukuyang balance ng player.playerId, currencyOo (read only)
debitMaglagay ng taya: bawasan ang halaga.playerId, txId, roundId, gameId, amount, currencyAyon sa txId
creditI-settle ang panalo: dagdagan ang halaga.playerId, txId, roundId, amount, currencyAyon sa txId
rollbackKanselahin ang naunang debit o credit pagkatapos ng error.txId, refTxIdAyon sa txId

Halimbawang debit request

{
  "method": "debit",
  "playerId": "p_839201",
  "txId": "tx_20261007_000184",
  "roundId": "r_77f3a1",
  "gameId": "slots_fruit_01",
  "currency": "MYR",
  "amount": "2.50",
  "ts": 1791338577,
  "sign": "hex(HMAC-SHA256(secret, canonical))"
}

Halimbawang response

{
  "status": "OK",
  "txId": "tx_20261007_000184",
  "balance": "97.50",
  "currency": "MYR"
}
// errors: INSUFFICIENT_FUNDS, PLAYER_NOT_FOUND,
//         DUPLICATE_TX (return original result), INTERNAL_ERROR

Mga patakarang dapat sundin ng iyong wallet service

Idempotency
Ang paulit-ulit na debit o credit na may parehong txId ay dapat magbalik ng orihinal na resulta at hindi dapat maglipat muli ng pera. Tiyakin ito gamit ang unique index sa txId.
Atomic na pagsulat sa ledger
Gawin sa iisang database transaction ang pagsuri ng balance, pagpasok ng ledger row at pag-update ng balance, upang hindi kailanman ma-overdraw ng dalawang magkasabay na taya.
Rollback bago ang debit
Maaaring dumating ang rollback para sa txId na hindi mo pa nakikita dahil nag-timeout ang orihinal na debit. Mag-imbak ng tombstone upang tanggihan ang huling dumating na debit na may parehong txId.
Latency budget
Targetin ang p99 na mas mababa sa 500 ms kasama ang network. Panatilihing isang indexed read at isang write lang ang callback path, at huwag isama rito ang mga reporting query.
Format ng halaga
Ituring ang mga halaga bilang decimal string o integer minor unit. Huwag gumamit ng floating point, at i-validate ang currency laban sa account ng player.
Mga bonus at free spin
Ang free spin ay isang debit na 0 na sinusundan ng credit ng panalo. Ihiwalay ang promotional balance sa cash balance sa iyong ledger.
Seguridad
I-verify ang HMAC-SHA256 signature sa canonical request, tanggihan ang mga lumang timestamp, i-allowlist ang mga source IP ng SSG, at hingin ang TLS 1.2 o mas mataas.
Reconciliation
Ihambing ang mga daily round report mula sa SSG sa iyong ledger gamit ang roundId. Ang mga pagkakaiba ay nagpapahiwatig ng mga na-miss na callback o rollback.

Transfer wallet

Sa transfer wallet model, ang provider ang may hawak ng game balance ng bawat player. Inililipat ng iyong backend ang pondo papasok bago maglaro at palabas pagkatapos. Habang naglalaro, walang callback sa iyong system, kaya outbound REST call lang ang kailangan mo.

Call flow

PlayerOperatorSSG APIplay1. transferIn(txId, amount)2. PENDING or SUCCESS3. launch(playerId)4. launchUrl5. spin (no callbacks to Operator)6. getBalance(playerId)7. balance8. transferOut(txId, all)9. SUCCESS, amount
  1. Transfer in: tinatawag ng iyong backend ang transferIn gamit ang natatanging txId at ang halaga. Ang resulta ay PENDING o SUCCESS.
  2. Paglalaro: ilunsad ang laro. Lahat ng taya at panalo ay nagbabago lang sa balance sa panig ng provider at walang callback sa iyo.
  3. Transfer out: kapag umalis ang player, tawagin ang transferOut para sa buong balance at i-credit ito pabalik sa sarili mong ledger kapag SUCCESS.
  4. Hindi alam ang resulta: kung nag-timeout ang transfer call, i-query ang getTransferStatus gamit ang parehong txId bago gumawa ng anumang iba.

Mga API method (halimbawa)

MethodLayuninMga pangunahing fieldIdempotent
transferInIlipat ang pondo mula sa iyong wallet papunta sa game balance ng player.playerId, txId, amount, currencyAyon sa txId
transferOutIbalik ang pondo mula sa game balance papunta sa iyong wallet.playerId, txId, amount | allAyon sa txId
getBalanceBasahin ang game balance ng player.playerIdOo (read only)
getTransferStatusIbalik ang PENDING, SUCCESS o FAILED para sa isang txId.txIdOo (read only)

Mga panuntunang dapat sundin ng iyong backend

Isang txId bawat intent
Gumawa ng txId bago ang unang call at gamitin ito muli sa bawat retry. Huwag gumawa ng bagong txId hangga't hindi alam ang status ng nauna.
I-debit muna ang iyong ledger
Para sa transfer in, i-reserve ang halaga sa iyong ledger bago tawagin ang SSG, pagkatapos ay i-confirm o i-release ito kapag final na ang status.
I-sweep ang mga naiwang balance
Magpatakbo ng job na naghahanap ng mga player na may game balance at walang aktibong session, saka ito itransfer out. Sakop nito ang mga player na nagsara ng browser sa kalagitnaan ng session.
Wagering at mga report
Dahil hindi mo nakikita ang mga taya nang live, kalkulahin ang turnover, bonus wagering at risk limit mula sa mga round report na kinuha sa SSG, hindi mula sa mga callback.
Reconciliation
I-match ang bawat transfer in at out sa mga record ng SSG gamit ang txId, at mag-alert sa anumang PENDING na lampas sa iyong timeout.
Seguridad
I-sign ang mga request gamit ang HMAC-SHA256, tumawag lang sa TLS 1.2 o mas mataas, itago ang mga API key sa secret store, at limitahan kung aling mga server mo ang puwedeng tumawag sa SSG.

Mga failure scenario

SenaryoSingle walletTransfer wallet
Network timeoutHabang may taya, ni-re-retry ng SSG ang parehong txId, saka magpapadala ng rollback pagkatapos ng retry limit. Dapat idempotent ka.Mga transfer lang ang apektado. I-query ang getTransferStatus gamit ang parehong txId, saka kumilos.
Down ang iyong systemHindi makapagsimula o makapagpatuloy ng round ang mga player. Ang mga bukas na round ay ni-rollback.Patuloy na naglalaro ang mga player gamit ang kanilang kasalukuyang game balance. Naka-block ang mga bagong transfer.
Duplicate na requestIbalik ang naka-store na response para sa txId na iyon at huwag magbago ng anuman.Ibalik ang naka-store na resulta para sa txId na iyon at huwag magbago ng anuman.
Na-disconnect ang player sa gitna ng roundNatatapos ang round sa provider at ipinapadala ang credit gaya ng dati.Natatapos ang round at nananatili ang pondo sa game balance hanggang sa transfer out o sweep job.
Hindi tugma ang balanceKaraniwan ay na-miss na callback o rollback. Natutukoy sa paghahambing ng mga round report gamit ang roundId.Karaniwan ay naiwan o pending na transfer. Natutukoy sa paghahambing ng mga transfer gamit ang txId.

Alin ang dapat mong piliin

Piliin ang single wallet kung

  • Mayroon ka nang real-time na wallet o ledger service.
  • Kailangan mo ng iisang balance para sa sportsbook, casino at promosyon.
  • Kailangan mo ng live na bet data para sa risk, bonus wagering o responsible-gaming limit.
  • Kaya ng iyong team na magpatakbo ng low-latency na service na may mataas na availability.

Piliin ang transfer wallet kung

  • Gusto mong mag-launch nang mabilis na may pinakakaunting engineering.
  • Wala ka pang real-time na wallet service.
  • Mas gusto mo ang outbound call lang, na walang pampublikong callback na kailangang i-secure.
  • Katanggap-tanggap ang maiikling panahon ng naiwang balance at kaya mong magpatakbo ng sweep job.

Maraming operator ang nagsisimula sa transfer wallet para mag-go live, saka lumilipat sa single wallet kapag handa na ang sarili nilang wallet service. Itanong sa amin kung paano isinasagawa nang paunti-unti ang paglipat.

Integration checklist

  • Unique index sa txId at idempotent handler para sa bawat call na gumagalaw ng pera
  • HMAC signature check, timestamp tolerance at IP allowlist
  • Decimal-safe na mga halaga at currency validation
  • Mga test sa timeout, retry at rollback sa sandbox, kasama ang late retry
  • Daily reconciliation job gamit ang roundId (single) o txId (transfer)
  • Monitoring at mga alert: callback latency, error rate, pending transfer, naiwang balance

Makipag-usap sa integration engineer

Maaari naming gabayan ang iyong mga engineer sa sandbox at tulungan kang piliin ang modelong akma sa iyong platform. Garantisadong matatapos ang integration sa loob ng pitong araw.

Mag-email sa sales Mag-chat sa Telegram Bumalik sa Product API

sales@ssggaming.com