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

API บล็อกเชนของ Hive

Hive Blockchain API คือ API เกมเว็บ 3.0 ที่ขับเคลื่อนโดย Hive แพลตฟอร์ม โดยใช้ AppID และ PlayerID ของมัน ผู้เล่นเกมสามารถสร้างโทเค็นได้หลายโทเค็นในครั้งเดียว สูงสุดถึง 200 โทเค็น และสตูดิโอเกมสามารถรับบันทึกการทำธุรกรรมต่อผู้ใช้ได้ มีฟีเจอร์อื่นๆ อีกมากมายที่เหมาะสมสำหรับเกมเว็บ 3 ด้วย Hive Blockchain API คุณสามารถตั้งค่าการพัฒนา การดำเนินงาน และการจัดการโครงการเกมเว็บ 3 ได้อย่างมีประสิทธิภาพ Hive Blockchain API รองรับบล็อกเชน Polygon และ XPLA

การเตรียมการล่วงหน้า: การออกโทเค็นการรับรอง API

ในการเรียกใช้ API ของ Hive บล็อกเชน คุณต้องแนบโทเค็นการรับรองความถูกต้องไปยัง API Header วิธีการขอรับโทเค็นการรับรองความถูกต้องของ API มีดังนี้

  1. ลงทะเบียนเกมที่ App Center > รายการเกม > ลงทะเบียนเกมใหม่ หลังจากสมัครสมาชิกใน Hive Console
  2. สร้าง AppID ที่ App Center > รายการ AppID > ลงทะเบียน AppID ใหม่
    • สร้าง AppID: AppID สำหรับการเข้าสู่ระบบเว็บ
    • เลือกการใช้งาน: บล็อกเชน
    • เลือก AppID ที่จะใช้: เลือก "AppID ที่สร้างขึ้นโดยอัตโนมัติ" หรือ "AppID ที่สร้างขึ้นโดยอัตโนมัติ + ข้อมูลเพิ่มเติม"
  3. เลือกชื่อเกมและขอ ID และรหัสรับรอง (SecretKey) ที่ Hive Console > บล็อกเชน > ตรวจสอบรหัสรับรอง API
  4. ใส่ ID และ SecretKey ใน Request Body ของ auth-token API และเรียก API
  5. data.accessToken ในค่าตอบกลับของ API คือโทเค็นรับรองตัวตน

NFT API

การออก NFT

สร้างธุรกรรมที่ออกโทเค็นไปยังที่อยู่ที่เฉพาะเจาะจง (to) ข้อมูล NFT ที่จะออก (mintMsg.tokenId, mintMsg.metadata เป็นต้น) จะถูกบรรจุในอาร์เรย์และเรียกใช้ได้ สำหรับการเรียก API หนึ่งครั้ง XPLA สามารถออกโทเค็นได้สูงสุด 200 โทเค็นต่อบัญชี และ Polygon สามารถออกโทเค็นได้สูงสุด 50 โทเค็น from จะต้องเป็นบัญชีที่มีสิทธิ์ในการออกโทเค็น

Note

สินทรัพย์ดิจิทัลที่ออกโดย API และเมตาดาต้าของสินทรัพย์ (mintMsg.metadata) จะถูกลงทะเบียนใน Public IPFS (InterPlanetary File System)

URL การร้องขอ

ลิงก์สด https://bc-api.qpyou.cn/service/v1/nft/{contract}/mint
ลิงก์ Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/nft/{contract}/mint
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
contract ที่อยู่ของ NFT คอนแทรกต์ string Y

พารามิเตอร์หัวข้อ

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน string Y
x-appid รหัสประจำแอปเฉพาะ แอป Hive คอนโซล > รายการ AppID string Y

เนื้อหาคำขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
playerId รหัสผู้เล่น string Y
from ที่อยู่บัญชีที่ออก NFT string Y
to ที่อยู่กระเป๋าเงินที่จะรับ NFT string Y
isSend หากเป็น true เมื่อมีคีย์กระเป๋าเงินใน KMS จะมีการลงนามธุรกรรมโดยอัตโนมัติด้วยคีย์นี้และส่งไปยังบล็อกเชน จะได้รับค่าผลลัพธ์เป็น txHash หากเป็น false จะได้รับข้อมูลธุรกรรมที่ผู้ใช้ต้องลงนามด้วยตนเองเป็นค่าผลลัพธ์ data.rawTx boolean Y
mintMsg ข้อมูลที่จำเป็นในการออก array Y
mintMsg.tokenId รหัส NFT ซึ่งกำหนดโดยผู้สร้าง NFT และไม่อนุญาตให้ซ้ำกัน
  • Polygon: ใช้ได้เฉพาะสตริงและจำนวนเต็ม (0~2256-1)
  • XPLA: ใช้ได้เฉพาะสตริง
string Y
mintMsg.royaltyPercentage อัตราค่าลิขสิทธิ์ ซึ่งเป็นจำนวนเงินที่จะจ่ายให้กับผู้สร้าง NFT หรือผู้ถือสิทธิ์เมื่อ NFT ถูกขายหรือขายต่อ อัตราส่วนที่จะจ่ายเป็นค่าลิขสิทธิ์จะถูกตั้งค่าจากยอดขายรวม ฟังก์ชันสำหรับตลาด NFT ที่ต้องการสนับสนุนเงินทุนอย่างต่อเนื่องให้กับศิลปินและผู้สร้าง NFT อื่น ๆ ค่าลิขสิทธิ์จะไม่ถูกจ่ายโดยอัตโนมัติเมื่อมีการโอน NFT แต่จะถูกตรวจสอบและจ่ายโดยตลาด NFT ฟังก์ชันที่ใช้ใน OpenSea
  • Polygon: อนุญาตให้มีทศนิยมสองตำแหน่ง.
  • XPLA: ไม่อนุญาตให้มีทศนิยม.
number Y
mintMsg.metadata เมตาดาต้า
  • ตรวจสอบประเภทและรูปแบบ url (animationUrl, youtubeUrl, externalUrl) เมื่อป้อนเมตาดาต้า หากส่งข้อมูลที่ไม่ถูกต้อง API จะไม่ทำงานตามปกติ
  • เมื่อเมตาดาต้าถูกจัดเก็บใน IPFS จะถูกจัดเก็บในรูปแบบ snake case ที่สามารถเชื่อมต่อกับ OpenSea (ตัวอย่าง: animationUrlanimation_url)
json Y
mintMsg.metadata.name ชื่อ NFT string Y
mintMsg.metadata.description คำอธิบาย NFT string N
mintMsg.metadata.image ที่อยู่ภาพ NFT ซึ่งเป็นที่อยู่เว็บไซต์ที่เข้าถึงได้จากภายนอกหรือที่อยู่ Public IPFS สำหรับอัปโหลดไปยัง IPFS string Y
mintMsg.metadata.animationUrl ที่อยู่อนิเมชันที่เกี่ยวข้องกับ NFT string N
mintMsg.metadata.youtubeUrl ที่อยู่ยูทูบ string N
mintMsg.metadata.imageData ข้อมูลภาพ NFT string N
mintMsg.metadata.externalUrl ที่อยู่ที่เชื่อมต่อกับภายนอก string N
mintMsg.metadata.backgroundColor ข้อมูลสีพื้นหลังของโทเค็นใน OpenSea string N
mintMsg.metadata.attributes ข้อมูลคุณสมบัติของเมตาดาต้า ซึ่งเป็น ข้อมูลเพิ่มเติม ที่ไม่ได้ระบุในเมตาดาต้า json N
mintMsg.metadata.attributes.traitType ชื่อรายการที่ประกอบเป็น attributes string N
mintMsg.metadata.attributes.maxValue ค่าสูงสุดของ trait number N
mintMsg.metadata.attributes.value ค่าของ trait ซึ่งต้องน้อยกว่าค่า mintMsg.metadata.attributes.maxValue หาก mintMsg.metadata.attributes.displayType เป็น date ให้ป้อนค่าเป็น unix timestamp (seconds) string หรือ number N
mintMsg.metadata.attributes.displayType ประเภทการแสดงผลของ trait ค่าเริ่มต้นคือประเภท string
  • number: ประเภท Number
  • boost_percentage: แสดงข้อมูล % ใน OpenSea Boosts
  • boost_number: แสดงใน OpenSea Boosts
  • date: แสดงในรูปแบบวันที่ (ตัวอย่าง: วันอังคารที่ 1 มกราคม 2019)
string N
encoded การเข้ารหัสธุรกรรมที่ต้องการรับ
  • true: รับ Raw Transaction String ที่เข้ารหัสด้วย data.rawTx
  • false: รับผลลัพธ์ JSON ที่ถอดรหัสจาก data.rawTx.
boolean Y
callbackUrl ที่อยู่ที่จะได้รับผลลัพธ์ว่าธุรกรรมถูกบันทึกลงบล็อกเชนสำเร็จ/ล้มเหลวหรือไม่ string Y

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.rawTx ข้อมูลธุรกรรม.isSendจะได้รับค่าตอนที่เป็น false เท่านั้น. string หรือ json
data.hashedTx data.rawTx ที่ถูกแฮช. จะได้รับค่าตอนที่ตรงตามเงื่อนไขทั้งหมดด้านล่างนี้. 1. x-network เป็น polygon 2. from เป็นที่อยู่กระเป๋าเงินหลายลายเซ็น 3. isSend เป็น false string
data.txhash แฮชธุรกรรมที่ได้รับจากผลลัพธ์การส่งธุรกรรม.isSendจะได้รับค่าตอนที่เป็น true เท่านั้น. string
data.status สถานะของธุรกรรมที่ส่ง.isSendจะได้รับค่าตอนที่เป็น true, ถ้าธุรกรรมถูกส่งอย่างถูกต้องจะได้รับค่าเป็น PENDING. ถ้า isSend เป็น false, หมายความว่าสถานะต้องการลายเซ็นก่อนที่จะส่งธุรกรรมจะได้รับค่าเป็น WAITING. string
data.reqeustId ค่าที่ไม่ซ้ำกันที่สามารถใช้ระบุคำขอ API string

