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

มิ้นต์

Mint เป็นฟีเจอร์ที่ออกไอเท็มเกมในรูปแบบ NFT มันออก NFT ตาม เนื้อหาที่กำหนด ในแท็บการออกของผู้ใช้ในเมนู Blockchain > XPLA > NFT ในคอนโซล Hive

การไหลของการดำเนินการของฟังก์ชัน mint

ด้านล่างนี้คือกระบวนการดำเนินการสำหรับฟีเจอร์ Mint เพื่อดำเนินการฟีเจอร์ Mint กรุณาปฏิบัติตามภาพแผนภูมิการไหลและเนื้อหาคำแนะนำด้านล่างเพื่อดำเนินการโค้ดใน เกมไคลเอนต์ (Hive SDK, เกมไคลเอนต์) และพื้นที่เซิร์ฟเวอร์เกม ส่วนที่มี ดอกจันสีน้ำเงิน ในภาพด้านล่างคือพื้นที่ที่นักพัฒนาต้องทำงาน สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับงานหลัก กรุณาอ้างอิงจากคำแนะนำด้านล่าง

Note

หลังจากที่คุณทำการ เตรียมการ เสร็จแล้ว คุณต้องดำเนินการฟีเจอร์ Mint

Note

เพื่อดำเนินการฟีเจอร์ Mint คุณต้องใช้ Hive SDK

การนำไปใช้การเข้าสู่ระบบใน hive SDK

Implement โค้ดในเกมไคลเอนต์เพื่อให้ผู้ใช้สามารถเข้าสู่ระบบโดยใช้ IdP login ด้วยฟีเจอร์การตรวจสอบสิทธิ์ SDK Hive การเข้าสู่ระบบผ่าน Web login ก็ได้รับการสนับสนุนเช่นกันในฐานะวิธีการเข้าสู่ระบบ

การ implement ปุ่มการสร้าง NFT

สร้าง UI ในไคลเอนต์เกมที่อนุญาตให้ผู้ใช้เปิดหน้าการออก NFT ตัวอย่างเช่น เมื่อผู้ใช้เลือกไอเท็มจากคลังตัวละครหลังจากเข้าถึงเกม ปุ่ม แปลงไอเท็มเป็น NFT ควรปรากฏขึ้น เมื่อกดปุ่มนี้ หน้าการออก NFT ควรเปิดขึ้นตามเนื้อหาด้านล่าง

ขอแปลงรายการเป็น NFT

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

หน้าเว็บการออก NFT เป็นหน้าเว็บที่อนุญาตให้ผู้ใช้แปลงไอเท็มที่เป็นเจ้าของของตนให้เป็น NFT หน้าเว็บนี้จัดทำโดยเซิร์ฟเวอร์บล็อกเชน Hive เซิร์ฟเวอร์เกมเรียก API การสร้างลิงก์เพื่อดึง URL หน้าเว็บนี้ (webLinkUrl) เมื่อผู้ใช้เข้าถึงหน้าเว็บนี้ พวกเขาสามารถสร้างไอเท็มในเกมเป็น NFT บนบล็อกเชน

หมายเหตุ

นี่คือข้อควรระวังที่นักพัฒนาควรปฏิบัติเมื่อทำการเรียก API.

เกมเซิร์ฟเวอร์ URL

gameServerUrl ถูกใช้เป็น Request URL สำหรับ API ที่เซิร์ฟเวอร์บล็อกเชน Hive เรียกไปยังเซิร์ฟเวอร์เกม (Item Validation API และ Result Check API).

URL เกมเซิร์ฟเวอร์และโทเค็น

เมื่อเซิร์ฟเวอร์บล็อกเชน Hive เรียกใช้ API การตรวจสอบรายการ หรือ API การยืนยันผล เซิร์ฟเวอร์เกมสามารถเลือกใช้ โทเค็นการตรวจสอบสิทธิ์ (Header Parameters) สำหรับการเรียก API ซึ่งขึ้นอยู่กับดุลยพินิจของนักพัฒนา หากต้องการใช้โทเค็นการตรวจสอบสิทธิ์สำหรับการเรียก API เซิร์ฟเวอร์เกมต้องแนบโทเค็นการตรวจสอบสิทธิ์นี้ล่วงหน้าเป็น token (Query Parameter) ไปยัง gameServerUrl เมื่อเรียกใช้ API การสร้างลิงก์การออก NFT และส่งไปยังเซิร์ฟเวอร์บล็อกเชน Hive ตัวอย่างแสดงด้านล่าง

