ข้ามไปที่เนื้อหา

ซิงค์กับรายการ

สินค้า Hive เป็นระบบที่จัดเตรียมไว้เพื่อจัดการฟังก์ชันการชำระเงิน/การเรียกคืนของสกุลเงินหรือรายการในเกม การรวมสินค้า Hive ให้ฟังก์ชันในการมอบหรือเรียกรายการร่วมกับระบบคูปอง, เหตุการณ์, กำแพงข้อเสนอ, CPI, ฯลฯ ในสำนักงานหลังบ้านของผู้ดูแลระบบ รายการสามารถมอบหรือเรียกคืนด้วยตนเองหรือสามารถค้นหาประวัติได้

Note
  • API การขอรับ/กู้คืนรายการ ทำงานในลักษณะอะซิงโครนัสและตอบสนองเฉพาะการกำหนดความสำเร็จหรือความล้มเหลวของการลงทะเบียนข้อมูลคำขอเมื่อมีการเรียก API
  • การตอบสนองต่อ การดำเนินการประมวลผลจริง เช่น การเรียก API ของเซิร์ฟเวอร์เกมสามารถตรวจสอบได้ในเมนู Hive console ภายใต้ Billing > Hive Items > การขอรับ/กู้คืน หรือ บันทึกความสำเร็จในการรับ/กู้คืน โดยการค้นหาสิ่งที่เกี่ยวข้องและคลิกที่ สถานะ ในหน้าต่างป๊อปอัพผลการค้นหา
  • รายการ Hive ต้องการการจัดการการจราจรขนาดใหญ่ ดังนั้นหากเวลาตอบสนองเฉลี่ยของเซิร์ฟเวอร์แอปของนักพัฒนามากกว่า 0.5 วินาที อาจทำงานในคิวแยกต่างหากแทนที่จะเป็นคิวหลัก ในกรณีนี้อาจเกิดความล่าช้าอย่างมีนัยสำคัญในการประมวลผลการมอบรายการ เพื่อให้การประมวลผลการมอบรายการเป็นไปอย่างราบรื่น แนะนำให้รักษา เวลาเฉลี่ยในการตอบสนองของเซิร์ฟเวอร์แอปของนักพัฒนาต่ำกว่า 0.5 วินาที

ข้อกำหนดการเตรียมการรวม

ในการรวมกับ Hive รายการ คุณต้องลงทะเบียน URL เซิร์ฟเวอร์เกมและรายการในเมนู การจัดการรายการ Hive ก่อน

API การชำระเงิน/การกู้คืน

ตรวจสอบพื้นฐานของ API การขอชำระเงิน/คืนเงิน

วิธีการสื่อสาร API

  • API การขอรับเงินสนับสนุน/การกู้คืนให้บริการการสื่อสารสองประเภท: การสื่อสารผ่าน HTTP และการสื่อสารแบบ JSON String ผ่านซ็อกเก็ต
  • มันขอรับเงินสนับสนุนหรือการกู้คืนในรูปแบบ JSON String จากเซิร์ฟเวอร์เกมไปยัง Hive รายการ
  • เซิร์ฟเวอร์เกมจะส่งผลลัพธ์กลับในรูปแบบ JSON String ไปยัง Hive รายการ
  • ผลลัพธ์การตอบสนองรวมถึงรหัสการประมวลผลและข้อความ
  • JSON Strings ทั้งหมดต้องถูกเข้ารหัสในรูปแบบ UTF8.