ตัวอย่างคำขอ

curl -X 'POST' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/nft/0x31a6854383c81daab14089cba0b9de1d42ecd65f/mint' 
  -H 'accept: */*' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.normal.freefull.apple.global.ios.universal' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb20y...' 
  -H 'Content-Type: application/json' 
  -d '{
  "playerId": 1324,
  "from": "0xD6e69da7f1be111394dfef4C48eaC9b52ddf2Fd0",
  "to": "0xA10078576Ca6f63dc6f78ff9a8ed8bd05B51f463",
  "isSend": true,
  "royaltyPercentage": 7.5,
  "mintMsg": [
    {
      "tokenId": "1",
      "metadata": {
        "name": "Arbiter'''s Robe",
        "description": "desc",
        "image": "https://image01.c2x.world/equip_92053030.gif",
        "animationUrl": "https://image01.c2x.world/equip_92053030.gif",
        "externalUrl": "https://dex.c2xnft.com/market?key=4423",
        "attributes": [
          {
            "traitType": "Category",
            "value": "Game",
          }
        ]
      }
    }
  ],
  "encoded": true,
  "callbackUrl": "https://withhive.com/"
}'

ตัวอย่างการตอบกลับ

// Request Body의 isSend가 true이고 from이 KMS 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "txhash": "02f8f3830138810b8459682f008459682f1083023...",
    "status": "pending",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 다중 서명 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 KMS 주소나 일반 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 string
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8d3830138810b8458e948068458e948168302e71494ebd9144485089ebe248f8...",
    "requestId": "5743f0aa-0323-47fc-a3da-173eee27bbe4"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 json
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": {
      "from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
      "to": "0xebd9144485089ebe248f8490984a60579407c262",
      "data": "0xb88d4fde000000000000000000000000dcd51770d06b54204abd8c30a25b4583d4caba3900...",
      "nonce": 11,
      "chainId": 80001,
      "gas": 190228,
      "maxFeePerGas": 1491259270,
      "maxPriorityFeePerGas": 1491259255
    },
    "requestId": "dd33ddd8-31fa-4491-9c3c-2f912f7059bc"
  }
}

ตรวจสอบ NFT

ตรวจสอบ NFT ที่ตรงกับ ID โทเคน (tokenId)

URL ที่ร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/nft/{contract}/tokens/{tokenId}
URL Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/nft/{contract}/tokens/{tokenId}
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
contract ที่อยู่ของ NFT คอนแทรค string Y
tokenId ID ของโทเค็น string Y

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน string Y
x-appid เป็น ID เฉพาะของแอป สามารถตรวจสอบได้จาก AppID รายการใน Hive คอนโซล แอปเซ็นเตอร์ string Y

การตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.nftContract ที่อยู่ของ NFT คอนแทรค string
data.tokenId ID โทเค็น string
data.tokenUri ที่อยู่ IPFS ของโทเค็น string
data.gatewayUrl ที่อยู่ Gateway ของโทเค็น string
data.metadata ข้อมูลเมตาดาต้า json
data.metadata.name ชื่อ NFT string
data.metadata.description คำอธิบาย NFT string
data.metadata.image ที่อยู่ของภาพ NFT เป็นที่อยู่เว็บไซต์ที่เข้าถึงได้จากภายนอกหรือที่อยู่ Public IPFS string
data.metadata.animationUrl ที่อยู่ของอนิเมชันที่เกี่ยวข้องกับ NFT string
data.metadata.youtubeUrl ที่อยู่ยูทูบ string
data.metadata.imageData ข้อมูลภาพ NFT string
data.metadata.externalUrl ที่อยู่ที่เชื่อมต่อกับภายนอก string
data.metadata.backgroundColor ข้อมูลสีพื้นหลังของโทเค็นใน OpenSea string
data.metadata.attributes ข้อมูลคุณสมบัติของเมตาดาต้า ข้อมูลเพิ่มเติมที่ไม่ได้ระบุในเมตาดาต้า json
data.metadata.attributes.traitType ชื่อฟิลด์ที่ประกอบขึ้นเป็น attributes string
data.metadata.attributes.maxValue ค่าสูงสุดของ trait string
data.metadata.attributes.value ค่าของ trait ต้องน้อยกว่าค่า data.metadata.attributes.maxValue หาก data.metadata.attributes.displayType เป็น date ให้ป้อนค่า unix timestamp (seconds) ใน value string หรือ number
data.metadata.attributes.displayType ประเภทการแสดงผลของ trait ค่าเริ่มต้นคือประเภท string.
  • number: ประเภท Number
  • boost_percentage: แสดงข้อมูล % ใน OpenSea Boosts
  • boost_number: แสดงใน OpenSea Boosts
  • date: แสดงในรูปแบบวันที่ (ตัวอย่าง: วันอังคารที่ 1 มกราคม 2019)
string

ตัวอย่างคำขอ

curl -X 'GET' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/nft/0x31a6854383c81daab14089cba0b9de1d42ecd65f/tokens/1' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.c2xwallet.hivepc.kr.test' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6...'

ตัวอย่างการตอบกลับ

{
  "code": 0,
  "message": "success",
  "data": {
    "nftContract": "0x31a6854383c81daab14089cba0b9de1d42ecd65f",
    "tokenId": "5",
    "tokenUri": "ipfs://QmTPp6KFmBiDQyVL5b9fUGgp9tJtKrVEayRiXadDuBaPSD",
    "gatewayUrl": "https://test-bc-file.qpyou.cn/ipfs/QmTPp6KFmBiDQyVL5b9fUGgp9tJtKrVEayRiXadDuBaPSD",
    "metadata": {
      "name": "Arbiter's Robe",
      "description": "desc",
      "image": "https://image01.c2x.world/equip_92053030.gif",
      "animationUrl": "https://image01.c2x.world/equip_92053030.gif",
      "externalUrl": "https://dex.c2xnft.com/market?key=4423",
      "backgroundColor": "orange",
      "attributes": [
        {
          "traitType": "Category",
          "value": "Game",
          "displayType": "string"
        }
      ]
    }
  }
}

API ล็อก

การล็อก NFT

NFT การล็อกคือการล็อก NFT ที่ออกโดยไม่ให้สามารถซื้อขายได้ หากผู้เล่นเกมต้องการใช้ไอเทมในเกมหลังจากที่ได้ NFT โดยการมินต์ไอเทมเกม จะทำการล็อก NFT เพื่อไม่ให้สามารถซื้อขายได้ เจ้าของ (owner) จะสร้างธุรกรรมการตั้งค่าการล็อกเพื่อไม่ให้สามารถใช้ NFT (tokenId) ที่ถืออยู่ได้

URL การร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/nft/contract/{contract}/lock
URL Sandbox https://sandbox-bc-api.qpyou.cn/ service/v1/nft/contract/{contract}/lock
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
contract ที่อยู่ของ NFT คอนแทรกต์ string Y

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน string Y
x-appid ID ที่ไม่ซ้ำกันของแอป สามารถตรวจสอบได้จาก Hive Console App Center > รายการ AppID string Y

เนื้อหาการร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นต้องใช้
playerId ID ของผู้เล่น string Y
from ที่อยู่กระเป๋าเงินของเจ้าของ NFT string Y
isSend หากเป็น true จะส่งคำสั่งซื้อไปยังบล็อกเชนโดยอัตโนมัติเมื่อมีคีย์กระเป๋าใน KMS โดยจะได้รับ txHash เป็นค่าตอบกลับ หากเป็น false จะได้รับข้อมูลธุรกรรมที่ต้องลงนามโดยผู้ใช้เองใน data.rawTx เป็นค่าตอบกลับ boolean Y
lockContract ที่อยู่ของสัญญาที่ล็อก string Y
tokenId ID ของ NFT string Y
encoded ความจำเป็นในการเข้ารหัสธุรกรรมที่ส่งกลับ <i> true: จะได้รับ Raw Transaction String ที่เข้ารหัสใน data.rawTx </i> false: จะได้รับผลลัพธ์ JSON ที่ถอดรหัสจาก data.rawTx boolean Y
callbackUrl ที่อยู่ที่จะได้รับผลลัพธ์ว่าการบันทึกธุรกรรมในบล็อกเชนสำเร็จหรือไม่ string Y

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.rawTx ข้อมูลธุรกรรม.isSendจะรับค่าได้เฉพาะเมื่อเป็น false เท่านั้น string หรือ json
data.hashedTx data.rawTx ที่ถูกแฮช จะรับค่าได้เฉพาะเมื่อมีเงื่อนไขทั้งหมดดังต่อไปนี้ ,
1. x-network เป็น polygon
2. from เป็นที่อยู่กระเป๋าเงินหลายลายเซ็น
3. isSend เป็น false
string
data.txhash แฮชธุรกรรมที่ได้รับจากผลลัพธ์การส่งธุรกรรม.isSendจะรับค่าได้เฉพาะเมื่อเป็น true เท่านั้น string
data.status สถานะของธุรกรรมที่ส่ง.isSendจะรับค่าเป็น true หากธุรกรรมถูกส่งอย่างถูกต้องจะได้รับค่าเป็น PENDING หาก isSend เป็น false หมายความว่าต้องมีลายเซ็นก่อนที่จะส่งธุรกรรมจึงจะได้รับค่าเป็น WAITING string
data.reqeustId ข้อมูลระบุเอกลักษณ์สำหรับคำขอ API string

