การจับคู่ตามรหัสเชิญ
 ฟีเจอร์การเชิญผู้ใช้คือฟีเจอร์ที่อนุญาตให้ผู้ใช้สามารถออกโค้ดเชิญเพื่อเชิญผู้ใช้อื่นเข้าสู่เกมและรับรางวัลจากนักพัฒนาสำหรับการทำเช่นนั้น API การเชิญผู้ใช้คือ API ที่อนุญาตให้เกมออกโค้ดเชิญและจับคู่ผู้ใช้ที่ได้ตอบรับคำเชิญ
  Warning
 Header การอนุญาตไม่จำเป็นสำหรับ API ทั้งหมดด้านล่าง อย่างไรก็ตาม เพื่อเหตุผลด้านความปลอดภัย แนะนำให้ใช้ คีย์การตรวจสอบสิทธิ์ของ Hive และเรียก API โดยตรงจากเซิร์ฟเวอร์เกม.
   วิธีการใช้งาน
  - ใน Hive console > Promotion > User Invitation > Register Invitation Campaign ให้สร้าง แคมเปญ โดยใช้ประเภทการออกโค้ดเชิญ
- ดึง ข้อมูลแคมเปญเชิญ และเก็บ ID แคมเปญที่ใช้ได้บนเซิร์ฟเวอร์เกม
- บนหน้าเชิญผู้ใช้ ให้ส่งข้อมูลผู้เชิญที่ได้รับและ ID แคมเปญที่บันทึกไว้ข้างต้นเป็นพารามิเตอร์การเรียกเพื่อ ออกโค้ดเชิญ
- ส่งข้อมูลของผู้เชิญ (player_idเป็นต้น) และโค้ดเชิญที่ได้รับจากผู้เชิญเป็นพารามิเตอร์การเรียกและทำการ matching request
- เรียก check reward status เพื่อแสดงความก้าวหน้าสำหรับการรับรางวัลบนหน้าเชิญผู้ใช้
การเตรียมการ
 ในการใช้ API ที่เกี่ยวข้องกับรหัสเชิญ คุณต้องเตรียมรายการต่อไปนี้
  - รหัสการตรวจสอบสิทธิ์ Hive ที่จะใช้ใน Authorization Header: Hive Console > App Center > Project Management > เลือกแอปหลังจากค้นหาแอป > รายละเอียดเกม > ข้อมูลพื้นฐาน > รหัสการตรวจสอบสิทธิ์ Hive
- server_id: Hive Console > App Center > Project Management > เลือกแอปหลังจากค้นหาแอป > รายละเอียดเกม > เซิร์ฟเวอร์เกม
- แคมเปญเชิญชวน: ออกประเภทรหัสเชิญโดยการลงทะเบียน สร้างแคมเปญ ใน Hive Console > Promotion > User Invitation > การลงทะเบียนแคมเปญเชิญชวน
การดึงข้อมูลแคมเปญ
 กำลังดึงข้อมูลแคมเปญเชิญชวนที่สร้างขึ้นในคอนโซล Hive ข้อมูลแคมเปญเชิญชวนที่ใช้งานอยู่และพร้อมใช้งานเท่านั้นที่จะถูกดึงมา ข้อมูลรางวัลที่ตั้งไว้สำหรับแคมเปญจะถูกรวมอยู่ในคำตอบด้วย
 ข้อกำหนดการร้องขอ API
 URL การร้องขอ
    | สภาพแวดล้อม | URL | 
    | เชิงพาณิชย์ | https://promotion.qpyou.cn/ua/inviteCode/campaign | 
  | Sandbox | https://sandbox-promotion.qpyou.cn/ua/inviteCode/campaign | 
  
 วิธีการร้องขอและรูปแบบข้อมูล
    | รายการ | คำอธิบาย | 
    | วิธีการ HTTP | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 หัวข้อ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | Authorization | การตรวจสอบความถูกต้องของ certificationKeyผ่านการรับรอง Bearer | String | N | 
  
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | gameindex | หมายเลขเกมที่ไม่ซ้ำกัน | จำนวนเต็ม | ใช่ | 
  
 ตัวอย่างการโทร
 curl -L -v -X POST --location "http://sandbox-promotion.qpyou.cn/ua/inviteCode/campaign" \
        -H "Content-Type: application/json" \
        -d '{
        "gameindex": 539
        }'
