Product API সিঙ্গেল ওয়ালেট বনাম ট্রান্সফার ওয়ালেট
সিঙ্গেল ওয়ালেট বনাম ট্রান্সফার ওয়ালেট
অপারেটরের প্লেয়ার ব্যালান্সকে ক্যাসিনো গেম API-র সঙ্গে যুক্ত করতে ব্যবহৃত দুটি ওয়ালেট মডেলের টেকনিক্যাল তুলনা: টাকা কে রাখে, বেটের সময় নেটওয়ার্কে কোন কল যায়, ত্রুটি কীভাবে সামলানো হয়, এবং আপনার দিকে কী তৈরি করতে হবে।
এক নজরে
| বিষয় | সিঙ্গেল ওয়ালেট | ট্রান্সফার ওয়ালেট |
|---|---|---|
| ব্যালান্স কার কাছে | একমাত্র ব্যালান্স আপনার ডেটাবেসে থাকে। প্রোভাইডার কখনো প্লেয়ারের টাকা রাখে না। | প্রোভাইডার আলাদা একটি গেম ব্যালান্স রাখে। ট্রান্সফার কলের মাধ্যমে টাকা ঢোকে ও বের হয়। |
| বেটের সময় কল | প্রতিটি বেট ও জয়ে আপনার কাছে সার্ভার-থেকে-সার্ভার কলব্যাক আসে (balance, debit, credit, rollback)। | কোনোটি নয়। গেম প্রোভাইডারের দিকের ব্যালান্সে চলে। কল হয় শুধু ট্রান্সফার ইন ও আউটে। |
| প্রয়োজনীয় প্রাপ্যতা | আপনার ওয়ালেট এন্ডপয়েন্টকে প্রতিটি কলব্যাকের উত্তর দিতে হবে, সাধারণত কয়েকশো মিলিসেকেন্ডের মধ্যে। এগুলো বন্ধ থাকলে খেলা থেমে যায়। | শুধু ট্রান্সফারের জন্য দরকার। আপনার সিস্টেম কিছুক্ষণ অফলাইন থাকলেও রাউন্ড চলতে থাকে। |
| সামঞ্জস্য মডেল | আপনার লেজারই রিয়েল-টাইম সত্যের উৎস। শুধু গেম রাউন্ডের রিকনসিলিয়েশন দরকার, ব্যালান্সের নয়। | দুটি লেজার যা শুধু ট্রান্সফারের সীমায় মেলে। ট্রান্সফার স্তরে রিকনসিলিয়েশন দরকার। |
| ত্রুটি পুনরুদ্ধার | টাইমআউট সমাধান হয় ট্রানজ্যাকশন ID ধরে আইডেমপোটেন্ট রিট্রাই ও rollback কলের মাধ্যমে। | ট্রান্সফার দুই ধাপের: পেন্ডিং, তারপর সফল বা ব্যর্থ। একটি স্ট্যাটাস কোয়েরি অজানা ফলাফল নিশ্চিত করে। |
| ইন্টিগ্রেশনের পরিশ্রম | বেশি। আপনি আইডেমপোটেন্সি ও লেজারসহ একটি লো-ল্যাটেন্সি কলব্যাক সার্ভিস তৈরি ও পরিচালনা করেন। | কম। আপনি তিন-চারটি REST এন্ডপয়েন্ট কল করেন, সুরক্ষিত বা স্কেল করার মতো কোনো ইনবাউন্ড ট্রাফিক নেই। |
| প্লেয়ারের অভিজ্ঞতা | একটি ব্যালান্স, কোনো ট্রান্সফার ধাপ নেই। বোনাস, ক্রস-প্রোডাক্ট খেলা ও লাইভ ব্যালান্স দেখানোর জন্য উপযুক্ত। | খেলার আগে টাকা ঢোকানো হয় এবং পরে বের করা হয়। এতে সামান্য দেরি হয় এবং প্লেয়ার সেশনের মাঝখানে চলে গেলে ব্যালান্স আটকে থাকার ঝুঁকি থাকে। |
| সাধারণত উপযুক্ত | যেসব অপারেটরের নিজস্ব ওয়ালেট বা প্ল্যাটফর্ম আছে এবং টাকা ও প্রোমোশনের ওপর কড়া নিয়ন্ত্রণ চান। | যেসব অপারেটর দ্রুত লঞ্চ চান বা যাদের রিয়েল-টাইম ওয়ালেট সার্ভিস নেই। |
সিঙ্গেল ওয়ালেট (seamless)
সিঙ্গেল ওয়ালেট (seamless) মডেলে আপনার সিস্টেমই ওয়ালেট। প্লেয়ার বেট করলে SSG API আপনার কলব্যাক এন্ডপয়েন্ট কল করে, আপনি নিজের লেজারে ব্যালান্স বদলান এবং নতুন ব্যালান্স দিয়ে উত্তর দেন। টাকা কখনো আপনার ডেটাবেস ছেড়ে যায় না।
কল ফ্লো
- লঞ্চ: আপনার ব্যাকএন্ড প্লেয়ার ID ও সেশন টোকেন দিয়ে SSG-র কাছে একটি গেম URL চায়।
- বেট: প্রতিটি রাউন্ডে SSG একটি অনন্য txId দিয়ে debit কল করে। আপনি টাকা যাচাই করেন, লেজারে সারি লেখেন এবং নতুন ব্যালান্স ফেরত দেন।
- জয়: SSG একই রাউন্ডের জন্য পেআউটসহ (শূন্যও হতে পারে) credit কল করে।
- ত্রুটি: কোনো কল টাইমআউট হলে SSG একই txId দিয়ে আবার চেষ্টা করে, এবং রিট্রাই সীমার পর rollback পাঠায়।
কলব্যাক মেথড (উদাহরণমূলক)
| মেথড | উদ্দেশ্য | মূল ফিল্ড | আইডেমপোটেন্ট |
|---|---|---|---|
balance | প্লেয়ারের বর্তমান ব্যালান্স ফেরত দেয়। | playerId, currency | হ্যাঁ (শুধু পড়া) |
debit | বেট করে: পরিমাণ বাদ দেয়। | playerId, txId, roundId, gameId, amount, currency | txId অনুযায়ী |
credit | জয় সেটেল করে: পরিমাণ যোগ করে। | playerId, txId, roundId, amount, currency | txId অনুযায়ী |
rollback | ত্রুটির পর আগের debit বা credit বাতিল করে। | txId, refTxId | txId অনুযায়ী |
উদাহরণ debit অনুরোধ
{
"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))"
}উদাহরণ রেসপন্স
{
"status": "OK",
"txId": "tx_20261007_000184",
"balance": "97.50",
"currency": "MYR"
}
// errors: INSUFFICIENT_FUNDS, PLAYER_NOT_FOUND,
// DUPLICATE_TX (return original result), INTERNAL_ERRORআপনার ওয়ালেট সার্ভিসকে যে নিয়ম মানতে হবে
- আইডেমপোটেন্সি
- একই txId দিয়ে পুনরাবৃত্ত debit বা credit মূল ফলাফলই ফেরত দেবে এবং আবার টাকা সরাবে না। txId-এ একটি ইউনিক ইনডেক্স দিয়ে এটি নিশ্চিত করুন।
- অ্যাটমিক লেজার রাইট
- ব্যালান্স যাচাই, লেজার সারি যোগ ও ব্যালান্স আপডেট একটি ডেটাবেস ট্রানজ্যাকশনে করুন, যাতে একসঙ্গে দুটি বেট কখনো ব্যালান্স ঋণাত্মক করতে না পারে।
- debit-এর আগে rollback
- মূল debit টাইমআউট হওয়ায় আপনি কখনো দেখেননি এমন txId-এর জন্য rollback আসতে পারে। একটি টম্বস্টোন রাখুন যাতে সেই txId-এর দেরিতে আসা debit প্রত্যাখ্যান হয়।
- ল্যাটেন্সি বাজেট
- নেটওয়ার্কসহ p99 500 ms-এর নিচে রাখার লক্ষ্য রাখুন। কলব্যাক পথে একটি ইনডেক্সড রিড ও একটি রাইট রাখুন, এবং রিপোর্টিং কোয়েরি এই পথ থেকে দূরে রাখুন।
- টাকার ফরম্যাট
- পরিমাণকে ডেসিমাল স্ট্রিং বা পূর্ণসংখ্যার মাইনর ইউনিট হিসেবে ধরুন। কখনো ফ্লোটিং পয়েন্ট ব্যবহার করবেন না, এবং প্লেয়ার অ্যাকাউন্টের সঙ্গে মুদ্রা যাচাই করুন।
- বোনাস ও ফ্রি স্পিন
- একটি ফ্রি স্পিন হলো 0 পরিমাণের debit, তারপর জয়ের credit। লেজারে প্রোমোশনাল ব্যালান্স নগদ ব্যালান্স থেকে আলাদা রাখুন।
- নিরাপত্তা
- ক্যানোনিকাল অনুরোধের ওপর HMAC-SHA256 স্বাক্ষর যাচাই করুন, পুরোনো টাইমস্ট্যাম্প প্রত্যাখ্যান করুন, SSG-র সোর্স IP অনুমোদিত তালিকায় রাখুন এবং TLS 1.2 বা তার বেশি বাধ্যতামূলক করুন।
- রিকনসিলিয়েশন
- SSG-র দৈনিক রাউন্ড রিপোর্ট roundId ধরে আপনার লেজারের সঙ্গে মেলান। পার্থক্য থাকলে বোঝা যায় কোনো কলব্যাক বা rollback হারিয়েছে।
ট্রান্সফার ওয়ালেট
ট্রান্সফার ওয়ালেট মডেলে প্রোভাইডার প্রতিটি প্লেয়ারের জন্য একটি গেম ব্যালান্স রাখে। আপনার ব্যাকএন্ড খেলার আগে টাকা ঢোকায় এবং পরে বের করে। খেলার সময় আপনার সিস্টেমে কোনো কলব্যাক আসে না, তাই শুধু আউটবাউন্ড REST কল দরকার।
কল ফ্লো
- ট্রান্সফার ইন: আপনার ব্যাকএন্ড একটি অনন্য txId ও পরিমাণ দিয়ে transferIn কল করে। ফলাফল PENDING বা SUCCESS।
- খেলা: গেম চালু করুন। সব বেট ও জয় আপনার কাছে কোনো কলব্যাক ছাড়াই প্রোভাইডারের দিকের ব্যালান্স বদলায়।
- ট্রান্সফার আউট: প্লেয়ার চলে গেলে পুরো ব্যালান্সের জন্য transferOut কল করুন এবং SUCCESS হলে নিজের লেজারে ফেরত জমা করুন।
- অজানা ফলাফল: কোনো ট্রান্সফার কল টাইমআউট হলে অন্য কিছু করার আগে একই txId দিয়ে getTransferStatus কোয়েরি করুন।
API মেথড (উদাহরণমূলক)
| মেথড | উদ্দেশ্য | মূল ফিল্ড | আইডেমপোটেন্ট |
|---|---|---|---|
transferIn | আপনার ওয়ালেট থেকে প্লেয়ারের গেম ব্যালান্সে টাকা সরায়। | playerId, txId, amount, currency | txId অনুযায়ী |
transferOut | গেম ব্যালান্স থেকে আপনার ওয়ালেটে টাকা ফেরত সরায়। | playerId, txId, amount | all | txId অনুযায়ী |
getBalance | প্লেয়ারের গেম ব্যালান্স পড়ে। | playerId | হ্যাঁ (শুধু পড়া) |
getTransferStatus | একটি txId-এর জন্য PENDING, SUCCESS বা FAILED ফেরত দেয়। | txId | হ্যাঁ (শুধু পড়া) |
আপনার ব্যাকএন্ডকে যে নিয়ম মানতে হবে
- প্রতিটি উদ্দেশ্যে একটি txId
- প্রথম কলের আগে txId তৈরি করুন এবং প্রতিটি রিট্রাইতে সেটিই ব্যবহার করুন। আগেরটির স্ট্যাটাস না জানা পর্যন্ত কখনো নতুন txId তৈরি করবেন না।
- আগে আপনার লেজার থেকে বাদ দিন
- ট্রান্সফার ইনের জন্য SSG-কে কল করার আগে লেজারে পরিমাণটি রিজার্ভ করুন, তারপর স্ট্যাটাস চূড়ান্ত হলে নিশ্চিত বা মুক্ত করুন।
- আটকে থাকা ব্যালান্স সরিয়ে নিন
- এমন একটি জব চালান যা গেম ব্যালান্স আছে কিন্তু সক্রিয় সেশন নেই এমন প্লেয়ার খুঁজে ব্যালান্স ট্রান্সফার আউট করে। এতে সেশনের মাঝে ব্রাউজার বন্ধ করা প্লেয়াররাও কভার হন।
- ওয়েজারিং ও রিপোর্ট
- যেহেতু আপনি লাইভ বেট দেখেন না, টার্নওভার, বোনাস ওয়েজারিং ও রিস্ক লিমিট কলব্যাক থেকে নয়, SSG থেকে নেওয়া রাউন্ড রিপোর্ট থেকে হিসাব করুন।
- রিকনসিলিয়েশন
- প্রতিটি ট্রান্সফার ইন ও আউট txId ধরে SSG-র রেকর্ডের সঙ্গে মেলান, এবং আপনার টাইমআউটের চেয়ে পুরোনো যেকোনো PENDING-এ অ্যালার্ট দিন।
- নিরাপত্তা
- অনুরোধ HMAC-SHA256 দিয়ে স্বাক্ষর করুন, শুধু TLS 1.2 বা তার বেশিতে কল করুন, API কি একটি সিক্রেট স্টোরে রাখুন, এবং আপনার কোন সার্ভার SSG-কে কল করতে পারবে তা সীমিত করুন।
ত্রুটির পরিস্থিতি
| পরিস্থিতি | সিঙ্গেল ওয়ালেট | ট্রান্সফার ওয়ালেট |
|---|---|---|
| নেটওয়ার্ক টাইমআউট | বেটের সময় SSG একই txId দিয়ে আবার চেষ্টা করে, তারপর রিট্রাই সীমার পর rollback পাঠায়। আপনাকে আইডেমপোটেন্ট হতে হবে। | শুধু ট্রান্সফার প্রভাবিত হয়। একই txId দিয়ে getTransferStatus কোয়েরি করুন, তারপর ব্যবস্থা নিন। |
| আপনার সিস্টেম বন্ধ | প্লেয়াররা রাউন্ড শুরু বা চালিয়ে যেতে পারেন না। খোলা রাউন্ড রোলব্যাক হয়। | প্লেয়াররা বিদ্যমান গেম ব্যালান্স দিয়ে খেলতে থাকেন। নতুন ট্রান্সফার বন্ধ থাকে। |
| ডুপ্লিকেট অনুরোধ | সেই txId-এর সংরক্ষিত রেসপন্স ফেরত দিন এবং কিছুই বদলাবেন না। | সেই txId-এর সংরক্ষিত ফলাফল ফেরত দিন এবং কিছুই বদলাবেন না। |
| রাউন্ডের মাঝে প্লেয়ার সংযোগ হারান | রাউন্ড প্রোভাইডারের কাছে শেষ হয় এবং credit স্বাভাবিকভাবে পাঠানো হয়। | রাউন্ড শেষ হয় এবং ট্রান্সফার আউট বা সুইপ জব না হওয়া পর্যন্ত টাকা গেম ব্যালান্সে থাকে। |
| ব্যালান্সের অমিল | সাধারণত হারানো কলব্যাক বা rollback। roundId ধরে রাউন্ড রিপোর্ট মিলিয়ে পাওয়া যায়। | সাধারণত আটকে থাকা বা পেন্ডিং ট্রান্সফার। txId ধরে ট্রান্সফার মিলিয়ে পাওয়া যায়। |
কোনটি বেছে নেবেন
সিঙ্গেল ওয়ালেট বেছে নিন যদি
- আপনি আগে থেকেই একটি রিয়েল-টাইম ওয়ালেট বা লেজার সার্ভিস চালান।
- স্পোর্টসবুক, ক্যাসিনো ও প্রোমোশনে একটি ব্যালান্স দরকার।
- রিস্ক, বোনাস ওয়েজারিং বা রেসপন্সিবল গেমিং লিমিটের জন্য লাইভ বেট ডেটা দরকার।
- আপনার টিম উচ্চ প্রাপ্যতাসহ একটি লো-ল্যাটেন্সি সার্ভিস চালাতে পারে।
ট্রান্সফার ওয়ালেট বেছে নিন যদি
- সবচেয়ে কম ইঞ্জিনিয়ারিংয়ে দ্রুত লঞ্চ চান।
- আপনার এখনো রিয়েল-টাইম ওয়ালেট সার্ভিস নেই।
- সুরক্ষিত করার মতো কোনো পাবলিক কলব্যাক ছাড়া শুধু আউটবাউন্ড কল পছন্দ করেন।
- অল্প সময়ের জন্য আটকে থাকা ব্যালান্স গ্রহণযোগ্য এবং আপনি একটি সুইপ জব চালাতে পারেন।
অনেক অপারেটর গো-লাইভের জন্য ট্রান্সফার ওয়ালেট দিয়ে শুরু করেন, তারপর নিজের ওয়ালেট সার্ভিস প্রস্তুত হলে সিঙ্গেল ওয়ালেটে যান। পরিবর্তনটি কীভাবে ধাপে ধাপে হয় আমাদের জিজ্ঞেস করুন।
ইন্টিগ্রেশন চেকলিস্ট
- txId-এ ইউনিক ইনডেক্স এবং টাকা সরানো প্রতিটি কলের জন্য আইডেমপোটেন্ট হ্যান্ডলার
- HMAC স্বাক্ষর যাচাই, টাইমস্ট্যাম্প টলারেন্স ও IP অনুমোদিত তালিকা
- ডেসিমাল-নিরাপদ পরিমাণ ও মুদ্রা যাচাই
- স্যান্ডবক্সে টাইমআউট, রিট্রাই ও rollback টেস্ট, দেরিতে আসা রিট্রাইসহ
- roundId (সিঙ্গেল) বা txId (ট্রান্সফার) ধরে দৈনিক রিকনসিলিয়েশন জব
- মনিটরিং ও অ্যালার্ট: কলব্যাক ল্যাটেন্সি, ত্রুটির হার, পেন্ডিং ট্রান্সফার, আটকে থাকা ব্যালান্স
একজন ইন্টিগ্রেশন ইঞ্জিনিয়ারের সঙ্গে কথা বলুন
আমরা আপনার ইঞ্জিনিয়ারদের স্যান্ডবক্স দেখিয়ে দিতে পারি এবং আপনার প্ল্যাটফর্মের উপযুক্ত মডেল বেছে নিতে সাহায্য করতে পারি। সাত দিনের কমে ইন্টিগ্রেশনের নিশ্চয়তা।
সেলস টিমকে ইমেইল করুন Telegram-এ চ্যাট করুন Product API-তে ফিরুন
sales@ssggaming.com