"gameServerUrl": "https://api.com2us.com/hive?token=sInR5cCI6IkpXVC..."

คุณสมบัติ

attributes ถูกใช้เป็น Request Body เมื่อเซิร์ฟเวอร์บล็อกเชน Hive เรียกใช้ API การตรวจสอบรายการ และ API การยืนยันผลลัพธ์ ไปยังเซิร์ฟเวอร์เกม.

เมื่อคุณเรียก API ด้วยรหัสเฉพาะของรายการใน attributes รหัสเฉพาะสามารถรวมอยู่ใน Request Body attributes ของ Result Check API ได้เช่นกัน ในกรณีนี้ คุณสามารถอัปเดตสถานะของรายการด้วยรหัสเฉพาะที่ตรงกัน

ระยะเวลาความถูกต้องของลิงก์หน้าออก NFT

ลิงก์ไปยังหน้าที่สร้างขึ้นครั้งเดียวจะใช้ได้เป็นเวลา 10 นาทีเท่านั้น ตามเซสชันที่เข้าถึงครั้งแรก

URL การร้องขอ

รายการ ค่า
URL ที่ใช้งานจริง https://bc-platform-api.withhive.com/web3/v1/web-link
URL สำหรับ Sandbox https://sandbox-bc-platform-api.withhive.com/web3/v1/web-link
วิธีการ HTTP POST
ประเภทเนื้อหา application/json

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

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

เนื้อหาคำขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
type MINT สตริง ใช่
playerId รหัสผู้เล่น หมายเลข ใช่
characterId รหัสตัวละคร สตริง ใช่
gameServerUrl ที่อยู่เพื่อรับผลลัพธ์ความสำเร็จ/ความล้มเหลวหลังจากการตรวจสอบรายการและการดำเนินการฟังก์ชัน ส่งโทเค็นการรับรองความถูกต้องผ่านพารามิเตอร์ Query token สำหรับการตรวจสอบรายการ/การยืนยันผลลัพธ์ API header สตริง ใช่
data ข้อมูลพารามิเตอร์คำขอตามประเภท json ไม่

วัตถุข้อมูล

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
itemId ตัวระบุเทมเพลต NFT ของผู้ใช้ (การลงทะเบียนในคอนโซล) สตริง ใช่
attributes เมตาดาต้าเพิ่มเติมที่จะนำไปใช้ต่อแต่ละโทเคน (เช่น รหัสสินค้าที่ไม่ซ้ำกัน, ความแข็งแกร่ง, ความคล่องตัว, ฯลฯ คุณลักษณะที่จะรวมอยู่ใน NFT) อาร์เรย์ json ไม่
attributes.traitType ชื่อรายการที่ประกอบขึ้นเป็นคุณลักษณะ สตริง ไม่
attributes.value ค่าคุณลักษณะ สตริง ไม่

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

curl -X 'POST' \
  'https://sandbox-bc-platform-api.withhive.com/web3/v1/web-link' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXlObyI6NiwiaWQiOiIvVWpXN....' \
  -H 'Content-Type: application/json' \
  -d '{
  "type": "MINT",
  "playerId": 1276814678,
  "characterId": "zeratu",
  "gameServerUrl": "https://api.com2us.com/hive" // When sending authentication token: "gameServerUrl": "https://api.com2us.com/hive?token=sInR5cCI6IkpXVC..."
  "data": {
    "itemId": "HIVE",
    "attributes": [
        {
          "traitType": "item_id",
          "value": "sward-3283272101239"
        },
        {
          "traitType": "strength",
          "value": "50"
        },
        {
          "traitType": "agility",
          "value": "10"
        }
      ]
  },
}'

การตอบสนอง

