Skip to content

ระบบไอเทมและร้านค้าที่ต้องชำระเงินของแพลตฟอร์ม

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

  • ฟังก์ชันหลัก: การซื้อไอเทม, การสอบถามการเป็นเจ้าของ, การดำเนินการเพิ่ม/ลด, การติดตามการเปลี่ยนแปลง, การแจกจ่ายโดยทริกเกอร์จากกระบวนการเกม

1. ฟังก์ชันการจัดการแบ็กเอนด์สำหรับนักพัฒนา

  • นักพัฒนาสามารถสร้างข้อมูลไอเทมด้วยตนเองผ่านแบ็กเอนด์ รองรับการอัปโหลดตาราง (ตารางหน่วยไอเทม) และไอคอนไอเทม
  • ไอเทมที่ต้องชำระเงินในร้านค้าในปัจจุบันรองรับเฉพาะการสร้างด้วยตนเอง
  • รองรับการสร้างข้อมูลไอเทมได้สูงสุด 5,000 รายการ
  • ในขณะนี้รองรับเฉพาะเกมประเภทซื้อขาดและซื้อในเกม
  • หลังจากสร้างไอเทมแล้วต้องได้รับการอนุมัติ หลังจากอนุมัติแล้วจะเข้าสู่สถานะเปิดใช้งานโดยค่าเริ่มต้น

ฟังก์ชันการจัดการไอเทม:

‌ID ไอเทม‌: ตัวระบุเฉพาะ ไม่สามารถแก้ไขได้หลังสร้าง
‌ชื่อและไอคอนไอเทม‌: ใช้สำหรับการแสดงผลด้านหน้าบ้าน
‌ไอคอนไอเทม‌: รองรับการเปลี่ยนรูปไอคอนด้วยตนเอง
‌กฎการสร้างไอเทม: รองรับการเลือกระหว่างไอเทมเกมและไอเทมที่ต้องชำระเงินในร้านค้า
ข้อจำกัดไอเทม: รองรับการตั้งค่าข้อจำกัดสำหรับการแจกจ่ายให้ผู้เล่นผ่านแพลตฟอร์ม เช่น จำกัดจำนวนการแจกจ่ายต่อวัน จำกัดจำนวนทั้งหมด หรือไม่จำกัด
‌สต็อกไอเทม‌: สามารถเลือกป้อนจำนวนหรือไม่จำกัด
การตั้งค่าค่าไอเทม:
ไอเทมฟรี (Platform activities): รองรับการแจกจ่ายผ่านกิจกรรมของแพลตฟอร์ม
การซื้อที่ต้องชำระเงิน (Paid purchase): รองรับการซื้อที่ต้องชำระเงินในร้านค้าไอเทม
กำหนดราคาเป็นดอลลาร์สหรัฐโดยค่าเริ่มต้น
ราคาต่อหน่วยของไอเทมรองรับความแม่นยำถึง 0.0001 USD
ค่าขั้นต่ำสำหรับไอเทมที่ต้องชำระเงินในร้านค้าคือ 1 USD
ข้อเสนอแนะ
  • ลงทะเบียนหน่วยไอเทมก่อน จากนั้นป้อนไอเทมสำหรับการซื้อที่ต้องชำระเงินในร้านค้าด้วยตนเอง รองรับการเลือกไอเทมหนึ่งรายการหรือมากกว่าเพื่อสร้างเป็นผลิตภัณฑ์รวมสำหรับการขาย
  • เมื่อตั้งค่าไอเทมเป็นไอเทมฟรี แพลตฟอร์มอาจเลือกแจกจ่ายให้ผู้เล่นตามแผนการดำเนินงาน จะถูกส่งไปยังตัวละครเกมของผู้เล่นเมื่อผู้เล่นเข้าสู่เกม

alt textalt text

2. การบูรณาการ SDK ไอเทม

คำอธิบายอินเทอร์เฟซหลัก

ชื่ออินเทอร์เฟซลายเซ็นเมธอดคำอธิบายฟังก์ชัน
เปิดหน้าต่างซื้อopenBuyGameItemsDialog(level: number)เปิดกล่องโต้ตอบซื้อไอเทมร้านค้าผ่าน UI ฟังก์ชันภายในเกม
รับไอเทมที่เป็นเจ้าของgetUserGameItems(): GameItem[]สอบถามรายการไอเทมปัจจุบันของผู้เล่นเมื่อเข้าสู่เกม (รวม ID และจำนวน)
เพิ่มไอเทมaddGameItem(itemId: string, amount: number)แจกจ่ายไอเทมระหว่างกระบวนการเล่นเกม (รองรับสถานการณ์เช่น การซื้อ รางวัลระดับ การทำภารกิจสำเร็จ เป็นต้น)
ลดไอเทมsubtractGameItem(itemId: string, amount: number)ใช้ไอเทม (สถานการณ์การใช้หรือบริโภคระหว่างกระบวนการเล่นเกม จำนวนหลังหักเป็นค่าบวก)
สมัครสมาชิกการแจ้งเตือนการเปลี่ยนแปลงsubscribeGameItemChange(callback: (res: GameItemChange) => void)เมธอด callback ที่ดำเนินการเมื่อการชำระเงินสำหรับไอเทมที่ต้องชำระเงินในร้านค้าเสร็จสมบูรณ์