ตัวอย่างคำขอ

curl -X 'POST' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/nft/contract/0xebd9144485089ebe248f8490984a60579407c262/lock' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.normal.freefull.apple.global.ios.universal' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb20...' 
  -H 'Content-Type: application/json' 
  -d '{
  "playerId": 1324,
  "from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
  "isSend": true,
  "lockContract": "0x572f47db51a98ae0d51324c2703d9d63ee3c9f03",
  "tokenId": "1",
  "encoded": true,
  "callbackUrl": "https://withhive.com/"
}'

ตัวอย่างการตอบกลับ

// Request Body의 isSend가 true이고 from이 KMS 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "txhash": "02f8f3830138810b8459682f008459682f1083023...",
    "status": "pending",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 다중 서명 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 KMS 주소나 일반 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 string
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8d3830138810b8458e948068458e948168302e71494ebd9144485089ebe248f8...",
    "requestId": "5743f0aa-0323-47fc-a3da-173eee27bbe4"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 json
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": {
      "from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
      "to": "0xebd9144485089ebe248f8490984a60579407c262",
      "data": "0xb88d4fde000000000000000000000000dcd51770d06b54204abd8c30a25b4583d4caba3900...",
      "nonce": 11,
      "chainId": 80001,
      "gas": 190228,
      "maxFeePerGas": 1491259270,
      "maxPriorityFeePerGas": 1491259255
    },
    "requestId": "dd33ddd8-31fa-4491-9c3c-2f912f7059bc"
  }
}

การปลดล็อก NFT

สร้างธุรกรรมเพื่อปลดล็อกการตั้งค่าการล็อกให้เจ้าของ (owner) สามารถใช้ NFT (tokenId) ได้

URL การร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/lock/contract/{contract}/unlock
URL Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/lock/contract/{contract}/unlock
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
contract ที่อยู่ของสัญญาล็อก string Y

พารามิเตอร์หัว

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string ใช่
x-network เครือข่ายบล็อกเชน string ใช่
x-appid เป็น ID เฉพาะของแอป สามารถตรวจสอบได้จาก Hive Console App Center > รายการ AppID string ใช่

เนื้อหาการร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
playerId ID ผู้เล่น string Y
nftContract ที่อยู่ของ NFT คอนแทรค string Y
from ที่อยู่กระเป๋าของเจ้าของคอนแทรคล็อก string Y
isSend true หมายถึง เมื่อมีคีย์กระเป๋าใน KMS จะทำการลงนามธุรกรรมโดยอัตโนมัติด้วยคีย์นี้แล้วส่งไปยังบล็อกเชน โดยจะได้รับค่า txHash เป็นผลตอบกลับ หากเป็น false จะได้รับข้อมูลธุรกรรมที่ต้องลงนามโดยผู้ใช้เองใน data.rawTx เป็นผลตอบกลับ boolean Y
tokenId ID ของ NFT string Y
encoded ความจำเป็นในการเข้ารหัสธุรกรรมที่ส่งกลับ
  • true: จะได้รับ Raw Transaction String ที่เข้ารหัสใน data.rawTx
  • false: จะได้รับผลลัพธ์ JSON ที่ถอดรหัสจาก data.rawTx
boolean Y
callbackUrl ที่อยู่ที่จะแจ้งผลการบันทึกธุรกรรมลงในบล็อกเชนว่าประสบความสำเร็จ/ล้มเหลว string Y

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์ของการเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.rawTx ข้อมูลธุรกรรม.isSendจะรับค่าได้เฉพาะเมื่อเป็น false string หรือ json
data.hashedTx data.rawTx ที่ถูกแฮช. จะรับค่าได้เฉพาะเมื่อเป็นไปตามเงื่อนไขทั้งหมดด้านล่างนี้:
1. x-network เป็น polygon
2. from เป็นที่อยู่กระเป๋าเงินหลายลายเซ็น
3. isSend เป็น false
string
data.txhash แฮชธุรกรรมที่ได้รับจากผลลัพธ์การส่งธุรกรรม.isSendจะรับค่าได้เฉพาะเมื่อเป็น true string
data.status สถานะของธุรกรรมที่ส่ง.isSendเป็น true หากธุรกรรมถูกส่งอย่างถูกต้องจะได้รับค่าเป็น PENDING. หาก isSend เป็น false หมายความว่าต้องการลายเซ็นก่อนที่จะส่งธุรกรรมจะได้รับค่าเป็น WAITING. string
data.reqeustId ค่าที่ไม่ซ้ำกันเพื่อระบุคำขอ API string

ตัวอย่างคำขอ

curl -X 'POST' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/lock/contract/0x572f47db51a98ae0d51324c2703d9d63ee3c9f03/unlock' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.normal.freefull.apple.global.ios.universal' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb20ydXMuaGl2ZXNka...' 
  -H 'Content-Type: application/json' 
  -d '{
  "playerId": 1324,
  "isSend": true,
  "nftContract": "0xebd9144485089ebe248f8490984a60579407c262",
  "from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
  "tokenId": "2",
  "encoded": true,
  "callbackUrl": "https://withhive.com/"
}'

ตัวอย่างการตอบกลับ

// Request Body의 isSend가 true이고 from이 KMS 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "txhash": "02f8f3830138810b8459682f008459682f1083023...",
    "status": "pending",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 다중 서명 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 KMS 주소나 일반 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 string
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8d3830138810b8458e948068458e948168302e71494ebd9144485089ebe248f8...",
    "requestId": "5743f0aa-0323-47fc-a3da-173eee27bbe4"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 json
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": {
      "from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
      "to": "0xebd9144485089ebe248f8490984a60579407c262",
      "data": "0xb88d4fde000000000000000000000000dcd51770d06b54204abd8c30a25b4583d4caba3900...",
      "nonce": 11,
      "chainId": 80001,
      "gas": 190228,
      "maxFeePerGas": 1491259270,
      "maxPriorityFeePerGas": 1491259255
    },
    "requestId": "dd33ddd8-31fa-4491-9c3c-2f912f7059bc"
  }
}

แปลง API

แลกเปลี่ยนสกุลเงินเกมและโทเค็นเกม

แลกเปลี่ยนโทเค็นเกมและสกุลเงินเกม

  • to-token: แลกเปลี่ยนสกุลเงินเกม (gameCurrencyCode) เป็นโทเค็นเกม (gameToken)。
  • to-currency: แลกเปลี่ยนโทเค็นเกม (gameToken) เป็นสกุลเงินเกม (gameCurrencyCode)。

URL การร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/convert/{type}
URL Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/convert/{type}
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
type ประเภทการแปลง
  • to-token: แลกเปลี่ยนสกุลเงินเกม(gameCurrencyCode)เป็นโทเค็นเกม(gameToken)
  • to-currency: แลกเปลี่ยนโทเค็นเกม(gameToken)เป็นสกุลเงินเกม(gameCurrencyCode).
string Y

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string ใช่
x-network เครือข่ายบล็อกเชน string ใช่
x-appid ID เฉพาะของแอป สามารถตรวจสอบได้จาก Hive Console App Center > รายการ AppID string ใช่

เนื้อหาคำขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
playerId รหัสผู้เล่น string ใช่
isSend หากเป็น true จะทำการเซ็นธุรกรรมโดยอัตโนมัติด้วยกุญแจกระเป๋าเงินจาก KMS และส่งไปยังบล็อกเชน จะได้รับค่าตอบกลับเป็น txHash หากเป็น false จะได้รับข้อมูลธุรกรรมที่ผู้ใช้ต้องเซ็นเองซึ่งคือ data.rawTx boolean ใช่
owner ที่อยู่กระเป๋าเงินของผู้ใช้ string ใช่
convertPool ที่อยู่ของพูลการแปลง string ใช่
gameTokenAmount จำนวนโทเค็นเกม string ใช่
gameCurrencyCode รหัสสกุลเงินเกม string ใช่
gameCurrencyAmount จำนวนสกุลเงินเกม string ใช่
encoded สถานะการเข้ารหัสของธุรกรรมที่ได้รับคืน <i> true: จะได้รับ Raw Transaction String ที่เข้ารหัสด้วย data.rawTx </i> false: จะได้รับผลลัพธ์ JSON ที่ถอดรหัสจาก data.rawTx boolean ใช่
callbackUrl ที่อยู่ที่จะได้รับผลลัพธ์ว่าการบันทึกธุรกรรมในบล็อกเชนสำเร็จ/ล้มเหลว string ใช่

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.rawTx ข้อมูลธุรกรรม.isSendจะรับค่านี้ได้เฉพาะเมื่อเป็น false เท่านั้น string หรือ json
data.hashedTx data.rawTx ที่ถูกแฮช. จะรับค่านี้ได้เฉพาะเมื่อเป็นไปตามเงื่อนไขทั้งหมดด้านล่างนี้:
1. x-network เป็น polygon
2. from เป็นที่อยู่กระเป๋าเงินหลายลายเซ็น
3. isSend เป็น false
string
data.txhash แฮชธุรกรรมที่ได้รับเป็นผลลัพธ์จากการส่งธุรกรรม.isSendจะรับค่านี้ได้เฉพาะเมื่อเป็น true เท่านั้น string
data.status สถานะของธุรกรรมที่ส่ง.isSendเป็น true หากธุรกรรมถูกส่งอย่างถูกต้องจะได้รับค่า PENDING. หาก isSend เป็น false หมายความว่าต้องการลายเซ็นก่อนที่จะส่งธุรกรรมจึงได้รับค่า WAITING string
data.reqeustId ค่าที่ไม่ซ้ำกันเพื่อระบุคำขอ API string