ชื่อฟิลด์ คำอธิบาย ประเภท
code รหัสผลลัพธ์การเรียก API, 0: สำเร็จ number
message ข้อความผลลัพธ์ string
data ข้อมูลการตอบสนองของ API json
data.webLinkId รหัสลิงก์เว็บ (UUID) string
data.webLinkUrl ลิงก์เว็บแบบใช้ครั้งเดียวที่สร้างขึ้น (URL) string
data.expiration วันที่หมดอายุของลิงก์เว็บ (ISO 8601) string

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

{
  "code": 0,
  "message": "success",
  "data": {
    "webLinkid": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
    "webLinkUrl": "https://sandbox-xpla-platform.withhive.com/api/v1/web-link/redirect?token=b256c85c-aee8-4837-b54d-9a03fe8a7435.f94140b71c9ebf058956547753131adde9968a0266f208d7e3059bbb6dd0c7bc",
    "expiration": "2024-08-05T08:33:15.448Z"
  }
}

การสร้างหน้าออก NFT ด้วย hive SDK

API การสร้างลิงก์หน้าเพจการออก NFT NFT issuance page link creation API จะเปิดเผย URL ของหน้าเว็บที่ได้รับเป็นการตอบกลับเพื่อเปิดในเบราว์เซอร์ในเกมโดยใช้ Hive SDK.


ด้านล่างนี้คือตัวอย่างของหน้าออก NFT

ข้อมูลรายการที่จะออกเป็น NFT


เมื่อคุณเปิดหน้าการออก NFT จะมีหน้าต่างเข้าสำหรับ X-PLANET wallet หรือ XLPA Vault ปรากฏขึ้น ผู้ใช้ต้องเลือกที่อยู่กระเป๋าเงินเฉพาะเพื่อทำการ Mint หรือ Burn หลังจากเข้าสู่ระบบ X-PLANET wallet หรือ XLPA Vault

X-PLANET XPLA Vault XPLA Games

การสร้าง NFT (การดำเนินการสร้าง)

ในหน้าการออก NFT ผู้ใช้เลือกสินค้าที่ต้องการและจากนั้นดำเนินการ Mint

ตรวจสอบค่าธรรมเนียมก่อนการออก NFT

การตรวจสอบรายการ API call (เซิร์ฟเวอร์บล็อกเชนฮีฟ → เซิร์ฟเวอร์เกม)

Note

API นี้ไม่ใช่ API ที่เซิร์ฟเวอร์เกมเรียกเซิร์ฟเวอร์บล็อกเชน Hive แต่เป็น API ที่เซิร์ฟเวอร์บล็อกเชน Hive เรียกเซิร์ฟเวอร์เกม ดังนั้นเซิร์ฟเวอร์เกมจะต้องกำหนดค่าและจัดเตรียมจุดสิ้นสุด API ในรูปแบบที่เซิร์ฟเวอร์บล็อกเชน Hive ต้องการ

ก่อนที่จะเปลี่ยนไอเท็มเกมเป็น NFT เซิร์ฟเวอร์บล็อกเชน Hive จะขอการตรวจสอบไอเท็มจากเซิร์ฟเวอร์เกม เซิร์ฟเวอร์บล็อกเชน Hive จะออก NFT บนบล็อกเชนหลังจากยืนยันข้อมูลไอเท็มจากการตอบกลับที่ให้โดยเซิร์ฟเวอร์เกม หากการ ตรวจสอบไอเท็มล้มเหลว เซิร์ฟเวอร์บล็อกเชน Hive จะไม่ออก NFT

Note

ในเซิร์ฟเวอร์เกม จนกว่าคุณจะได้รับผลการออก NFT ผ่านทาง API ยืนยันผล คุณต้องจำกัดการใช้ไอเท็มที่ได้รับการตรวจสอบในเกม

หมายเหตุ

นี่คือข้อพิจารณาสำหรับนักพัฒนาขณะกำหนดค่า API endpoints.

Gameserverurl

API นี้ขอการตรวจสอบจากเซิร์ฟเวอร์เกมโดยใช้ gameServerUrl ที่ร้องขอจาก API สร้างลิงก์การออก NFT

หัวข้อการอนุญาต

หากพารามิเตอร์การค้นหา token มีอยู่ใน gameServerUrl ที่ร้องขอจาก API การสร้างลิงก์หน้า NFT ให้ใช้ค่า token นี้ในรูปแบบ Bearer.

