ซิงค์กับรายการ
รายการ Hive เป็นระบบที่จัดเตรียมไว้เพื่อจัดการฟังก์ชันการชำระเงิน/การเรียกคืนของสกุลเงินหรือรายการในเกม การรวม Hive ช่วยให้สามารถให้หรือเรียกรายการได้ร่วมกับระบบคูปอง, กิจกรรม, แผนผังข้อเสนอ, CPI เป็นต้น ในสำนักงานหลังบ้านของผู้ดูแลระบบ สามารถให้/เรียกรายการด้วยตนเองหรือค้นหาประวัติได้
Note
- API การขอรับ/กู้คืนรายการ ทำงานในลักษณะอะซิงโครนัสและตอบสนองเพียงการกำหนดความสำเร็จหรือความล้มเหลวของการลงทะเบียนข้อมูลคำขอเมื่อมีการเรียก API.
- การตอบสนองต่อ การดำเนินการประมวลผลจริง เช่น การเรียก API ของเซิร์ฟเวอร์เกมสามารถตรวจสอบได้ในเมนู Hive console ภายใต้การเรียกเก็บเงิน > Hive รายการ > คำขอการขอรับ/กู้คืน หรือ บันทึกความสำเร็จในการขอรับ/กู้คืน โดยการค้นหาสิ่งที่เกี่ยวข้องและคลิกที่ สถานะ ในหน้าต่างป๊อปอัพผลการค้นหา.
- รายการ Hive ต้องการการจัดการการจราจรขนาดใหญ่ ดังนั้นหากเวลาในการตอบสนองเฉลี่ยของเซิร์ฟเวอร์แอปของนักพัฒนามากกว่า 0.5 วินาที อาจทำงานในคิวแยกต่างหากแทนที่จะเป็นคิวหลัก ในกรณีนี้อาจเกิดความล่าช้าอย่างมีนัยสำคัญในการประมวลผลการขอรับรายการ เพื่อให้แน่ใจว่าการประมวลผลการขอรับรายการเป็นไปอย่างราบรื่น แนะนำให้รักษา เวลาในการตอบสนองเฉลี่ยของเซิร์ฟเวอร์แอปของนักพัฒนาต่ำกว่า 0.5 วินาที.
ข้อกำหนดการเตรียมการรวม¶
ในการรวมกับ Hive รายการ คุณต้องลงทะเบียน URL เซิร์ฟเวอร์เกมและรายการในเมนู การจัดการรายการ Hive ก่อน
API การขอชำระเงิน/การกู้คืน¶
ตรวจสอบพื้นฐานของ API การขอชำระเงิน/คืนเงิน¶
วิธีการสื่อสาร API¶
- API การขอรับเงินช่วยเหลือ/การกู้คืนให้บริการการสื่อสารสองประเภท: การสื่อสารผ่าน HTTP และการสื่อสารแบบ JSON String ผ่านซ็อกเก็ต.
- มันขอรับเงินช่วยเหลือหรือการกู้คืนในรูปแบบ JSON String จากเซิร์ฟเวอร์เกมไปยัง Hive item.
- เซิร์ฟเวอร์เกมจะส่งผลลัพธ์กลับในรูปแบบ JSON String ไปยัง Hive item.
- ผลลัพธ์การตอบสนองรวมถึงรหัสการประมวลผลและข้อความ.
- JSON String ทั้งหมดต้องเข้ารหัสในรูปแบบ UTF8.
วิธีการสมัครเกม¶
- ก่อนที่บริการจะเปิดใช้งาน เซิร์ฟเวอร์ทดสอบจะถูกใช้เพื่อส่งผลการทดสอบการรวม และหลังจากที่บริการเปิดใช้งาน เซิร์ฟเวอร์การผลิตจะถูกใช้
- แม้ว่าเกมจะเปิดให้บริการแล้ว ก็ต้องรวมเข้ากับเซิร์ฟเวอร์ทดสอบ
- รายการทั้งหมดจะถูกจัดเตรียมผ่านกล่องจดหมาย
- หากต้องการข้อความแสดงผลสำหรับผู้ใช้ในกล่องจดหมาย โปรดดูที่ Request Specification > Request Reason เซิร์ฟเวอร์เกมต้องจัดการข้อความแสดงผลตามแต่ละภาษา
- การขอรายการจะถูกส่งทีละรายการต่อผู้ใช้ การขอหลายรายการเพื่อมอบ/ดึงรายการสามารถส่งได้พร้อมกัน แต่การขอเดียวต้องได้รับการประมวลผลภายในธุรกรรมเดียว หากการมอบ/ดึงรายการหนึ่งรายการล้มเหลว ให้ดำเนินการตอบกลับด้วยความล้มเหลหลังจากการย้อนกลับทั้งหมด
การปล่อยไฟร์วอลล์เซิร์ฟเวอร์เกม¶
ในการสื่อสารกับเซิร์ฟเวอร์ คุณต้องปิดกฎไฟร์วอลล์ขาเข้าสำหรับ IP ด้านล่างบนเซิร์ฟเวอร์เกม
- 52.79.76.25
- 3.37.22.75
- 43.133.238.219 (เซิร์ฟเวอร์แซนด์บ็อกซ์)
การตรวจสอบสุขภาพเซิร์ฟเวอร์เกม¶
Hive รายการส่งรายละเอียดต่อไปนี้ไปยัง API ขออนุญาต/เพิกถอนเพื่อตรวจสอบสถานะของเซิร์ฟเวอร์เกม เซิร์ฟเวอร์รายการ Hive จะส่งสิ่งนี้ไปยังเซิร์ฟเวอร์เกมสองครั้งในช่วงเวลา 5 นาทีใน Request Body.
{"transactionId":"","idCategory":"","id":"","detail":[{"action":"","assetCode":"","amount":0}],"reason":""}
เซิร์ฟเวอร์เกมที่รับเนื้อหาข้างต้นอาจพบข้อผิดพลาดในการตรวจสอบความถูกต้อง และในกรณีนี้ ควรตอบสนองด้วยข้อมูลข้อผิดพลาดในฟิลด์รหัสและข้อความของค่าการตอบสนอง Hive รายการไม่ได้กำหนดค่ารหัสเพียงอย่างเดียว หากฟิลด์รหัสและข้อความมีอยู่ เซิร์ฟเวอร์เกมถือว่าปกติ; หากไม่มี เซิร์ฟเวอร์เกมถือว่าอยู่ในสถานะผิดปกติ
การตรวจสอบค่า Apihash¶
เซิร์ฟเวอร์เกมสามารถตรวจสอบข้อมูลที่ได้รับจากเซิร์ฟเวอร์ไอเท็ม Hive ผ่านค่า Apihash
ใน Header ก่อนที่จะตรวจสอบค่าแฮช จำเป็นต้องแปลงข้อมูล Request Body ที่ได้รับจากเซิร์ฟเวอร์ไอเท็ม Hive เป็น JSON encode หรือ unicode (ดูที่ตัวอย่างโค้ด)
โดยการผสมผสานพรีฟิกซ์ของข้อกำหนดการร้องขอและค่าที่แปลงเป็น JSON String (พรีฟิกซ์ + JSON String) จะสร้างค่าแฮชในรูปแบบ SHA1 และค่านี้จะถูกเปรียบเทียบกับค่า Apihash
เพื่อการตรวจสอบ
- ตัวอย่างโค้ด
// Example of a transformed JSON String (add a line and spaces for readability)
{
"transactionId": "123456789",
"idCategory": "player_id",
"id": "1004",
"detail": [
{
"action": "p",
"assetCode": "gem",
"amount": 1
}
],
"reason": "td",
"subReason": "",
"userMessage": "",
"templateMessage": {
"ko": {
"title": "HIVE Item uc9c0uae09 uba54uc138uc9c0 QA ud55cuad6d",
"body": "HIVE Item uc9c0uae09 uba54uc138uc9c0 QA ud55cuad6duc5b4 ub178ucd9c"
}
},
"serverId": "kr",
"additionalinfo": "",
"gameIndex": 539
}
API การขอชำระเงิน/คืนเงิน สำหรับวิธีการสื่อสาร HTTP¶
API การชำระเงิน/การเรียกคืนจะสื่อสารกับเซิร์ฟเวอร์เกม (URL) ที่ตั้งไว้ใน Hive Console > Billing > Items > Item Registration เมนูผ่านโปรโตคอล HTTP และวิธีการส่งข้อมูลคำขอคือ POST.
ข้อกำหนดการร้องขอ (hive item -> game server)¶
HTTP Header : Apihash
- เพื่อยืนยันข้อมูล ให้ส่งค่าแฮชพร้อมกับคีย์ Apihash.
- ใช้ SHA1 สำหรับค่าแฮช (เพิ่มคำนำหน้า !@#COM2US!@# ลงในสตริง JSON ของร่าง)
เนื้อหาคำขอ (Hive item -> เซิร์ฟเวอร์เกม)
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) |
---|---|---|---|
transactionId | ตัวระบุเพื่อแยกแยะคำขอแต่ละรายการ (สำหรับการตรวจสอบคำขอซ้ำ) รายละเอียด | String | M |
idCategory | ประเภทผู้ใช้ Hive (ใช้ค่าคงที่ player_id ) | String | M |
id | รหัสผู้ใช้ Hive (player_id) | String | M |
detail | อาร์เรย์ของวัตถุสำหรับสามรายการด้านล่าง | Array | M |
ㄴaction | ว่าจะอนุญาต/เพิกถอน
| String | M |
ㄴassetCode | รหัสสำหรับรายการที่จะอนุญาต | String | M |
ㄴamount | จำนวนที่จะอนุญาต | Integer | M |
reason | เหตุผลสำหรับคำขอ รายละเอียด | String | M |
subReason | เหตุผลสำหรับคำขอ รายละเอียด | String | O |
serverId | เซิร์ฟเวอร์ที่ผู้ใช้เป้าหมายเชื่อมต่ออยู่ (ตัวระบุเซิร์ฟเวอร์) | String | M |
additionalinfo | ข้อมูลเพิ่มเติมที่ส่งจากไคลเอนต์ไปยังเซิร์ฟเวอร์เกม (ทั้งหมดเป็นตัวพิมพ์เล็ก) (ในรูปแบบ JSON String) | String | O |
duration | ระยะเวลาการเก็บรักษาในกล่องจดหมาย (ไม่จำเป็น) รายละเอียด
| Integer | O |
userMessage | ข้อความการอนุญาตรายการ (ข้อความคงที่) เข้ากันได้กับเกมเก่าที่ไม่ใช้ templateMessage | String | O |
templateMessage | ข้อความที่ตั้งไว้สำหรับข้อความการอนุญาตรายการ คีย์ข้อมูลคือรหัสภาษา ค่าเป็นข้อความ (หัวข้อ) และเนื้อหา (อย่างไรก็ตาม หากมีข้อมูลอยู่ รูปแบบเริ่มต้นคือ Object และหากว่างเปล่าจะแสดงเป็น String ว่าง) | Object | O |
gameIndex | หมายเลขประจำสำหรับแต่ละเกมในศูนย์แอป Hive | Integer | M |
transactionid¶
- มันระบุได้ว่าคำขอได้ถูกประมวลผลแล้วโดย transactionId หรือไม่ (ป้องกันการชำระเงิน/การเก็บเงินซ้ำ)
- ในกรณีที่มีคำขอซ้ำ ค่าการตอบกลับจะระบุรายละเอียดที่เกี่ยวข้อง (ดูที่ข้อกำหนดการตอบกลับ)
เหตุผล¶
Note
รายละเอียดในฟิลด์เหตุผลอาจถูกเพิ่ม/เปลี่ยนแปลงในภายหลัง ดังนั้นเหตุผลสำหรับคำขอนี้ควรใช้เพื่อวัตถุประสงค์ในการอ้างอิงเท่านั้น。
ชื่อฟิลด์ | คำอธิบาย |
---|---|
pe | ข้อผิดพลาดการชำระเงิน |
rge | ข้อผิดพลาดเกมรางวัล |
rcd | ความไม่พอใจของผู้บริโภครางวัล |
rce | ข้อผิดพลาดคูปองรางวัล |
ro | รางวัลต่างประเทศ |
ae | การแลกเปลี่ยนสินทรัพย์ |
e | เหตุการณ์ |
ea | เหตุการณ์อัตโนมัติ |
mc | คูปองจำนวนมาก |
uc | คูปองเฉพาะ |
b | การเรียกเก็บเงิน * HIVE IAP v2 |
lb | การเรียกเก็บเงิน Lebi |
co | Cpi Offerwall |
p | โปรโมชั่น * ใช้เหมือนกันสำหรับ Cross Banner, Offerwall, UA |
sr | รางวัลสตรีมมิ่ง |
tcs | ทดสอบ CS |
tgm | ทดสอบ GM |
tpm | ทดสอบ PM |
tqa | ทดสอบ QA |
td | ทดสอบนักพัฒนา |
tg | ทดสอบตลาด, ธุรกิจ |
tmb | ทดสอบต่างประเทศ (ทดสอบนักพัฒนา) |
re | ดึงข้อมูล ฯลฯ |
rr | ดึงข้อมูลการคืนเงิน |
mr | คำขอจำนวนมาก |
etc | ฯลฯ |
สาเหตุย่อย¶
เหตุผล | เหตุผลย่อย | คำอธิบาย |
---|---|---|
p | รายละเอียดการขอส่งเสริมการขาย | |
1 | CPI แบนเนอร์ทั่วไปข้าม | |
2 | CPA แบนเนอร์ทั่วไปข้าม | |
3 | CPI แบนเนอร์ด้านหน้า | |
4 | CPA แบนเนอร์ด้านหน้า | |
5 | CPI แบนเนอร์ข้อเสนอทั่วไป | |
6 | CPA แบนเนอร์ข้อเสนอทั่วไป | |
7 | CPI แบนเนอร์ข้อเสนอพิเศษ | |
8 | CPA แบนเนอร์ข้อเสนอพิเศษ | |
9 | UA CPI | |
10 | UA CPA | |
11 | UC CPI |
การจำแนกฟีเจอร์โปรโมชั่น
- การโปรโมตข้าม: ผู้ใช้สามารถโฆษณาเกมอื่นในเกมปัจจุบันที่พวกเขากำลังเล่นในรูปแบบของแบนเนอร์และกำแพงข้อเสนอ (สถานีชาร์จฟรี) แบ่งออกเป็นแบนเนอร์ปกติและแบนเนอร์แบบเต็มหน้าจอ
- กำแพงข้อเสนอ: กำแพงข้อเสนอจะแสดงรายการเกมที่ยังไม่ได้ติดตั้งบนอุปกรณ์ของผู้ใช้ในรูปแบบของแบนเนอร์ ผู้ใช้จะได้รับรางวัลเมื่อพวกเขาสัมผัสแบนเนอร์และติดตั้งเกมจากตลาดที่เชื่อมต่อ แบ่งออกเป็นกำแพงข้อเสนอปกติและกำแพงข้อเสนอพิเศษ
- UA/UC: ฟีเจอร์เชิญเกมที่ใช้โซเชียลมีเดียและรหัส QR UA เกี่ยวข้องกับผู้ใช้ที่เชิญและผู้ใช้ที่รับ ในขณะที่ UC รวมเฉพาะผู้ใช้ที่รับ UC สามารถใช้ในระหว่างการลงทะเบียนล่วงหน้า
วิธีการให้รางวัล
- CPI: รางวัลจะถูกมอบให้หลังจากที่เปิดเกมหลังจากการติดตั้ง
- CPA: รางวัลจะถูกมอบให้สำหรับการบรรลุเป้าหมายที่กำหนดระหว่างเกม สำหรับรายละเอียดเพิ่มเติม โปรดตรวจสอบที่ คู่มือการดำเนินการส่งเสริมการขาย
ระยะเวลา¶
- ระยะเวลาที่รายการที่ร้องขอถูกเก็บไว้ในกล่องจดหมายหลังจากออกสามารถตั้งค่าได้เป็นรายบุคคลสำหรับแต่ละรายการในสำนักงานหลัง
- เซิร์ฟเวอร์เกมจัดการในสามกรณีตามสถานการณ์
- หากกุญแจไม่มีอยู่: จะใช้ค่าดีฟอลต์ที่ตั้งโดยเซิร์ฟเวอร์เกม (เช่น การเก็บข้อมูล 7 วันเป็นค่าเริ่มต้น)
- 1~9999: จะใช้หมายเลขที่ระบุเป็นจำนวนวัน (เช่น หากค่าคือ 14 หมายความว่าเก็บข้อมูล 14 วัน)
- -1: จะใช้ค่ามากที่สุดที่สามารถตั้งโดยเซิร์ฟเวอร์เกม (เช่น การเก็บข้อมูลถาวร)
ข้อกำหนดการตอบสนอง (เซิร์ฟเวอร์เกม -> ไอเท็มในรัง)¶
การตอบสนอง (เซิร์ฟเวอร์เกม -> Hive รายการ)
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) |
---|---|---|---|
รหัส | รหัสผลลัพธ์การประมวลผล รายละเอียด | จำนวนเต็ม | M |
ข้อความ | ข้อความผลลัพธ์การประมวลผล | สตริง | M |
- รหัสข้อผิดพลาด
รหัสโค้ด | คำอธิบาย |
---|---|
2xxxx | ไม่มีปัญหากับคำขอ การประมวลผลสำเร็จ |
ㄴ 20000 | ไม่มีปัญหากับคำขอ การประมวลผลสำเร็จ |
ㄴ 20001 | ไม่มีปัญหากับคำขอ ประมวลผลสำเร็จแล้ว (คำขอซ้ำ) หากมี transactionId ที่ประมวลผลปกติอยู่แล้ว |
4xxxx | ข้อผิดพลาดในพารามิเตอร์คำขอ |
ㄴ 40001 | ข้อผิดพลาด JSON ในคำขอ |
ㄴ 40002 | ข้อผิดพลาดแฮช |
ㄴ 40003 | ขาดคีย์พารามิเตอร์ที่จำเป็น |
ㄴ 40004 | ข้อผิดพลาดในประเภทคีย์พารามิเตอร์ที่จำเป็น |
ㄴ 40005 | ค่าพารามิเตอร์ที่จำเป็นว่างเปล่า |
ㄴ 40006 | ค่าพารามิเตอร์ที่จำเป็นไม่ถูกต้อง (เช่น ลบ) |
5xxxx | ข้อผิดพลาดในการประมวลผลของเซิร์ฟเวอร์ |
ㄴ 50001 | ผู้ใช้ที่ไม่มีอยู่ |
ㄴ 50004 | ข้อผิดพลาดในการลงทะเบียน DB |
ㄴ 50005 | ข้อผิดพลาดในพารามิเตอร์ (เช่น รหัสรายการที่ไม่มีอยู่) |
- ตัวอย่างคำขอ
curl -L -v
-d '{"transactionId":"27905","idCategory":"player_id","id":"828292","detail":[{"action":"p","assetCode":"gold","amount":500},{"action":"p","assetCode":"gem","amount":200}],"reason":"td","subReason":"","userMessage":"","templateMessage":{"ko":{"title":"\ud55c\uae00 \uba54\uc138\uc9c0","body":"\ud55c\uae00 \ub0b4\uc6a9"},"en":{"title":"English Message","body":"English Contents"}},"serverId":"GLOBAL","additionalinfo":"{\"character\":1}","gameIndex":539}'
-H "Content-Type: text/html"
-H "Apihash: 54e7a0fc8abfdba398e30213496c2d85ec6e0e06"
https://sandbox-misample.com2us.net/hive/item
- ตัวอย่างคำขอ
> POST /hive/item HTTP/2
> Host: sandbox-misample.com2us.net
> user-agent: curl/7.68.0
> accept: */*
> content-type: text/html
> apihash: 54e7a0fc8abfdba398e30213496c2d85ec6e0e06
> content-length: 447
- ตัวอย่างการตอบกลับ
< HTTP/2 200
< server: nginx
< date: Tue, 12 Jul 2022 11:29:21 GMT
< content-type: application/json; charset=utf-8
<
* Connection #0 to host sandbox-misample.com2us.net left intact
{"status":"200","code":"20001","message":"this request has already been processed"}
ตัวอย่างคำขอ(PHP)
// data request
$data = array(
'transactionId' => '12321',
'idCategory' => 'player_id',
'id' => '828292',
'detail' => array(
array(
'action' => 's',
'assetCode' => 'gold',
'amount' => 500,
),
array(
'action' => 's',
'assetCode' => 'gem',
'amount' => 200,
),
),
'reason' => 'p',
'subReason' => '3',
'userMessage' => '',
'templateMessage' => array(
'ko' => array(
'title' => '한글 메세지',
'body' => '한글 내용'
),
'en' => array(
'title' => 'English Message',
'body' => 'English Contents'
),
),
'serverId' => 'GLOBAL',
'additionalinfo' => '{"character":1}',
'gameIndex' => 539
);
$jsonData = json_encode($data); // convert to JSON
/********************************************************************
Conversion result (add a line and spaces for readability) :
{
"transactionId": "12321",
"idCategory": "player_id",
"id": "828292",
"detail": [
{
"action": "s",
"assetCode": "gold",
"amount": 500
},
{
"action": "s",
"assetCode": "gem",
"amount": 200
}
],
"reason": "p",
"subReason": "3",
"userMessage": "",
"templateMessage": {
"ko": {
"title": "한글 메세지",
"body": "한글 내용"
},
"en": {
"title": "English Message",
"body": "English Contents"
}
},
"serverId": "GLOBAL",
"additionalinfo": "{"character":1}",
"gameIndex": 539
}
********************************************************************/
// set header as application/json & set hash
$hash = sha1('!@#COM2US!@#' . $jsonData);
$header = array(
'Content-type: application/json',
'Apihash: ' . $hash
);
$url = 'http://game.com2us.com/gms.php'; // game server url
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec( $curl );
curl_close( $curl );
// process the result data
$response = json_decode($result);
ตัวอย่างการตอบกลับ (PHP)
// php header declaration
header('Content-type: application/json');
// json Data
$rawData = file_get_contents('php://input');
//confirm Hash value
$hash = sha1('!@#COM2US!@#' . $rawData);
$requestHash = $_SERVER['Apihash'];
if ($requestHash != $hash) {
/*****************************************************************
Process if the hash value differs (optional to use hash)
*****************************************************************/
}
// Decode requested JSON data
$requestData = json_decode($rawData, TRUE);
foreach ($requestData['detail'] as $item) {
/*****************************************************************
Process the asset as requested
*****************************************************************/
}
$returnData = array(
'code' => 50001,
'message' => 'user not exists',
);
//To avoid adding UTF-8BOM
ob_clean()
//Convert to JSON and send the response
echo json_encode($returnData);
/*****************************************************************
Conversion result (insert a line) :
{
"code" : 50001,
"message" : "user not exists"
}
*****************************************************************/
วิธีการสื่อสารผ่านซ็อกเก็ตสำหรับ API การขอชำระเงิน/คืนเงิน¶
API การชำระเงิน/การเรียกคืนที่ใช้ Socket ทำงานบน TCP/IP ซึ่งเป็นโปรโตคอลสำหรับการสื่อสารข้อมูลแบบแพ็กเก็ต โดยมีพอร์ตเริ่มต้นที่ 20080 ข้อมูลอยู่ในรูปแบบ JSON เดียวกันกับการสื่อสารผ่าน HTTP และลำดับไบต์เป็นลำดับไบต์เครือข่าย (Big-endian)
ข้อกำหนดแพ็กเก็ตคำขอ (รายการรังผึ้ง -> เซิร์ฟเวอร์เกม)¶
ขนาดแพ็กเกจ | 4 ไบต์ | 4 ไบต์ | ตัวแปร | 4 ไบต์ | ตัวแปร |
---|---|---|---|---|---|
คำอธิบาย | ความยาวแพ็กเกจทั้งหมด | ความยาวส่วนหัว | เนื้อหาส่วนหัว | ความยาวเนื้อหา | เนื้อหาของร่างกาย |
- 4 ไบต์แรกแสดงถึงความยาวรวมของแพ็กเกจรวมถึง 4 ไบต์นี้
ตัวอย่างเช่น หากส่วนหัวมีขนาด 46 ไบต์และเนื้อหามีขนาด 100 ไบต์ ดังนั้น 4+4+46+4+100 = 158 ไบต์ - 4 ไบต์ถัดไปแสดงถึงความยาวของส่วนหัวที่ตามมา
- ส่วนหัวอยู่ในรูปแบบสตริง JSON เดียวกันกับค่าแฮชในการสื่อสาร HTTP
ตัวอย่างเช่น,{"Apihash":"912ec803b2ce49e4a541068d495ab570"}
- 4 ไบต์สุดท้ายแสดงถึงความยาวของเนื้อหาที่ตามมา
- เนื้อหาอยู่ในรูปแบบสตริง JSON เดียวกันกับค่าคำขอในการสื่อสาร HTTP.
ข้อกำหนดแพ็กเก็ตการตอบกลับ (เซิร์ฟเวอร์เกม -> ไอเท็มฮีฟ)¶
ขนาดแพ็กเกจ | 4 ไบต์ | ตัวแปร |
---|---|---|
เนื้อหา | ความยาวทั้งหมดของแพ็กเกจ | เนื้อหา |
- 4 ไบต์แรกระบุความยาวของแพ็กเก็ตทั้งหมด รวมถึง 4 ไบต์นั้น
- เนื้อหาอยู่ในรูปแบบสตริง JSON เดียวกันกับค่าการตอบกลับในสื่อสาร HTTP.