ตัวอย่างคำขอ

curl -X 'POST' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/convert/to-token' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.normal.freefull.apple.global.ios.universal' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvb...' 
  -H 'Content-Type: application/json' 
  -d '{
  "playerId": 1324,
  "isSend": true,
  "owner": "0xA10078576Ca6f63dc6f78ff9a8ed8bd05B51f463",
  "convertPool": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
  "gameTokenAmount": "1",
  "gameCurrencyCode": "A39539HFTGOLD0001",
  "gameCurrencyAmount": "1000",
  "encoded": true,
  "callbackUrl": "https://withhive.com/"
}'

ตัวอย่างการตอบกลับ

// Request Body의 isSend가 true이고 from이 KMS 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "txhash": "02f8f3830138810b8459682f008459682f1083023...",
    "status": "pending",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 다중 서명 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "hashedTx": "0x53e8783e4da707daf58c96a8cea278e7b2a8a5f185af0913b518974556c79076...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false이고 from이 KMS 주소나 일반 지갑 주소일 경우
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8f3830138810b8459682f008459682f1083023...",
    "requestId": "6fb62650-d52e-4bec-bb91-dd081813d7f1"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 string
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": "02f8d3830138810b8458e948068458e948168302e71494ebd9144485089ebe248f8...",
    "requestId": "5743f0aa-0323-47fc-a3da-173eee27bbe4"
  }
}
// Request Body의 isSend가 false일 때: data.rawTx가 json
{
  "code": 0,
  "message": "success",
  "data": {
    "rawTx": {
      "from": "0xdcd51770d06B54204abd8c30A25b4583D4cABa39",
      "to": "0xebd9144485089ebe248f8490984a60579407c262",
      "data": "0xb88d4fde000000000000000000000000dcd51770d06b54204abd8c30a25b4583d4caba3900...",
      "nonce": 11,
      "chainId": 80001,
      "gas": 190228,
      "maxFeePerGas": 1491259270,
      "maxPriorityFeePerGas": 1491259255
    },
    "requestId": "dd33ddd8-31fa-4491-9c3c-2f912f7059bc"
  }
}

ตรวจสอบการแปลงพูล

การแลกเปลี่ยนคอนเวิร์ตคือสถานที่ที่ผู้พัฒนาเกมสามารถแลกเปลี่ยนโทเค็นเกมและทรัพยากรในเกมซึ่งกันและกันได้ คุณสามารถตรวจสอบจำนวนโทเค็นที่เหลืออยู่ในคอนเวิร์ตพูลและจำนวนทรัพยากรในเกมได้

URL คำขอ

ลิงก์สด https://bc-api.qpyou.cn/service/v1/convert/pool/{convertPool}
ลิงก์ Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/convert/pool/{convertPool}
วิธีการ HTTP GET
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
convertPool ที่อยู่ของคอนเวิร์ทพูล string Y

พารามิเตอร์ส่วนหัว

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string ใช่
x-network เครือข่ายบล็อกเชน string ใช่
x-appid เป็น ID เฉพาะของแอป สามารถตรวจสอบได้จาก Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID string ใช่

การตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json

ตัวอย่างคำขอ

curl -X 'GET' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/convert/pool/0xdcd51770d06B54204abd8c30A25b4583D4cABa39' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.normal.freefull.apple.global.ios.universal' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvb...' 
  -d ''

ตัวอย่างการตอบกลับ

{
  "code": 0,
  "message": "success",
  "data": {
    "convertPoolAmount": "1000000000",
    "gameCurrency": [
      {
        "goodsCode": "A39539HFTBRONZE0003",
        "goodsAmount": "10000000000"
      },
      {
        "goodsCode": "A39539HFTGOLD0001",
        "goodsAmount": "1000000000000"
      },
      {
        "goodsCode": "A39539HFTSILVER0002",
        "goodsAmount": "100000000000"
      }
    ]
  }
}

API การทำธุรกรรม

การลงทะเบียน Txhash

เมื่อสร้างธุรกรรมใด ๆ (เช่น mint, convert, lock API เป็นต้น) จะลงทะเบียน requestId ที่ได้รับเป็นค่าตอบกลับ และ txHash ที่ได้รับเมื่อบันทึกธุรกรรมนี้ลงในบล็อกเชน นี่เป็นขั้นตอนในการติดตามว่าการขอสร้างธุรกรรมเสร็จสมบูรณ์อย่างถูกต้องหรือไม่

URL ที่ร้องขอ

ลิงก์สด https://bc-api.qpyou.cn/service/v1/tx/hash
ลิงก์ Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/tx/hash
วิธีการ HTTP PATCH
ประเภทเนื้อหา application/json

พารามิเตอร์ส่วนหัว

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน string Y
x-appid เป็น ID ที่ไม่ซ้ำกันของแอป สามารถตรวจสอบได้จาก Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID string Y

เนื้อหาของคำขอ

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
requestId ค่าที่ไม่ซ้ำกันที่สามารถใช้ระบุคำขอ API string Y
txHash แฮชของธุรกรรม string Y

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json

ตัวอย่างคำขอ

curl -X 'PATCH' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/tx/hash' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.normal.freefull.apple.global.ios.universal' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImN...' 
  -H 'Content-Type: application/json' 
  -d '{
  "requestId": "538d0ca4-9d8b-4b8c-ab02-c68bc1623ed3",
  "txHash": "0x99a93c8ba06865bd7054835d5f9abe57424289dca15ea61fe55a33a0651b058c"
}'

ตัวอย่างการตอบกลับ

{
  "code": 0,
  "message": "success"
}

ดูรายการธุรกรรม

กำลังตรวจสอบรายการธุรกรรมที่ร้องขอ หากธุรกรรมที่ร้องขอถูกบันทึกลงในบล็อกเชนอย่างถูกต้อง สถานะธุรกรรม (transactions.txStatus) จะถูกอัปเดตเป็นสำเร็จ

URL การร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/tx
URL Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/tx
วิธีการ HTTP GET
ประเภทเนื้อหา application/json

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
Authorization โทเค็นการรับรองตัวตนสำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน string Y
x-appid ID เฉพาะของแอป สามารถตรวจสอบได้จาก Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID string Y

พารามิเตอร์การค้นหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นต้องมี
playerId รหัสผู้เล่น string N
startDate เงื่อนไขการค้นหาวันที่สร้างธุรกรรม (วันเริ่มต้น, yyyy-mm-dd) string N
endDate เงื่อนไขการค้นหาวันที่สร้างธุรกรรม (วันสิ้นสุด, yyyy-mm-dd) string N
page หมายเลขหน้าปัจจุบัน number N
limit จำนวนธุรกรรมที่จะปรากฏใน 1 หน้าผลลัพธ์ number N

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
transactions ข้อมูลธุรกรรม array
transactions.appid รหัสประจำตัวแอพที่ลงทะเบียนใน App Center string
transactions.playerId รหัสผู้เล่น number
transactions.address ที่อยู่ของกระเป๋าที่สร้างธุรกรรม string
transactions.contract ที่อยู่ของสัญญาธุรกรรมที่ร้องขอ string
transactions.requestId รหัสเฉพาะสำหรับการเรียก API string
transactions.requestParams พารามิเตอร์การเรียก API json
transactions.txType ประเภทธุรกรรม string
transactions.txStatus สถานะธุรกรรม string
transactions.txHash Hash ของธุรกรรม string
transactions.createdAt วันที่สร้างธุรกรรม string
transactions.updatedAt วันที่อัปเดตธุรกรรม string
meta ข้อมูลการแบ่งหน้า json
meta.totalItems จำนวนทั้งหมด number
meta.itemCount จำนวนที่แสดง number
meta.itemsPerPage จำนวนที่จะแสดงต่อหน้า number
meta.totalPages จำนวนหน้าทั้งหมด number
meta.currentPage หมายเลขหน้าปัจจุบัน number

ตัวอย่างคำขอ

curl -X 'GET' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/tx?playerId=1324&startDate=2023-08-10&endDate=2023-08-10' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.c2xwallet.hivepc.kr.test' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb20ydXMuaGl2...'

ตัวอย่างการตอบกลับ

{
  "code": 0,
  "message": "success",
  "data": {
    "transactions": [
      {
        "appid": "com.com2us.hivesdk.c2xwallet.hivepc.kr.test",
        "address": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765",
        "contract": "0xB3A634AAC8F04f1946C1c9Fc461055AC1Bdc4b34",
        "requestId": "1643105b-7669-4260-8679-ca967660df41",
        "requestParams": {
          "encoded": true,
          "tokenId": "1",
          "playerId": 1324,
          "callbackUrl": "https://withhive.com/",
          "nftContract": "0xa3fd0377a12b75ac2f70d5f69550332c96582b00",
          "lockContract": "0xB3A634AAC8F04f1946C1c9Fc461055AC1Bdc4b34",
          "lockContractOwner": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765"
        },
        "txType": "UNLOCK",
        "txStatus": "SUCCESS",
        "txHash": "0x78889d58613816c16389a7031634cc781fc725c3b3a88999524c92f67be89236",
        "createdAt": "2023-08-10T07:23:05.000Z",
        "updatedAt": "2023-08-10T07:25:00.000Z"
      }
    ],
    "meta": {
      "totalItems": 11,
      "itemCount": 1,
      "itemsPerPage": 1,
      "totalPages": 11,
      "currentPage": 1
    }
  }
}