รูปแบบข้อมูลหลัก

  • ​**GameItem (ข้อมูลไอเทม)**​: { itemId: string, amount: number }
  • ​**GameItemChange (ข้อมูลการเปลี่ยนแปลง)**​: { itemId: string, amount: number, changeType: 'add'|'subtract', total: number }

2.1 รับรายการไอเทมที่เป็นเจ้าของ

javascript
// รับรายการไอเทมที่เป็นเจ้าของโดยผู้เล่น (เรียกในช่วงเริ่มต้นเกม)
const items = window.JOGOS_SDK.gameItem.getUserGameItems();
console.log('ไอเทมที่เป็นเจ้าของ:', items);

2.2 เปิดหน้าต่างซื้อไอเทม

javascript
// เปิดหน้าต่างซื้อไอเทม
window.JOGOS_SDK.gameItem.openBuyGameItemsDialog(10);

2.3 เพิ่มไอเทม

javascript
// เพิ่มไอเทม (ID: 3232addasdda3aa2, จำนวน: 10)
window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 10);

2.4 ลดไอเทม

javascript
// ลดไอเทม (ID: 3232addasdda3aa2, จำนวน: 5)
window.JOGOS_SDK.gameItem.subtractGameItem('3232addasdda3aa2', 5);

2.5 สมัครสมาชิกการแจ้งเตือนการเปลี่ยนแปลงไอเทม

javascript
// สมัครสมาชิกการแจ้งเตือนการเปลี่ยนแปลงไอเทม
window.JOGOS_SDK.gameItem.subscribeGameItemChange((res) => {
  console.log('การเปลี่ยนแปลงไอเทม:', res);
});

2.6 กระบวนการซื้อไอเทมแบบชำระเงินทั้งหมด

javascript
// 1. เริ่มการซื้อไอเทมแบบชำระเงิน (ID สินค้า: item_gold_100, สอดคล้องกับไอเทมเหรียญทอง 100 เหรียญ)
async function buyGoldItem() {
  try {
    const orderNo = await window.JOGOS_SDK.payment.buyGoods('item_gold_100');
    console.log('สร้างคำสั่งซื้อสำเร็จ, หมายเลขคำสั่งซื้อ:', orderNo);
  } catch (err) {
    console.error('การสร้างคำสั่งซื้อล้มเหลว:', err);
    alert('การเริ่มการซื้อล้มเหลว, โปรดลองอีกครั้งในภายหลัง');
  }
}

// 2. สมัครสมาชิกการแจ้งเตือนการชำระเงินสำเร็จ (เรียกในช่วงเริ่มต้นเกม)
window.JOGOS_SDK.payment.subscribeOrderPaid(async (order) => {
  console.log('ชำระเงินสำเร็จ, รายละเอียดคำสั่งซื้อ:', order);
  if (order.status === 'success') {
    // 3. แจกจ่ายไอเทมที่สอดคล้องกัน (ID สินค้า: item_gold_100 สอดคล้องกับ ID ไอเทม: 3232addasdda3aa2)
    window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 100);
    // 4. แจ้งแพลตฟอร์มเพื่อการจัดส่ง (ต้องเรียก, มิฉะนั้นสถานะคำสั่งซื้อจะผิดปกติ)
    await window.JOGOS_SDK.payment.deliverGoods(order.orderNo);
    alert('ซื้อเหรียญทอง 100 เหรียญสำเร็จ, ได้รับการแจกจ่ายไปยังกระเป๋าแล้ว!');
  }
});

// 3. สถานการณ์ข้อยกเว้น: สอบถามรายละเอียดคำสั่งซื้อ (เช่น หากไม่ได้รับไอเทมหลังชำระเงิน)
async function checkOrder(orderNo) {
  try {
    const order = await window.JOGOS_SDK.payment.getOrderDetail(orderNo);
    console.log('การสอบถามรายละเอียดคำสั่งซื้อ:', order);
    if (order.status === 'success') {
      // แจกจ่ายไอเทมซ้ำ
      window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 100);
      await window.JOGOS_SDK.payment.deliverGoods(orderNo);
    }
  } catch (err) {
    console.error('การสอบถามคำสั่งซื้อล้มเหลว:', err);
  }
}

2.7 การแจกจ่ายไอเทมโดยทริกเกอร์จากกระบวนการเกม (ตัวอย่าง: รางวัลการผ่านด่าน)

javascript
// การผ่านด่าน 10 ทริกเกอร์การแจกจ่ายไอเทม (รวมตรรกะการป้องกันการรับซ้ำเพื่อหลีกเลี่ยงการรับซ้ำ)
function onLevel10Clear() {
  // เกมสแตนด์อโลน: ใช้ที่เก็บข้อมูลท้องถิ่นเพื่อบันทึกสถานะการแจกจ่าย
  const hasIssued = localStorage.getItem('level10_award_issued');
  if (hasIssued) {
    alert('ได้รับรางวัลด่านนี้แล้ว, ไม่สามารถรับซ้ำได้');
    return;
  }

  // แจกจ่ายไอเทม (ID: 3232addasdda3aa2, จำนวน: 10)
  window.JOGOS_SDK.gameItem.addGameItem('3232addasdda3aa2', 10);
  // บันทึกสถานะการแจกจ่าย
  localStorage.setItem('level10_award_issued', 'true');
  alert('ผ่านด่าน 10 สำเร็จ! ได้รับรางวัลไอเทม 10 ชิ้น');
}