วิธีการสมัครเกม

  • ก่อนที่บริการจะเปิดเซิร์ฟเวอร์ทดสอบจะถูกใช้เพื่อส่งผลการทดสอบการรวม และหลังจากที่บริการเปิดเซิร์ฟเวอร์การผลิตจะถูกใช้
  • แม้ว่าเกมจะเปิดให้บริการแล้ว แต่ก็ต้องรวมกับเซิร์ฟเวอร์ทดสอบ
  • รายการทั้งหมดจะถูกจัดเตรียมผ่านกล่องจดหมาย
  • หากต้องการข้อความแสดงผลสำหรับผู้ใช้ในกล่องจดหมาย โปรดดูที่ ข้อกำหนดการร้องขอ > เหตุผลในการร้องขอ เซิร์ฟเวอร์เกมต้องจัดการข้อความแสดงผลตามแต่ละภาษา
  • การร้องขอรายการจะถูกส่งทีละผู้ใช้ การร้องขอหลายรายการเพื่อการมอบ/การดึงรายการสามารถส่งพร้อมกันได้ แต่การร้องขอเดียวต้องได้รับการประมวลผลภายในธุรกรรมเดียว หากการมอบ/การดึงรายการหนึ่งล้มเหลว ให้ดำเนินการเพื่อตอบสนองด้วยความล้มเหลวหลังจากการย้อนกลับทั้งหมด

การปล่อยไฟร์วอลล์เซิร์ฟเวอร์เกม

ในการสื่อสารกับเซิร์ฟเวอร์ คุณต้องปิดกฎไฟร์วอลล์ขาเข้าสำหรับ 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": "vid",
    "id": "1004",
    "detail": [
        {
            "action": "p",
            "assetCode": "gem",
            "amount": 1,
            "method": ""
        }
    ],
    "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 คอนโซล > การเรียกเก็บเงิน > รายการ > การลงทะเบียนรายการ ผ่านโปรโตคอล HTTP และวิธีการส่งข้อมูลคำขอคือ POST.

ข้อกำหนดการร้องขอ (hive item -> game server)