API โทเค็น

ตรวจสอบยอดคงเหลือของโทเค็น

ตรวจสอบยอดเงินโทเค็นปัจจุบันของที่อยู่บัญชีเจ้าของโทเค็น (from)

URL การร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/ft/{contract}/account/{from}/balance
URL Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/ft/{contract}/account/{from}/balance
วิธีการ HTTP GET
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
contract ที่อยู่ของสัญญาโทเค็น string Y
from บัญชีเจ้าของโทเค็น string Y

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน{ploygon, xpla} string Y
x-appid รหัสประจำแอปที่ไม่ซ้ำกัน สามารถตรวจสอบได้จาก Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID string Y

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.value ยอดคงเหลือของโทเค็น string
data.rawValue ยอดคงเหลือของโทเค็นที่ไม่ได้ใช้ data.decimals string
data.decimals จำนวนตำแหน่งทศนิยมสูงสุดของโทเค็น number
data.symbol สัญลักษณ์ของโทเค็น string
data.symbolUri URI รูปภาพสัญลักษณ์ของโทเค็น string

ตัวอย่างคำขอ

curl -X 'GET' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/ft/0x94853BdC9c6AdD50D7842D1A3117fab385457470/account/0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765/balance' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.c2xwallet.hivepc.kr.test' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6I...'

ตัวอย่างการตอบกลับ

{
  "code": 0,
  "message": "success",
  "data": {
    "value": "999998999",
    "symbol": "ST",
    "decimals": 18,
    "rawValue": "999998999000000000000000000"
  }
}

API สัญญา

ตรวจสอบสัญญา

ตรวจสอบสัญญาที่ถูกเผยแพร่จากที่อยู่บัญชีที่เผยแพร่สัญญา (owner)

URL ที่ร้องขอ

URL สด https://bc-api.qpyou.cn/service/v1/contract/owner/{owner}
URL Sandbox https://sandbox-bc-api.qpyou.cn/service/v1/contract/owner/{owner}
วิธีการ HTTP GET
ประเภทเนื้อหา application/json

พารามิเตอร์เส้นทาง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
owner ที่อยู่บัญชีที่เผยแพร่สัญญา string Y

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string Y
x-network เครือข่ายบล็อกเชน string Y
x-appid ID เฉพาะของแอป สามารถตรวจสอบได้จากศูนย์แอป Hive Console > รายการ AppID string Y

พารามิเตอร์การค้นหา

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
contractType ประเภทของสัญญา string N
page หมายเลขหน้าปัจจุบัน number N
limit จำนวนสัญญาที่จะแสดงใน 1 หน้า number N

การตอบกลับ

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับ API json
data.contracts ข้อมูลสัญญา array
data.contracts.network ข้อมูลเชน string
data.contracts.owner ที่อยู่บัญชีที่เผยแพร่สัญญา string
data.contracts.address ที่อยู่สัญญา string
data.contracts.type ประเภทสัญญา string
data.contracts.name ชื่อสัญญา string
data.contracts.gameIndex ดัชนีเกม number
data.contracts.gameName ชื่อเกม string
data.contracts.symbol URI รูปภาพสัญลักษณ์สัญญา string
data.contracts.symbolUri URI รูปภาพสัญลักษณ์สัญญา string
data.contracts.createdAt วันที่ลงทะเบียนสัญญา string
meta ข้อมูลการแบ่งหน้า json
meta.totalItems จำนวนทั้งหมด number
meta.itemCount จำนวนที่แสดง number
meta.itemsPerPage จำนวนที่จะแสดงต่อหน้า number
meta.totalPages จำนวนหน้าทั้งหมด number
meta.currentPage หมายเลขหน้าปัจจุบัน number

ตัวอย่างคำขอ

curl -X 'GET' 
  'https://sandbox-bc-api.qpyou.cn/service/v1/contract/owner/0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765?contractType=FT&limit=1' 
  -H 'accept: application/json' 
  -H 'x-network: polygon' 
  -H 'x-appid: com.com2us.hivesdk.c2xwallet.hivepc.kr.test' 
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNvbS5jb20ydX...'

ตัวอย่างการตอบกลับ

{
  "code": 0,
  "message": "success",
  "data": {
    "contracts": [
      {
        "gameIndex": 539,
        "gameName": "HIVE SDK(en)",
        "owner": "0x9428e6eF51FEb2201676deEc11B7E36F7c1F0765",
        "address": "0x05524fd875255ebd9c5f8871015ccc37b7fb20de",
        "name": "Fungible Token",
        "type": "FT",
        "symbol": "Fungible Token",
        "symbolUri": "https://sandbox-bc-file.qpyou.cn/ipfs/QmfJ9oT8Yb69bGr9bKozoYFYDQ4e1qPy31q4W3xsxfVw9L",
        "createdAt": "2023-08-10T01:09:59.000Z",
        "network": "polygon"
      }
    ],
    "meta": {
      "totalItems": 5,
      "itemCount": 1,
      "itemsPerPage": 1,
      "totalPages": 5,
      "currentPage": 1
    }
  }
}

Actions API

Actions API เป็น API ที่ให้บริการ URL ของหน้าเว็บโดยเชื่อมต่อกับเกมที่สร้างขึ้นบนบล็อกเชน XPLA ผู้ใช้สามารถดำเนินการฟังก์ชัน Mint, Convert, Lock, Unlock, Burn ระหว่างสินทรัพย์ในเกมและโทเค็นเกม (XPLA) ผ่าน Actions API ได้

API สร้าง Action

ผู้ใช้สามารถเข้าถึงเว็บเพจที่ได้รับการตอบกลับหลังจากส่งคำขอสร้าง Action (actionLink) และดำเนินการฟังก์ชันบล็อกเชนดังต่อไปนี้

  • Mint: ฟังก์ชันในการออกไอเท็มเป็น NFT โดยตั้งค่า NFT ID (tokenId) เป็นค่าที่ไม่ซ้ำกันสำหรับไอเท็ม เมื่อ NFT ถูกออกแล้ว ไอเท็มในเกมจะต้องถูกปิดการใช้งาน.
  • Convert: ฟังก์ชันในการแลกเปลี่ยนสกุลเงินในเกมกับ XPLA หรือโทเค็นเกม ซึ่งต้องการรหัสสกุลเงินในเกม (gameCurrencyCode) ที่ลงทะเบียนใน Hive Console เมื่อการแลกเปลี่ยนระหว่างสกุลเงินในเกมและโทเค็น (XPLA) เสร็จสิ้น จะต้องมีการอัปเดตจำนวนสกุลเงินในเกม.
  • Lock: ฟังก์ชันในการล็อก NFT ที่ออกแล้วและใช้ซ้ำในเกม ซึ่งต้องมีการเปิดใช้งานไอเท็มในเกม (ไอเท็มที่สามารถใช้ในเกมหลังจากล็อกจะต้องไม่ถูกแลกเปลี่ยนหรือถูกลบในเกมเพื่อให้สามารถปลดล็อกได้).
  • ปลดล็อก: ฟีเจอร์การปลดล็อก NFT ที่อนุญาตให้ผู้ใช้สามารถใช้ไอเทมที่ใช้งานอยู่ในเกมอีกครั้งจากกระเป๋าเงินของผู้ใช้ โดยต้องมีค่า NFT ID (tokenId) ที่ไม่ซ้ำกันสำหรับไอเทม และสามารถปลดล็อกได้เฉพาะจากบัญชีและกระเป๋าเงินที่ล็อก NFT เท่านั้น เมื่อทำการปลดล็อก อินเกมไอเทมจะต้องถูกทำให้ไม่สามารถใช้งานได้.
  • เผา: ฟังก์ชันในการทำลาย NFT ที่ออกแล้วและใช้ไอเท็มนั้นในเกม หลังจากเผาแล้วสามารถแลกเปลี่ยนและลบไอเท็มในเกมได้

ทำการ Mint, Convert, Lock, Unlock, Burn และส่งผลลัพธ์ผ่าน callbackUrl

Note

Action ที่สร้างขึ้นครั้งหนึ่งจะมีอายุ 5 นาที และเมื่อผ่านไป 5 นาทีหรือเมื่อทำงานของ Action นั้นเสร็จสิ้น จะไม่สามารถใช้งานได้อีกต่อไป

URL คำขอ

ลิงก์สด https://bc-api.qpyou.cn/xpla-platform/v1/actions
ลิงก์ Sandbox https://sandbox-bc-api.qpyou.cn/xpla-platform/v1/actions
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization โทเค็นการรับรองความถูกต้องสำหรับการเรียก API string Y

