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
| Aspeto | Single wallet | Transfer wallet |
|---|---|---|
| Custody ng balance | Ang 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 taya | Bawat 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 availability | Dapat 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 model | Ang 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 recovery | Nalulutas 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 integration | Mas 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 player | Isang 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 sa | Mga 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
- Launch: humihingi ang iyong backend sa SSG ng game URL gamit ang player ID at session token.
- 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.
- Panalo: tatawag ang SSG ng credit na may payout (maaaring zero) para sa parehong round.
- 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)
| Method | Layunin | Mga pangunahing field | Idempotent |
|---|---|---|---|
balance | Ibalik ang kasalukuyang balance ng player. | playerId, currency | Oo (read only) |
debit | Maglagay ng taya: bawasan ang halaga. | playerId, txId, roundId, gameId, amount, currency | Ayon sa txId |
credit | I-settle ang panalo: dagdagan ang halaga. | playerId, txId, roundId, amount, currency | Ayon sa txId |
rollback | Kanselahin ang naunang debit o credit pagkatapos ng error. | txId, refTxId | Ayon 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_ERRORMga 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
- Transfer in: tinatawag ng iyong backend ang transferIn gamit ang natatanging txId at ang halaga. Ang resulta ay PENDING o SUCCESS.
- Paglalaro: ilunsad ang laro. Lahat ng taya at panalo ay nagbabago lang sa balance sa panig ng provider at walang callback sa iyo.
- Transfer out: kapag umalis ang player, tawagin ang transferOut para sa buong balance at i-credit ito pabalik sa sarili mong ledger kapag SUCCESS.
- 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)
| Method | Layunin | Mga pangunahing field | Idempotent |
|---|---|---|---|
transferIn | Ilipat ang pondo mula sa iyong wallet papunta sa game balance ng player. | playerId, txId, amount, currency | Ayon sa txId |
transferOut | Ibalik ang pondo mula sa game balance papunta sa iyong wallet. | playerId, txId, amount | all | Ayon sa txId |
getBalance | Basahin ang game balance ng player. | playerId | Oo (read only) |
getTransferStatus | Ibalik ang PENDING, SUCCESS o FAILED para sa isang txId. | txId | Oo (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
| Senaryo | Single wallet | Transfer wallet |
|---|---|---|
| Network timeout | Habang 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 system | Hindi 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 request | Ibalik 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 round | Natatapos 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 balance | Karaniwan 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