ข้อกำหนดการตอบสนอง API
 การตอบสนอง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | result_code | รหัสการตอบกลับ   200: สำเร็จ  อื่นๆ: ล้มเหลว  | จำนวนเต็ม | ใช่ | 
  | result_message | ข้อความการตอบกลับ | สตริง | ใช่ | 
  | campaign_list | รายการแคมเปญรหัสเชิญ | อาร์เรย์ | ใช่ | 
  | ㄴ id | รหัสแคมเปญส่งเสริม | จำนวนเต็ม | ไม่ | 
  | ㄴ title | ชื่อแคมเปญ | สตริง | ไม่ | 
  | ㄴ rewards | รายการรางวัล | อาร์เรย์ | ไม่ | 
  | ㄴㄴ reward_id | รหัสรางวัล | จำนวนเต็ม | ไม่ | 
  | ㄴㄴ description | คำอธิบายรางวัล | สตริง | ไม่ | 
  | ㄴㄴ reward_type | ประเภทของรางวัล   action: รางวัลจากการกระทำ  goal: รางวัลจากการบรรลุเป้าหมาย  | สตริง | ไม่ | 
  | ㄴㄴ action_type | ประเภทการกระทำ   match: การจับคู่  cpi: การติดตั้ง  cpa: การบรรลุการกระทำเฉพาะ  | สตริง | ไม่ | 
  | ㄴㄴ cpa_code | หมายเลข CPA ที่ไม่ซ้ำ   ให้ค่าที่ถูกต้องหากประเภทการกระทำคือ cpa ให้ Null หากไม่ใช่ cpa | จำนวนเต็ม | ไม่ | 
  | ㄴㄴ goal | จำนวนเป้าหมาย | จำนวนเต็ม | ไม่ | 
  | ㄴㄴ limit | ขีดจำกัดรางวัล | จำนวนเต็ม | ไม่ | 
  
 ตัวอย่างการตอบกลับ
 {
    "campaign_list": [
    {
        "id": "19",
            "title": "초대 코드 발급_행동_설치(초대 2, 수락 3, 제한 2)",
            "rewards": [
        {
            "reward_id": 33,
                "description": "행동_설치(초대 2, 수락 3, 제한 2)",
                "reward_type": "action",
                "action_type": "cpi",
                "cpa_code": null,
                "goal": 1,
                "limit": 2
        }
      ]
    }
  ],
    "result_code": 200,
    "result_message": "Success"
}
รับรหัสเชิญ
 ผู้ใช้สามารถรับรหัสเชิญในแคมเปญได้ แคมเปญแต่ละรายการสามารถออกเพียงรหัสเชิญเดียวเท่านั้น เพื่อเป็นรางวัลให้กับผู้เชิญ จะต้องมีการระบุ ID เซิร์ฟเวอร์ที่ผู้เชิญเข้าถึง
 ข้อกำหนดการร้องขอ API
 URL ที่ร้องขอ
    | สภาพแวดล้อม | URL | 
    | การผลิต | https://promotion.qpyou.cn/ua/inviteCode/getCode | 
  | Sandbox | https://sandbox-promotion.qpyou.cn/ua/inviteCode/getCode | 
  
 วิธีการร้องขอและรูปแบบข้อมูล
    | รายการ | คำอธิบาย | 
    | HTTP วิธี | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 หัวข้อ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | Authorization | การตรวจสอบความถูกต้องของ certificationKeyผ่านการรับรอง Bearer | String | N | 
  
 เนื้อหาการร้องขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | gameindex | หมายเลขเกมที่ไม่ซ้ำกัน | จำนวนเต็ม | ใช่ | 
  | campaign_id | หมายเลขที่ไม่ซ้ำกันสำหรับแคมเปญรหัสเชิญ | จำนวนเต็ม | ใช่ | 
  | player_id | ต้องการ vid หรือ uid ขึ้นอยู่กับโมดูล - vid: จำเป็นสำหรับโมดูลที่รวม
 - uid: จำเป็นสำหรับโมดูลเดี่ยว
 | สตริง | ใช่ | 
  | server_id | รหัสที่ไม่ซ้ำกันสำหรับเซิร์ฟเวอร์เกม | สตริง | ใช่ | 
  
 ตัวอย่างการโทร
 curl -L -v -X POST --location "http://sandbox-promotion.qpyou.cn/ua/inviteCode/getCode" \
    -H "Content-Type: application/json" \
    -d '{
          "gameindex" : 539,
          "campaign_id": 19,
          "player_id" : 12341234,
          "server_id" : "kr"
        }'