เนื้อหาการร้องขอ

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
actionType การแยกประเภทฟังก์ชันบล็อกเชน {MINT | CONVERT | LOCK | UNLOCK | BURN} string Y
info ข้อมูลตัวเลือกสำหรับฟังก์ชันบล็อกเชน json Y
appid หมายเลข ID ที่ไม่ซ้ำกันของแอปบล็อกเชน สามารถตรวจสอบได้จาก Hive Console App Center > รายการ AppID string Y
gameAppid หมายเลข ID ที่ไม่ซ้ำกันของเกมแอป สามารถตรวจสอบได้จาก Hive Console App Center > รายการ AppID string Y
playerId หมายเลข ID ของผู้เล่น number Y
callbackUrl ที่อยู่ที่จะได้รับผลลัพธ์สำเร็จ/ล้มเหลวหลังจากบันทึกธุรกรรมลงในบล็อกเชน string Y
language รหัสภาษา string Y
ข้อมูลแต่ละองค์ประกอบที่บรรจุใน request body ตาม actionType
  • มินต์
    ชื่อฟิลด์ คำอธิบาย ประเภท
    nftContract ที่อยู่ของ NFT สัญญา string
    itemName ชื่อไอเทมในเกม string
    tokenId รหัสระบุตัวตน NFT (ค่าที่ไม่ซ้ำกันของไอเทม) string
    metadata ข้อมูลเมตา (ดูที่อยู่ API request body สำหรับการออก NFT) json
  • CONVERT
    ชื่อฟิลด์ คำอธิบาย ประเภท
    convertPool ที่อยู่บัญชีของ Convert Pool string
    gameCurrencyCode รหัสสกุลเงินในเกม string
    userGameCurrencyAmount จำนวนสกุลเงินในเกมที่ผู้ใช้จะแลกเปลี่ยน number
    minCurrencyAmount จำนวนสกุลเงินในเกมขั้นต่ำที่สามารถแลกเปลี่ยนได้ number
    maxCurrencyAmount จำนวนสกุลเงินในเกมสูงสุดที่สามารถแลกเปลี่ยนได้ number
    totalExchangedCurrencyAmount จำนวนสกุลเงินในเกมที่ผู้ใช้แลกเปลี่ยนไปจนถึงปัจจุบัน number
  • LOCK
    ชื่อฟิลด์ คำอธิบาย ประเภท
    nftContract ที่อยู่ของ NFT สัญญา string
    lockContract ที่อยู่ของ Lock สัญญา string
  • UNLOCK
    ชื่อฟิลด์ คำอธิบาย ประเภท
    nftContract ที่อยู่ของ NFT สัญญา string
    lockContract ที่อยู่ของ Lock สัญญา string
    tokenId รหัสระบุตัวตน NFT (ค่าที่ไม่ซ้ำกันของไอเทม) string
  • BURN
    ชื่อฟิลด์ คำอธิบาย ประเภท
    nftContract ที่อยู่ของ NFT คอนแทรค string

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับจาก API json
data.id รหัสเฉพาะของ Action string
data.actionType ประเภทของฟังก์ชันบล็อกเชน {MINT | CONVERT | LOCK | UNLOCK | BURN} string
data.info ข้อมูลการตอบกลับตาม actionType json
data.info.serviceFee ค่าธรรมเนียมบริการสำหรับการใช้ฟังก์ชันบล็อกเชน number
data.appid รหัสเฉพาะของแอปบล็อกเชน สามารถตรวจสอบได้ที่ Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID json
data.gameAppid รหัสเฉพาะของเกมแอป สามารถตรวจสอบได้ที่ Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID string
data.playerId รหัสผู้เล่น number
data.language รหัสภาษา string
data.callbackUrl ที่อยู่ที่จะได้รับผลลัพธ์สำเร็จ/ล้มเหลวหลังจากบันทึกธุรกรรมลงในบล็อกเชน string
data.company หมายเลขเฉพาะของบริษัท number
data.gameindex ดัชนีเกม number
data.appindex หมายเลขเฉพาะของแอปที่มอบให้โดย Hive แอปเซ็นเตอร์ number
data.actionLink ลิงก์ไปยังหน้าเว็บที่สามารถดำเนินการฟังก์ชันบล็อกเชนได้ string
data.result ผลลัพธ์ของการดำเนินการ Action string
data.createdAt วันที่ลงทะเบียน Action string
data.updatedAt วันที่แก้ไข Action string
ข้อมูลแต่ละองค์ประกอบที่บรรจุอยู่ในข้อมูลการตอบกลับตาม actionType
  • MINT: ข้อมูล MINT ของ request body เหมือนกัน
  • CONVERT
    ชื่อฟิลด์ คำอธิบาย ประเภท
    convertPool ที่อยู่บัญชี convertPool string
    gameCurrencyCode รหัสสกุลเงินเกม string
    userGameCurrencyAmount จำนวนสกุลเงินเกมที่ผู้ใช้จะแลกเปลี่ยน number
    minCurrencyAmount จำนวนขั้นต่ำของสกุลเงินเกมที่สามารถแลกเปลี่ยนได้ number
    maxCurrencyAmount จำนวนสูงสุดของสกุลเงินเกมที่สามารถแลกเปลี่ยนได้ number
    totalExchangedCurrencyAmount จำนวนสกุลเงินเกมที่ผู้ใช้แลกเปลี่ยนไปจนถึงปัจจุบัน number
    currencyName ชื่อสกุลเงินเกม string
    currencyLogoUrl URL โลโก้สกุลเงินเกม string
    assetType ประเภทโทเคน {token | coin} string
    ftContract ที่อยู่โทเคนเกม string
    tokenName ชื่อโทเคนเกม string
    tokenLogoUrl URL โลโก้โทเคนเกม string
  • LOCK: ข้อมูล LOCK ของ request body เหมือนกัน
  • UNLOCK: ข้อมูล UNLOCK ของ request body เหมือนกัน
  • BURN: ข้อมูล BURN ของ request body เหมือนกัน

ตัวอย่างคำขอ

    curl -X 'POST' \
  'https://sandbox-bc-api.qpyou.cn/xpla-platform/v1/actions' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXlObyI6NiwiaWQiOiIvVWpXN....' \
  -H 'Content-Type: application/json' \
  -d '{

// MINT--------------------------------------------------------------------------------------------
  "actionType": "MINT",
  "info": {
    "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s",
    "itemName": "아비터의 로브",
    "tokenId": "A1234",
    "metadata": {
      "name": "Arbiter'\''s Robe",
      "description": "A robe worn by the arbiter of the world.",
      "image": "https://image01.c2x.world/equip_92053030.gif",
      "animationUrl": "https://image01.c2x.world/equip_92053030.gif",
      "youtubeUrl": "https://www.youtube.com/watch?v=gmdexWtuzAE&pp=ygUEeHBsYQ%3D%3D",
      "externalUrl": "https://dex.c2xnft.com/market?key=4423",
      "attributes": [
        {
          "traitType": "Category",
          "value": "Game"
        }
      ]
    }
  },

// CONVERT--------------------------------------------------------------------------------------------

   "actionType": "CONVERT",
   "info": {
      "convertPool": "xpla1zaztjwm0tequ8rf70vk6f5qsen55zsy2445j94",
      "gameCurrencyCode": "J94597FISHGOLD0001",

      "userGameCurrencyAmount": 1000,
      "minCurrencyAmount": 100,
      "maxCurrencyAmount": 100000,
      "totalExchangedCurrencyAmount": 100
   },

// LOCK--------------------------------------------------------------------------------------------

   "actionType": "lock",
   "info": {
     "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s", 
     "lockContract": "xpla139lxe8d6ml2hqtkdz9nnw2u47pqyw9spcgqgd6apmyt2wnqc4nwqecf0xp"
   },

// UNLOCK--------------------------------------------------------------------------------------------

   "actionType": "unlock",
    "info": {
     "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s", 
     "tokenId": "283ed-8b23-e4a", 
     "lockContract": "xpla139lxe8d6ml2hqtkdz9nnw2u47pqyw9spcgqgd6apmyt2wnqc4nwqecf0xp"
   },

// BURN--------------------------------------------------------------------------------------------

   "actionType": "burn",
   "info": {"nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s"},

// -------------------------------------------------------------------------------------------------
  "appid": "com.gcp.stepbystep.pcweb.blockchain",
  "gameAppid": "com.gcp.stepbystep.pcweb.blockchain",
  "playerId": 1,
  "callbackUrl": "https://sandbox-bc-api.qpyou.cn/sample/v1/backend/callback",
  "language": "ko"
}'
</pre>