HTTP Header : Apihash

  • เพื่อยืนยันข้อมูล ให้ส่งค่าแฮชพร้อมกับคีย์ Apihash.
  • ใช้ SHA1 สำหรับค่าแฮช (เพิ่มคำนำหน้า !@#COM2US!@# ลงในสตริง JSON ของร่าง)

เนื้อหาคำขอ (Hive item -> เกมเซิร์ฟเวอร์)

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น (จำเป็น: M, ไม่จำเป็น: O)
transactionId ตัวระบุเพื่อแยกความแตกต่างของแต่ละคำขอ (สำหรับการตรวจสอบคำขอซ้ำ) รายละเอียด String M
idCategory ID
  • โมดูลแต่ละตัว: hiveuid
  • การตรวจสอบสิทธิ์ v1: vid
  • การตรวจสอบสิทธิ์ v4: playerid
String M
id__ITALICS_MD_0__ มันระบุว่าคำขอได้ถูกประมวลผลแล้วโดย transactionId หรือไม่ (ป้องกันการชำระเงิน/การเก็บเงินซ้ำ)
ในกรณีที่มีคำขอซ้ำ ค่าตอบกลับจะระบุรายละเอียดที่เกี่ยวข้อง (ดูที่ข้อกำหนดการตอบกลับ)

เหตุผล

Note

เหตุผลที่รายละเอียดฟิลด์อาจถูกเพิ่ม/เปลี่ยนแปลงในภายหลัง ดังนั้นเหตุผลสำหรับคำขอนี้ควรใช้เพื่อวัตถุประสงค์ในการอ้างอิงเท่านั้น。

ชื่อฟิลด์ คำอธิบาย
pe__ITALICS_MD_1__ro__ITALICS_MD_2__ae__ITALICS_MD_3__e__ITALICS_MD_4__ea__ITALICS_MD_5__mc__ITALICS_MD_6__uc__ITALICS_MD_7__b การเรียกเก็บเงิน * HIVE IAP v2
lb__ITALICS_MD_8__co__ITALICS_MD_9__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: รางวัลจะมอบให้สำหรับการบรรลุเป้าหมายที่กำหนดในระหว่างเกม สำหรับรายละเอียดเพิ่มเติม กรุณาตรวจสอบที่ Promotion Operation Guide.

ระยะเวลา

  • ระยะเวลาที่รายการที่ร้องขอถูกเก็บไว้ในกล่องจดหมายหลังจากออกให้สามารถตั้งค่าได้เป็นรายบุคคลสำหรับแต่ละรายการในสำนักงานหลัง
  • เซิร์ฟเวอร์เกมจัดการในสามกรณีตามสถานการณ์
    • หากกุญแจไม่มีอยู่: จะใช้ค่าดีฟอลต์ที่ตั้งโดยเซิร์ฟเวอร์เกม (เช่น ค่าดีฟอลต์เก็บ 7 วัน)
    • 1~9999: จะใช้หมายเลขที่ระบุเป็นจำนวนวัน (เช่น หากค่าคือ 14 หมายถึงการเก็บ 14 วัน)
    • -1: จะใช้ค่ามากที่สุดที่สามารถตั้งโดยเซิร์ฟเวอร์เกม (เช่น การเก็บถาวร)

ข้อกำหนดการตอบสนอง (เซิร์ฟเวอร์เกม -> ไอเท็มฮีฟ)

การตอบสนอง (เซิร์ฟเวอร์เกม -> Hive รายการ)

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น (จำเป็น: M, ไม่จำเป็น: O)
code รหัสผลลัพธ์การประมวลผล รายละเอียด จำนวนเต็ม M
message ข้อความผลลัพธ์การประมวลผล สตริง M
  • รหัสข้อผิดพลาด
รหัสโค้ด คำอธิบาย
2xxxx ไม่มีปัญหากับคำขอ การประมวลผลสำเร็จ
20000 ไม่มีปัญหากับคำขอ การประมวลผลสำเร็จ
20001 ไม่มีปัญหากับคำขอ
ประมวลผลสำเร็จแล้ว (คำขอซ้ำ)
หากมี transactionId ที่ประมวลผลปกติอยู่แล้ว
4xxxx ข้อผิดพลาดของพารามิเตอร์คำขอ
40001 ข้อผิดพลาด JSON ของคำขอ
40002 ข้อผิดพลาด Hash
40003 ขาดพารามิเตอร์ที่จำเป็น
40004 ข้อผิดพลาดประเภทพารามิเตอร์ที่จำเป็น
40005 ค่าพารามิเตอร์ที่จำเป็นว่างเปล่า
40006 ค่าพารามิเตอร์ที่จำเป็นไม่ถูกต้อง (เช่น ลบ)
5xxxx ข้อผิดพลาดในการประมวลผลของเซิร์ฟเวอร์
50001 ผู้ใช้ที่ไม่มีอยู่
50004 ข้อผิดพลาดในการลงทะเบียน DB
50005 ข้อผิดพลาดของพารามิเตอร์ (เช่น รหัสรายการที่ไม่มีอยู่)
  • ตัวอย่างคำขอ
curl -L -v 
-d '{"transactionId":"27905","idCategory":"vid","id":"828292","detail":[{"action":"p","assetCode":"gold","amount":500,"method":""},{"action":"p","assetCode":"gem","amount":200,"method":""}],"reason":"td","subReason":"","userMessage":"","templateMessage":{"ko":{"title":"ud55cuae00 uba54uc138uc9c0","body":"ud55cuae00 ub0b4uc6a9"},"en":{"title":"English Message","body":"English Contents"}},"serverId":"kr","additionalinfo":"","gameIndex":539}' 
-H "Content-Type: text/html" 
-H "Apihash: e9d7307948ff0134fb59c5f96e68f5ae21e3e47f" 
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: e9d7307948ff0134fb59c5f96e68f5ae21e3e47f
> 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'        => 'vid',
    '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": "vid",
    "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 &amp; 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"
}
*****************************************************************/

วิธีการสื่อสารผ่าน Socket สำหรับ 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 ไบต์นั้น
  • Body อยู่ในรูปแบบสตริง JSON เดียวกันกับค่าการตอบสนองในสื่อสาร HTTP.