ข้อกำหนดการตอบสนอง API
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | result_code | รหัสการตอบกลับ   200: สำเร็จ  อื่นๆ: ล้มเหลว  | จำนวนเต็ม | Y | 
  | result_message | ข้อความการตอบกลับ | สตริง | Y | 
  | invite_code | รหัสเชิญที่ออก | สตริง | Y | 
  
 ตัวอย่างการตอบกลับ
 {
  "invite_code": "ESOJ0TOC",
  "result_code": 200,
  "result_message": "Success"
}
รหัสเชิญที่ตรงกัน
 กรอกโค้ดเชิญเพื่อ จับคู่ ผู้เชิญและผู้รับ เพื่อป้องกันการใช้รางวัลในทางที่ผิด แนะนำให้ตรวจสอบข้อมูลบัญชีของผู้รับบนเซิร์ฟเวอร์เกมก่อนที่จะทำการขอจับคู่ รางวัลการจับคู่จะมอบให้เพียงครั้งเดียวต่อแคมเปญ
 ข้อกำหนดการร้องขอ API
 URL ที่ร้องขอ
    | สภาพแวดล้อม | URL | 
    | เชิงพาณิชย์ | https://promotion.qpyou.cn/ua/inviteCode/companion | 
  | Sandbox | https://sandbox-promotion.qpyou.cn/ua/inviteCode/companion | 
  
 วิธีการร้องขอและรูปแบบข้อมูล
    | รายการ | คำอธิบาย | 
    | HTTP วิธี | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 หัวข้อ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | Authorization | การตรวจสอบความถูกต้องของ certificationKeyผ่านการตรวจสอบ Bearer | String | N | 
  
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | gameindex | หมายเลขเกมที่ไม่ซ้ำกัน | จำนวนเต็ม | ใช่ | 
  | invite_code | รหัสเชิญที่ออก | สตริง | ใช่ | 
  | player_id | ต้องการ vid หรือ uid ขึ้นอยู่กับโมดูล - vid: จำเป็นสำหรับโมดูลรวม
 - uid: จำเป็นสำหรับโมดูลเดี่ยว
 | สตริง | ใช่ | 
  | server_id | รหัสประจำตัวที่ไม่ซ้ำกันของเซิร์ฟเวอร์เกม | สตริง | ใช่ | 
  
 ตัวอย่างการโทร
 curl -L -v -X POST --location "http://sandbox-promotion.qpyou.cn/ua/inviteCode/companion" \
    -H "Content-Type: application/json" \
    -d '{
          "gameindex" : 539,
          "invite_code" :"ESOJ0TOC",
          "player_id" : 234234,
          "server_id" : "kr"
        }'