<h3>Response Sample</h3>
<pre class="lang:json decode:true">
    // MINT

    {
         "code": 0,
         "message": "success",
         "data": {
    // MINT--------------------------------------------------------------------------------------------
                "actionType": "MINT",
                "info": {
                 "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s",
                 "itemName": "아비터의 로브",
                 "tokenId": "A1234",
                 "metadata": {
                        "name": "Arbiter's Robe",
                        "description": "A robe worn by the arbiter of the world.",
                        "image": "https://image01.c2x.world/equip_92053030.gif",
                        "animationUrl": "https://image01.c2x.world/equip_92053030.gif",
                        "youtubeUrl": "https://www.youtube.com/watch?v=gmdexWtuzAE&pp=ygUEeHBsYQ%3D%3D",
                        "externalUrl": "https://dex.c2xnft.com/market?key=4423",
                        "attributes": [
                             {
                                    "traitType": "Category",
                                    "value": "Game"
                             }
                        ]
                 },
                 "serviceFee": 0.2
                },
                "id": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
                "actionLink": "https://sandbox-xpla-platform.withhive.com/games/mint?access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&action-id=b6d2ca1b-b43a-4129-bf54-9a189e3aa664&lang=ko",
    // CONVERT--------------------------------------------------------------------------------------------
                "actionType": "CONVERT",
                "info": {
                 "convertPool": "xpla1zaztjwm0tequ8rf70vk6f5qsen55zsy2445j94",
                 "gameCurrencyCode": "J94597FISHGOLD0001",

                "userGameCurrencyAmount": 1000,
                 "minCurrencyAmount": 100,
                 "maxCurrencyAmount": 100000,
                 "totalExchangedCurrencyAmount": 100,
                 "currencyName": "GOLD",
                 "currencyLogoUrl": "https://sandbox-bc-file.qpyou.cn/ipfs/QmdqBYarCoFpPzkG9tgQJoe9NqcLuP9rBnVWn8tRo51uTR",
                 "assetType": "token",
                 "ftContract": "xpla1dhwmvf876g4fwhg28x6ep7jmulrreu8ztrhfk6wmp83f9y3xjstsz78pzy",
                 "tokenName": "FISH",
                 "tokenLogoUrl": "https://sandbox-bc-file.qpyou.cn/ipfs/QmbLRYXgk57KeanzmKuxjv2TtvXwt4DrFoFFYTH1MPkCgU",
                 "serviceFee": 10
                },
                "id": "81c705ac-2e03-4fa7-bb10-feb533b5e754",
                "actionLink": "https://sandbox-xpla-platform.withhive.com/games/convert?access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&action-id=81c705ac-2e03-4fa7-bb10-feb533b5e754&lang=ko",
    // LOCK--------------------------------------------------------------------------------------------
                "actionType": "LOCK",
                "info": {
                    "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s",
                    "lockContract": "xpla139lxe8d6ml2hqtkdz9nnw2u47pqyw9spcgqgd6apmyt2wnqc4nwqecf0xp",
                    "serviceFee": 0.1
                },
                "id": "20cf84b8-af60-4ad4-9251-babf1a6778c3",
                "actionLink": "https://sandbox-xpla-platform.withhive.com/games/convert?access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&action-id=81c705ac-2e03-4fa7-bb10-feb533b5e754&lang=ko",
    // UNLOCK--------------------------------------------------------------------------------------------
                "actionType": "UNLOCK",
                "info": {
                    "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s",
                    "tokenId": "283ed-8b23-e4a",
                    "lockContract": "xpla139lxe8d6ml2hqtkdz9nnw2u47pqyw9spcgqgd6apmyt2wnqc4nwqecf0xp",
                    "serviceFee": 0.1
                },
                "id": "8e701ff2-d37b-473a-bdd7-886e40e18d7c",
                "actionLink": "https://sandbox-xpla-platform.withhive.com/games/unlock?access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&action-id=b6d2ca1b-b43a-4129-bf54-9a189e3aa664&lang=ko",
    // BURN--------------------------------------------------------------------------------------------
                "actionType": "BURN",
                "info": {
                    "nftContract": "xpla1wtv5dwu90pe4jqfckyhr6cq3hdr7rrjdta7ntsczawe8ffupsq3s25sg0s",
                    "serviceFee": 0.1
                },
                "id": "8fb0c236-71a3-4b40-9ba0-d558f351757a",
                "actionLink": "https://sandbox-xpla-platform.withhive.com/games/burn?access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9&action-id=b6d2ca1b-b43a-4129-bf54-9a189e3aa664&lang=ko",
    // --------------------------------------------------------------------------------------------------
                "appid": "com.gcp.stepbystep.pcweb.blockchain",
                "gameAppid": "com.gcp.stepbystep.android.google",
                "pid": 1,
                "language": "ko",
                "callbackUrl": "https://sandbox-bc-api.qpyou.cn/sample/v1/backend/callback",
                "company": 3,
                "gameindex": 597,
                "appindex": 21001,
                "result": null,
                "createdAt": "2024-08-05T08:33:15.448Z",
                "updatedAt": "2024-08-05T08:33:15.448Z"
         }
    }

callbackUrl API

เมื่อผู้ใช้เรียกใช้ฟังก์ชัน Action (MINT, LOCK, UNLOCK, BURN, CONVERT) หลังจากนั้นสามารถขอ callbackUrl เพื่อรับผลลัพธ์ของการดำเนินการ

URL ที่ร้องขอ

URL กำหนดเอง
HTTP Method POST
Content-Type application/json

พารามิเตอร์หัวเรื่อง

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
Authorization มีพารามิเตอร์ token ใน query ของ callbackUrl: หากไม่มีพารามิเตอร์ Bearer ${token} ให้ละเว้น string N
X-Request-ID ID ที่ได้รับเมื่อทำการร้องขอ Action string Y
User-Agent XplaPlatform/1.0 string Y

Request Body (MINT, LOCK, UNLOCK, BURN ใช้เมื่อ callbackUrl)

  • ส่งสถานะการดำเนินการ (result.actionStatus) สำหรับการดำเนินการ Mint, Lock, Unlock, Burn และความสามารถในการใช้งานไอเท็มที่ต้องการการอัปเดตในเกม (result.isAvailableItem)。
  • ต้องการการอัปเดตเกี่ยวกับไอเท็ม (data.nft.tokenId) ที่ผู้ใช้ (data.user.playerId) ถือครอง。
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
result ผลลัพธ์การดำเนินการ json Y
result.actionStatus สถานะการดำเนินการ {SUCCESS, FAILRUE, EXPIRATION, CANCELLATION} string Y
result.actionType ประเภทของการดำเนินการ MINT, BURN, LOCK, UNLOCK json Y
result.txHash แฮชธุรกรรม string Y
result.isAvailableItem สถานะการใช้งานของไอเท็มในเกม boolean Y
data รายละเอียดการดำเนินการ json Y
data.user ข้อมูลผู้ใช้ที่ใช้ในการดำเนินการ json Y
data.user.playerId รหัสผู้เล่น string Y
data.user.wallet ที่อยู่กระเป๋าเงินของผู้เล่น string Y
data.nft ข้อมูล nft ที่ใช้ในการดำเนินการ json Y
data.nft.nftContract ที่อยู่สัญญา NFT string Y
data.nft.tokenId รหัส NFT string Y
data.serviceFeeAmount ค่าธรรมเนียมบริการที่ผู้ใช้จ่าย (XPLA) number Y

เนื้อหาของคำขอ (เมื่อใช้ CONVERT callbackUrl)

  • ส่งสถานะการดำเนินการของการแปลง (result.actionStatus) และจำนวนทรัพยากรเกมที่ต้องการอัปเดตในเกม (result.amount)。
  • จำเป็นต้องอัปเดตจำนวนทรัพยากรเกมที่ผู้ใช้ถือครองซึ่งตรงกับรหัสทรัพยากรเกม (result.amount.currencyCode) (result.amount)。
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็นหรือไม่
result ผลลัพธ์ของการดำเนินการ json Y
result.actionStatus สถานะการดำเนินการ {SUCCESS, FAILRUE, EXPIRATION, CANCELLATION} string Y
result.actionType ประเภทของการดำเนินการ CONVERT json Y
result.txHash แฮชธุรกรรม string Y
result.amount ข้อมูลจำนวนผลลัพธ์การแปลง json Y
result.amount.changeUserAmount จำนวนการเปลี่ยนแปลงของสกุลเงินเกมของผู้ใช้ (+, -) number Y
result.amount.changePoolAmount จำนวนการเปลี่ยนแปลงของสกุลเงินเกมในพูลการแปลง (+, -) number Y
result.amount.currencyCode รหัสสกุลเงินเกม string Y
data เนื้อหาการดำเนินการ json Y
data.user ข้อมูลผู้ใช้ที่ใช้ในการดำเนินการ json Y
data.user.playerId รหัสผู้เล่น string Y
data.user.wallet ที่อยู่กระเป๋าของผู้เล่น string Y
data.convert ข้อมูลการแปลงที่ใช้ในการดำเนินการ json Y
data.convert.type ประเภทการแปลง (CONVERT_TO_TOKEN, CONVERT_TO_CURRENCY) string Y
data.convert.convertPool ที่อยู่พูลการแปลง string Y
data.convert.ftContract ที่อยู่โทเค็น (หรือ XPLA) string Y
data.convert.currencyCode รหัสสกุลเงินเกม string Y
data.in ข้อมูลจำนวนที่ไหลเข้าสู่พูลการแปลง json Y
data.in.amount จำนวนโทเค็น (สกุลเงิน) ที่ผู้ใช้ร้องขอ number Y
data.in.txFeeAmount ค่าธรรมเนียมธุรกรรมที่ผู้ใช้จ่าย number Y
data.in.txFeeType XPLA หรือ CURRENCY string Y
data.out ข้อมูลจำนวนที่ไหลออกจากพูลการแปลง json Y
data.out.amout จำนวนโทเค็น (สกุลเงิน) ที่ผู้ใช้จะได้รับ number Y
data.serviceFeeAmount ค่าธรรมเนียมบริการที่ผู้ใช้จ่าย (XPLA) number Y

XPLA แพลตฟอร์ม API

API ของแพลตฟอร์ม XPLA เป็น API ที่ให้ URL ของหน้าเว็บโดยเชื่อมต่อกับเกมที่ใช้บล็อกเชน XPLA ผู้ใช้สามารถดำเนินการฟังก์ชัน Mint, Convert, Lock, Unlock, Burn ระหว่างทรัพย์สินในเกมและโทเค็นเกม (XPLA) ผ่าน API ของแพลตฟอร์ม XPLA ได้