คุณสมบัติ

รวม attributes ในเนื้อหาคำขอ API สำหรับการสร้างลิงก์หน้าออกใบ NFT

URL การร้องขอ

นี่คือข้อมูลจุดสิ้นสุด API ที่ต้องเตรียมไว้บนเซิร์ฟเวอร์เกม

รายการ ค่า
URL {gameServerUrl}/items/validate
HTTP Method POST
PORT 80, 443
Content-Type application/json

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

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
Authorization โทเค็นการตรวจสอบสิทธิ์ที่ส่งเป็นพารามิเตอร์ Query token ไปยัง gameServerUrl ของ API หน้าการออก NFT. เรียกว่าในรูปแบบ Bearer ${token}. Bearer N
User-Agent HiveBlockchain/1.0 string Y

เนื้อหาคำขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
type MINT สตริง ใช่
itemId รหัสระบุรายการ NFT สตริง ใช่
playerId รหัสผู้เล่น หมายเลข ใช่
characterId รหัสตัวละคร สตริง ไม่
webLinkId รหัสลิงก์เว็บ (UUID) สตริง ใช่
tokenId รหัส NFT สตริง ไม่
attributes คุณสมบัติเพิ่มเติมที่ต้องนำไปใช้ต่อแต่ละโทเค็น (เช่น รหัสรายการเฉพาะ, ความแข็งแกร่ง, ความคล่องตัว, ฯลฯ คุณสมบัติที่รวมอยู่ใน NFT) อาร์เรย์ json ไม่
attributes.traitType ชื่อรายการที่ประกอบขึ้นเป็นคุณสมบัติ สตริง ไม่
attributes.value ค่าคุณสมบัติ สตริง ไม่

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

curl -X 'POST' \
  'https://api.com2us.com/hive/items/validate' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoieHBsYS13ZWJ2aWV3IiwiYXBwIjoiY29tLmdjcC5zdGVwYnlzdGVwLnBjd2ViLmJs...' \ // When using authentication token
  -H 'User-Agent: HiveBlockchain/1.0' \
  -d '{
    "type": "MINT",
    "itemId": "HIVE",
    "playerId": 2319123897,
    "characterId": "zeratu",
    "webLinkId": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
    "attributes": [ // Attributes when generating NFT issuance page link
        {
          "traitType": "item_id",
          "value": "sward-3283272101239"
        },
        {
          "traitType": "strength",
          "value": "50"
        },
        {
          "traitType": "agility",
          "value": "10"
        }
      ]
  }'

การตอบสนอง

รหัสสถานะ HTTP มีดังต่อไปนี้

  • ความสำเร็จ
    • 200
  • ความล้มเหลว
    • 4xx: รหัสสถานะข้อผิดพลาดสำหรับคำขอที่ไม่ถูกต้อง
    • 5xx: รหัสสถานะข้อผิดพลาดสำหรับข้อผิดพลาดของเซิร์ฟเวอร์

การตรวจสอบผล API call (บล็อกเชน hive → เซิร์ฟเวอร์เกม)

Note

API นี้ไม่ใช่ API ที่เซิร์ฟเวอร์เกมเรียกเซิร์ฟเวอร์บล็อกเชน Hive แต่เป็น API ที่เซิร์ฟเวอร์บล็อกเชน Hive เรียกเซิร์ฟเวอร์เกม ดังนั้นเซิร์ฟเวอร์เกมต้องกำหนดค่า endpoint API ในรูปแบบที่เซิร์ฟเวอร์บล็อกเชน Hive ต้องการ

เมื่อเซิร์ฟเวอร์บล็อกเชน Hive ส่งผลการออก NFT ไปยังเซิร์ฟเวอร์เกมใน Request Body เซิร์ฟเวอร์เกมจะประมวลผลเพื่อให้ไอเท็มไม่สามารถใช้งานในเกมได้ จากนั้นจึงส่งผลกลับไปยังเซิร์ฟเวอร์บล็อกเชน Hive ผ่าน API


การกระทำที่เซิร์ฟเวอร์เกมจะดำเนินการตามผลการออกใบอนุญาตมีดังนี้

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