ข้อกำหนดการตอบสนอง API
 การตอบสนอง
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | result_code | รหัสการตอบกลับ   200: สำเร็จ  อื่นๆ: ล้มเหลว  | จำนวนเต็ม | ใช่ | 
  | result_message | ข้อความการตอบกลับ | สตริง | ใช่ | 
  | detail | รหัสคำเชิญที่ออก | อาเรย์ | ใช่ | 
  | ㄴㄴmatched | สถานะการจับคู่ | บูลีน | ใช่ | 
  | ㄴㄴreason | สาเหตุของการล้มเหลวในการจับคู่ | สตริง | ใช่ | 
  
 ตัวอย่างการตอบกลับ
 {
  "detail": {
    "matched": true,
    "reason": "Both matching and rewards were successful"
  },
  "result_code": 200,
  "result_message": "Success"
}
ตรวจสอบสถานะรางวัล
 กำลังตรวจสอบสถานะรางวัลของรหัสเชิญ
 ข้อกำหนดการร้องขอ API
 URL ที่ร้องขอ
    | สภาพแวดล้อม | URL | 
    | การผลิต | https://promotion.qpyou.cn/ua/inviteCode/progress | 
  | Sandbox | https://sandbox-promotion.qpyou.cn/ua/inviteCode/progress | 
  
 วิธีการร้องขอและรูปแบบข้อมูล
    | รายการ | คำอธิบาย | 
    | HTTP วิธีการ | POST | 
  | ประเภทเนื้อหา | application/json | 
  
 หัวข้อ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | Authorization | การตรวจสอบความถูกต้องของ certificationKeyผ่านการรับรอง Bearer | String | N | 
  
 เนื้อหาคำขอ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | gameindex | หมายเลขเกมที่ไม่ซ้ำกัน | จำนวนเต็ม | ใช่ | 
  | invite_code | รหัสเชิญที่ออกให้ | สตริง | ใช่ | 
  
 ตัวอย่างการโทร
 curl -L -v -X POST --location "http://sandbox-promotion.qpyou.cn/ua/inviteCode/progress" \
        -H "Content-Type: application/json" \
        -d '{
          "gameindex" : 539,
          "invite_code" :"ESOJ0TOC"
        }'
ข้อกำหนดการตอบสนอง API
 การตอบกลับ
    | ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น | 
    | result_code | รหัสการตอบกลับ   200: สำเร็จ  อื่นๆ: ล้มเหลว  | จำนวนเต็ม | ใช่ | 
  | result_message | ข้อความการตอบกลับ | สตริง | ใช่ | 
  | progress_list | รายการสถานะความก้าวหน้าของรางวัล (หากไม่มีประวัติความก้าวหน้าของรางวัล จะส่งคืนอาร์เรย์ว่าง) | อาร์เรย์ | ใช่ | 
  | ㄴ reward_id | รหัสรางวัล | จำนวนเต็ม | ไม่ | 
  | ㄴ reward_type | ประเภทของรางวัล   action: รางวัลจากการกระทำ  goal: รางวัลจากการบรรลุเป้าหมาย  | สตริง | ไม่ | 
  | ㄴ action_type | ประเภทของการกระทำ   match: การจับคู่  cpi: การติดตั้ง  cpa: การบรรลุการกระทำเฉพาะ  | สตริง | ไม่ | 
  | ㄴ count | จำนวนรางวัลที่มอบให้ | จำนวนเต็ม | ไม่ | 
  | ㄴ max_reward | ขีดจำกัดรางวัลสูงสุด | จำนวนเต็ม | ไม่ | 
  | ㄴ goal_progress | สถานะการบรรลุเป้าหมาย   ใช้เมื่อประเภทของรางวัลคือ 'รางวัลจากการบรรลุเป้าหมาย'  รางวัลจะมอบให้เมื่อบรรลุเป้าหมาย (goal)  | จำนวนเต็ม | ไม่ | 
  | ㄴ goal | จำนวนเป้าหมาย   ใช้เมื่อประเภทของรางวัลคือ 'รางวัลจากการบรรลุเป้าหมาย'  | จำนวนเต็ม | ไม่ | 
  | ㄴ goal_achieved | จำนวนเป้าหมายที่บรรลุ   ใช้เมื่อประเภทของรางวัลคือ 'รางวัลจากการบรรลุเป้าหมาย'  | จำนวนเต็ม | ไม่ | 
  
 ตัวอย่างการตอบกลับ
 {
  "progress_list": [
    {
      "reward_id": 19,
      "reward_type": "action",
      "action_type": "match",
      "count": 1,
      "max_reward": 1,
      "goal_progress": 0,
      "goal_achieved": 0
    },
    {
      "reward_id": 20,
      "reward_type": "goal",
      "action_type": "cpi",
      "count": 2,
      "max_reward": 2,
      "goal_progress": 1,
      "goal": 3,
      "goal_achieved": 2
    }
  ],
  "result_code": 200,
  "result_message": "Success"
}