API สำหรับสร้างลิงก์เว็บ XPLA

ผู้ใช้สามารถเข้าถึงหน้าเว็บที่ได้รับการตอบกลับหลังจากขอสร้างลิงก์เว็บ XPLA (actionLink) และสามารถดำเนินการฟังก์ชันบล็อกเชนดังต่อไปนี้

  • Mint: ฟังก์ชันในการออก NFT สำหรับไอเทม โดยกำหนดค่าเฉพาะสำหรับไอเทมด้วย NFT ID (tokenId) เมื่อ NFT ถูกออกแล้ว ไอเทมในเกมจะต้องถูกทำให้ไม่สามารถใช้งานได้
  • Convert: ฟังก์ชันในการแลกเปลี่ยนระหว่างสกุลเงินในเกมและ XPLA หรือโทเคนเกม โดยต้องมีรหัสสกุลเงินในเกม (gameCurrencyCode) ที่ลงทะเบียนใน Hive Console เมื่อการแลกเปลี่ยนระหว่างสกุลเงินในเกมและโทเคน (XPLA) เสร็จสิ้น จะต้องมีการอัปเดตจำนวนสกุลเงินในเกม
  • Lock: ฟังก์ชันในการล็อก NFT ที่ออกแล้วและใช้งานในเกมอีกครั้ง โดยต้องมีการเปิดใช้งานไอเทมในเกม (ไอเทมที่สามารถใช้งานได้ในเกมหลังจากล็อกจะต้องไม่ถูกแลกเปลี่ยนหรือถูกลบออกในเกมเพื่อให้สามารถปลดล็อกได้)
  • Unlock: ฟังก์ชันในการปลดล็อก NFT เพื่อให้สามารถใช้งานไอเทมที่กำลังใช้งานในเกมได้อีกครั้ง โดยต้องมีค่าเฉพาะสำหรับไอเทม NFT ID (tokenId) และสามารถปลดล็อกได้เฉพาะจากบัญชีและกระเป๋าเงินที่ล็อก (Lock) NFT เท่านั้น เมื่อทำการปลดล็อกแล้ว ไอเทมในเกมจะต้องถูกทำให้ไม่สามารถใช้งานได้
  • Burn: ฟังก์ชันในการทำลาย NFT ที่ออกแล้วและใช้งานไอเทมในเกม โดยหลังจากการเผา (Burn) จะสามารถแลกเปลี่ยนและลบไอเทมในเกมได้

ทำการทำงานฟังก์ชัน Mint, Convert, Lock, Unlock, Burn แล้วส่งผลลัพธ์ผ่าน callbackUrl

Note

ลิงก์เว็บ XPLA ที่สร้างขึ้นจะมีอายุ 5 นาที และหลังจากผ่านไป 5 นาทีหรือเมื่อฟังก์ชันนั้นเสร็จสิ้น จะไม่สามารถใช้งานได้อีกต่อไป.

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0:สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบกลับจาก API json
data.id ID เฉพาะของ XPLA Web Link string
data.actionType การแยกประเภทฟังก์ชันของบล็อกเชน string
data.info ข้อมูลการตอบกลับตาม actionType json
data.info.serviceFee ค่าธรรมเนียมบริการสำหรับการใช้ฟังก์ชันของบล็อกเชน number
data.appid ID เฉพาะของแอปบล็อกเชน สามารถตรวจสอบได้ที่ Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID json
data.gameAppid ID เฉพาะของเกมแอป สามารถตรวจสอบได้ที่ Hive คอนโซล แอปเซ็นเตอร์ > รายการ AppID string
data.playerId ID ผู้เล่น number
data.language รหัสภาษา string
data.callbackUrl ที่อยู่ที่จะแจ้งผลลัพธ์สำเร็จ/ล้มเหลวหลังจากบันทึกธุรกรรมในบล็อกเชน string
data.company หมายเลขเฉพาะของบริษัท number
data.gameindex ดัชนีเกม number
data.appindex หมายเลขเฉพาะของแอปที่มอบให้โดย Hive แอปเซ็นเตอร์ number
data.actionLink ลิงก์ไปยังหน้าเว็บที่สามารถดำเนินการฟังก์ชันของบล็อกเชน string
data.result ผลลัพธ์การประมวลผลของ XPLA Web Link string
data.createdAt วันที่สร้าง XPLA Web Link string
data.updatedAt วันที่แก้ไข XPLA Web Link string

CallbackUrl API

เมื่อผู้ใช้เรียกใช้ฟังก์ชัน Action (MINT, LOCK, UNLOCK, BURN, CONVERT) หลังจากนั้นสามารถรับผลลัพธ์ของการดำเนินการได้โดยการร้องขอ callbackUrl

พารามิเตอร์ส่วนหัว

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
Authorization หากมีพารามิเตอร์ token ใน callbackUrl: Bearer ${token}
หากไม่มีพารามิเตอร์: ข้ามไป
string N
X-Request-ID ID ที่ได้รับเมื่อทำการขอสร้างลิงก์ XPLA string Y
User-Agent XplaPlatform/1.0 string Y

Request Body (MINT, LOCK, UNLOCK, BURN ใช้เมื่อ CallbackUrl)

ส่งสถานะการดำเนินการสำหรับการดำเนินการ Mint, Lock, Unlock, Burn (result.actionStatus) และความสามารถในการใช้ไอเทมที่ต้องการการอัปเดตในเกม (result.isAvailableItem)

ผู้ใช้(data.user.playerId)ต้องการการอัปเดตไอเทมที่ถืออยู่(data.nft.tokenId)

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
result ผลลัพธ์ที่ประมวลผลหลังจากการแลกเปลี่ยนใน XPLA Web Link json Y
result.actionStatus สถานะการดำเนินการ string Y
result.actionType ประเภท XPLA Web Link MINT, BURN, LOCK, UNLOCK json Y
result.txHash แฮชของธุรกรรม string Y
result.isAvailableItem ความสามารถในการใช้ไอเทมในเกม boolean Y
data เนื้อหาที่ประมวลผลใน XPLA Web Link json Y
data.user ข้อมูลผู้ใช้ที่ประมวลผลใน XPLA Web Link json Y
data.user.playerId รหัสผู้เล่น string Y
data.user.wallet ที่อยู่กระเป๋าเงินของผู้เล่น string Y
data.nft ข้อมูล nft ที่ประมวลผลใน XPLA Web Link json Y
data.nft.nftContract ที่อยู่ของสัญญา NFT string Y
data.nft.tokenId รหัส NFT string Y
data.serviceFeeAmount ค่าธรรมเนียมบริการที่ผู้ใช้จ่าย (XPLA) number Y

Request Body (เมื่อใช้ CONVERT CallbackUrl)

ส่งสถานะการดำเนินการของการแปลง (result.actionStatus) และจำนวนทรัพยากรเกมที่ต้องอัปเดตในเกม (result.amount)

ต้องการอัปเดตจำนวนทรัพยากรเกมที่ผู้ใช้ถือครองซึ่งตรงกับรหัสทรัพยากรเกม (result.amount.currencyCode) (result.amount)

ชื่อฟิลด์ คำอธิบาย ประเภท ความจำเป็น
result ผลลัพธ์ที่ประมวลผลหลังจากการแลกเปลี่ยนใน XPLA Web Link json Y
result.actionStatus สถานะการดำเนินการ string Y
result.actionType ประเภท XPLA Web Link CONVERT json Y
result.txHash แฮชธุรกรรม string Y
result.amount ข้อมูลจำนวนผลลัพธ์การแปลง json Y
result.amount.changeUserAmount จำนวนการเปลี่ยนแปลงของเกมทรัพย์สินของผู้ใช้ (+, -) number Y
result.amount.changePoolAmount จำนวนการเปลี่ยนแปลงของเกมทรัพย์สินในพูลแปลง (+, -) number Y
result.amount.currencyCode รหัสเกมทรัพย์สิน string Y
data เนื้อหาที่ประมวลผลใน XPLA Web Link json Y
data.user ข้อมูลผู้ใช้ที่ประมวลผลใน XPLA Web Link json Y
data.user.playerId รหัสผู้เล่น string Y
data.user.wallet ที่อยู่กระเป๋าเงินของผู้เล่น string Y
data.convert ข้อมูลการแปลงที่ประมวลผลใน XPLA Web Link json Y
data.convert.type ประเภทการแปลง (CONVERT_TO_TOKEN, CONVERT_TO_CURRENCY) string Y
data.convert.convertPool ที่อยู่พูลแปลง string Y
data.convert.ftContract ที่อยู่โทเค็น (หรือ XPLA) string Y
data.convert.currencyCode รหัสเกมทรัพย์สิน string Y
data.in ข้อมูลจำนวนที่ไหลเข้าสู่พูลแปลง json Y
data.in.amount จำนวนโทเค็น (ทรัพย์สิน) ที่ผู้ใช้ขอ number Y
data.in.txFeeAmount ค่าธรรมเนียมธุรกรรมที่ผู้ใช้จ่าย number Y
data.in.txFeeType XPLA หรือ CURRENCY string Y
data.out ข้อมูลจำนวนที่ไหลออกจากพูลแปลง json Y
data.out.amout จำนวนโทเค็น (ทรัพย์สิน) ที่ผู้ใช้จะได้รับ number Y
data.serviceFeeAmount ค่าธรรมเนียมบริการที่ผู้ใช้จ่าย (XPLA) number Y