คุณต้องจำกัดการใช้รายการที่เกี่ยวข้องในเกมบนเซิร์ฟเวอร์เกมจนกว่าคุณจะได้รับผลการออก NFT.


ด้านล่างเป็นตัวอย่างของหน้าจอหน้า NFT issuance เมื่อเซิร์ฟเวอร์เกมตอบกลับด้วยการออก NFT ที่สำเร็จ

หมายเหตุ

นี่คือข้อพิจารณาสำหรับนักพัฒนาขณะกำหนดค่า API endpoints.

คุณสมบัติ

โดยการรวมรหัสรายการที่ไม่ซ้ำใน attributes คุณสามารถเรียกใช้ API การสร้างลิงก์หน้า NFT issuance และยังรวมรหัสที่ไม่ซ้ำใน Request Body attributes ในกรณีนี้ คุณสามารถอัปเดตสถานะรายการด้วยรหัสที่ไม่ซ้ำที่เกี่ยวข้อง

หัวข้อ Authorization

หากพารามิเตอร์การค้นหา token มีอยู่ใน gameServerUrl ที่ร้องขอจาก API การสร้างลิงก์การออก NFT ให้ใช้ค่า token นี้ในรูปแบบ Bearer.

URL การร้องขอ

รายการ ค่า
URL {gameServerUrl}/items/callback
HTTP Method POST
PORT 80, 443
Content-Type application/json

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

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
Authorization โทเค็นการตรวจสอบสิทธิ์ที่ส่งเป็นพารามิเตอร์ token ในการสร้างลิงก์ API หน้าออกใบ NFT มันถูกเรียกในรูปแบบ Bearer ${token}. Bearer N
User-Agent HiveBlockchain/1.0 string Y

เนื้อหาคำขอ

ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น
type MINT สตริง ใช่
itemId รหัสการระบุ NFT item สตริง ใช่
playerId รหัสผู้เล่น หมายเลข ใช่
characterId รหัสตัวละคร สตริง ไม่
webLinkId รหัสลิงก์เว็บ (UUID) สตริง ใช่
tokenId รหัส NFT (รวมถ้าสำเร็จ) สตริง ไม่
status ผลลัพธ์การทำธุรกรรม (สำเร็จ, ล้มเหลว) สตริง ใช่
attributes คุณสมบัติเพิ่มเติมที่ใช้ต่อแต่ละโทเค็น (เช่น รหัสเฉพาะ, ความแข็งแกร่ง, ความคล่องตัว, ฯลฯ คุณสมบัติที่รวมอยู่ใน NFT) json array ไม่
attributes.traitType ชื่อรายการที่ประกอบขึ้นเป็นคุณสมบัติ สตริง ไม่
attributes.value ค่าคุณสมบัติ สตริง ไม่

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

curl -X 'POST' \
  'https://api.com2us.com/hive/items/callback' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoieHBsYS13ZWJ2aWV3IiwiYXBwIjoiY29tLmdjcC5zdGVwYnlzdGVwLnBjd2ViLmJs...' \  // When using authentication token
  -H 'User-Agent: HiveBlockchain/1.0' \
  -d '{
    "type": "MINT",
    "itemId": "HIVE",
    "playerId": 2319123897,
    "characterId": "zeratu",
    "webLinkId": "b6d2ca1b-b43a-4129-bf54-9a189e3aa664",
    "tokenId": "HIVE#348",
    "status": "success",
    "attributes": [ // Attributes when generating NFT issuance page link
        {
          "traitType": "item_id",
          "value": "sward-3283272101239"
        },
        {
          "traitType": "strength",
          "value": "50"
        },
        {
          "traitType": "agility",
          "value": "10"
        }
      ]
  }'

การตอบสนอง

รหัสสถานะ HTTP มีดังนี้

  • ความสำเร็จ
    • 200
  • ความล้มเหลว
    • 4xx: รหัสสถานะข้อผิดพลาดสำหรับคำขอที่ไม่ถูกต้อง
    • 5xx: รหัสสถานะข้อผิดพลาดสำหรับข้อผิดพลาดของเซิร์ฟเวอร์