ดูบัญชีมือสองรายชิ้นที่ขายอยู่

GET/api/v1/products/{product_id}/items
สิทธิ์ที่ต้องใช้:catalog:read

ดูบัญชีมือสองที่ขายอยู่จริงใต้สินค้า account2 หนึ่งรายการ เพื่อเลือกมาหนึ่งชิ้นก่อนสั่งซื้อ · ใช้ได้กับ account2 เท่านั้น เพราะ cdkey กับ account1 สั่งด้วย product_id อย่างเดียว ไม่มีรายชิ้นให้เลือก · สินค้า account2 หนึ่งรายการเปรียบเหมือนกล่องที่มีบัญชีขายอยู่หลายชิ้น แต่ละชิ้นมีเกมในบัญชี เลเวล และราคาไม่เหมือนกัน · ขั้นตอนคือ เลือกมาหนึ่งชิ้น แล้วตอนสร้างออเดอร์ให้ส่ง item_id ของชิ้นนั้น พร้อมกับ price ของชิ้นนั้นเป็น expected_price — ไม่ใช่ราคาของตัวสินค้า

ราคารายบัญชีหักส่วนลดมาแล้ว ห้ามหักซ้ำอีกรอบ

price ของแต่ละรายการคือจำนวนบาทที่ คีย์ของคุณต้องจ่ายจริง ไม่ใช่ราคาป้ายของร้าน และ discount_percent เป็นแค่ตัวบอกว่าหักจากราคาป้ายไปแล้วกี่เปอร์เซ็นต์ · เอาส่วนลดของคุณไปหักซ้ำอีกรอบจะได้ราคาที่ระบบไม่มีวันยอมรับ แล้วทุกคำสั่งซื้อจะถูกปฏิเสธเรื่องราคาโดยที่ไม่มีอะไรบอกว่าทำไม · ราคาของ account2 ถูกคิด แยกทีละบัญชีเสมอ เพราะประเภทนี้มีเพดานส่วนลดของตัวเอง และบัญชีแต่ละชิ้นยังมีราคาขั้นต่ำของตัวเองที่ดันราคาขึ้นได้อีก · นี่คือเหตุผลที่บัญชีสองชิ้นใต้สินค้าเดียวกันรายงาน discount_percent ไม่เท่ากัน ซึ่งเป็นเรื่องปกติ ไม่ใช่ความผิดพลาด · ค่าที่ต้องส่งเป็น expected_price คือ price ของบัญชีชิ้นที่คุณเลือกจากลิสต์นี้ ไม่ใช่ price ของตัวสินค้า (ตัวหลังเป็นแค่ราคาเริ่มต้นของชิ้นที่ถูกที่สุด) · ราคาขยับได้ตลอดเวลา ให้ดึงลิสต์ใหม่ทันทีก่อนสั่งซื้อ

การปฏิเสธที่ด่านยืนยันตัวตนเกิดกับเอนด์พอยต์นี้ด้วย

ห้ารหัสของด่านยืนยันตัวตน — invalid_key (401) · key_revoked (401) · insufficient_scope (403) · quota_exceeded (429) · too_many_inflight (429) — เกิดได้กับทุกเอนด์พอยต์ รวมทั้งเอนด์พอยต์นี้ เพราะถูกโยนตั้งแต่ก่อนคำขอจะเดินไปถึงตรรกะของหน้านี้เลยสักบรรทัด (scope ที่ต้องมีคือค่าที่ประกาศไว้หัวหน้านี้) · แท็บคำตอบด้านบนจึงไล่เฉพาะสิ่งที่เอนด์พอยต์นี้เองตอบ ไม่ได้แปลว่าห้ารหัสนั้นเกิดที่นี่ไม่ได้ · รายละเอียดครบทุกตัวอยู่ที่ หน้าเอนด์พอยต์ตัวตนที่ /developers/access/me ที่เดียว ทั้ง HTTP status ของแต่ละตัว · ตัวไหนกินโควตารายวันบ้าง · header อะไรกลับมาบ้าง · และทำไม 429 สองตัวต้องรับมือคนละแบบ — จงใจไม่คัดลอกมาไว้ทุกหน้า เพราะสำเนาที่สองคือที่ที่ลืมแก้ตามในวันที่กติกาเปลี่ยน

ข้อมูลที่ต้องส่ง

Path

ชื่อชนิดวิธีใช้
product_idบังคับstring
รหัสของสินค้า account2 ที่อยากดูบัญชีข้างใน
รายละเอียดและข้อควรระวัง
  • ค่าเดียวกับฟิลด์ id ที่รายการสินค้าคืนมา
  • เราตัดช่องว่างหัวท้ายก่อนใช้เสมอ ค่าที่มีแต่ช่องว่างจึงถูกปฏิเสธด้วย 400 bad_request ตั้งแต่ต้นทาง

Header

ชื่อชนิดวิธีใช้
Authorizationบังคับstring
คีย์ของคุณในรูป Bearer <คีย์> ต้องส่งมาทุกคำขอ ไม่มีวิธียืนยันตัวตนทางอื่น

ข้อมูลที่ได้รับ

ชื่อชนิดวิธีใช้
itemsอาร์เรย์
บัญชีที่ขายอยู่จริงใต้สินค้าชิ้นนั้น
รายละเอียดและข้อควรระวัง
  • อาร์เรย์ว่างเป็นคำตอบปกติ ไม่ใช่ error
  • ⚠️ รายการนี้เปลี่ยนตลอดเวลา บัญชีที่คุณเห็นอยู่ตอนนี้อาจถูกคนอื่นซื้อตัดหน้าไปได้เสมอ และคำสั่งซื้อที่อ้าง item_id ที่หายไปแล้วจะถูกปฏิเสธด้วย item_not_found
  • เจอแบบนั้นให้ดึงรายการใหม่แล้วเลือกชิ้นอื่น
items.item_idstring
รหัสของบัญชีชิ้นนั้น
รายละเอียดและข้อควรระวัง
  • ค่าที่ต้องส่งไปกับคำสั่งซื้อ account2 คู่กับ product_id ของสินค้าที่มันอยู่ข้างใน
  • ⚠️ เป็นสตริงเสมอ ไม่เคยเป็นตัวเลข ถึงหน้าตาจะเป็นตัวเลขล้วนก็ตาม
  • body ของคำสั่งซื้อรับเฉพาะสตริง ให้ส่งกลับมา ตรงตามที่ได้รับมาเป๊ะ ห้ามแปลงเป็นตัวเลขระหว่างทาง (ภาษาอย่าง JavaScript แปลงให้เองได้ถ้าไม่ระวัง)
  • ค่าที่ไม่ใช่สตริงถูกปฏิเสธด้วย 400 bad_request ที่ message อ่านเหมือนกับว่าคุณไม่ได้ส่งฟิลด์นี้มาเลย
items.priceตัวเลข
ราคาของบัญชีชิ้นนั้น หน่วยบาท หักส่วนลดและคิดราคาขั้นต่ำของชิ้นนั้นให้เรียบร้อยแล้ว — นี่คือค่าที่ส่งเป็น expected_price ตอนสั่งซื้อ account2 ห้ามใช้ price ของตัวสินค้า
items.discount_percentตัวเลข
ส่วนลดที่คุณได้จริงกับบัญชีชิ้นนั้น หน่วยเปอร์เซ็นต์
รายละเอียดและข้อควรระวัง
  • หักออกจาก price ไปเรียบร้อยแล้ว ไม่ต้องเอาไปหักซ้ำ
  • ค่านี้ต่ำกว่าเพดานของ account2 ได้ เมื่อราคาไปชนราคาขั้นต่ำของบัญชีชิ้นนั้น

สถานะที่อาจได้รับ

สถานะรหัสความหมาย
200
มีบัญชีขายอยู่ — เลือกมาหนึ่งชิ้น
ทุกรายการมีสามฟิลด์นี้เสมอ
รายละเอียดและข้อควรระวัง
  • item_id
  • price
  • discount_percent
  • และนอกจากนั้นยังมี ฟิลด์บรรยายที่ต่างกันไปตาม platform (จำนวนเกม ประเทศ สถานะสองชั้น วันที่สมัคร และอื่น ๆ)
  • ชุดฟิลด์ไม่เท่ากันข้าม platform และ platform ที่เรายังไม่รองรับจะคืนมาแค่ item_id ให้อ่านเฉพาะฟิลด์ที่คุณรู้จัก และห้ามคิดว่าฟิลด์ใดฟิลด์หนึ่งต้องมีเสมอ
  • ตัวอย่างเป็นบัญชี Steam ฟิลด์ที่เก็บค่าซ้อนกัน (รายการเกม เหรียญ ประวัติธุรกรรม) ถูกส่งต่อตามที่ต้นทางส่งมา และ รูปข้างในบล็อกพวกนั้นไม่ใช่ส่วนหนึ่งของสัญญา เปลี่ยนได้โดยไม่แจ้งล่วงหน้า
  • ⚠️ เอนด์พอยต์นี้ไม่มีข้อมูลล็อกอินเลย ชื่อผู้ใช้ รหัสผ่าน และอีเมลของบัญชีถูกส่งมอบหลังคำสั่งซื้อสำเร็จเท่านั้น
  • รายการที่สองในตัวอย่างแสดงให้เห็นว่า ราคาขั้นต่ำ ทำงานยังไง คือถ้าหักส่วนลด 12% ของคีย์สมมติใบนี้เต็ม ๆ ราคาจะต่ำกว่าที่เรารับได้ ระบบจึงดันราคากลับขึ้นมาที่ขั้นต่ำ แล้วรายงาน discount_percent เป็นส่วนลดที่ได้จริงคือ 10
  • ตัวเลขทั้งหมดเป็นของสมมติ ไม่มีอันไหนเป็นข้อมูลจริงของร้าน
200
ตอนนี้ไม่มีบัญชีขายอยู่ — ไม่ใช่ error
ลิสต์ว่างเป็นคำตอบปกติของสินค้าที่บัญชีข้างในเพิ่งถูกซื้อไปหมด ไม่ใช่ error และไม่ได้แปลว่าคีย์คุณมีปัญหา
รายละเอียดและข้อควรระวัง
  • บัญชีที่เราคิดราคาให้ไม่ได้ก็ถูกตัดออกจากลิสต์นี้เงียบ ๆ ด้วย (เหตุผลเดียวกับที่สินค้าตอบ price_unavailable แทนที่จะคืนราคา 0 ออกมา)
  • ลิสต์ว่างจึงแปลได้สองอย่างคือขายหมด หรือคิดราคาให้ไม่ได้ และคุณแยกสองอย่างนี้จากกันไม่ได้ ให้ปฏิบัติเหมือนของหมดไปก่อนแล้วลองใหม่ทีหลัง
400unsupported_type
สินค้าชิ้นนั้นไม่ใช่ account2 จึงไม่มีรายชิ้นให้ดู
เรียกเอนด์พอยต์นี้กับสินค้าที่ type เป็น account2 เท่านั้น · cdkey กับ account1 ไม่มีบัญชีรายชิ้น เพราะสั่งซื้อด้วย product_id อย่างเดียวได้เลย
400bad_request
ไม่ได้ใส่ product_id มาใน URL
ช่อง product_id ใน URL ว่างเปล่า หรือมีแต่ช่องว่าง (เราตัดช่องว่างหัวท้ายก่อนใช้เสมอ) · เติมค่าให้ถูกแล้วยิงใหม่
404product_not_found
ไม่มีสินค้ารหัสนี้ หรือถูกถอดออกจากการขายแล้ว
ลบสินค้าชิ้นนี้ออกจากแคตตาล็อกฝั่งคุณได้เลย
รายละเอียดและข้อควรระวัง
  • สินค้าที่ถูกถอดออกตอบด้วยรหัสเดียวกับสินค้าที่ไม่เคยมีอยู่ แยกจากกันไม่ได้โดยเจตนา
  • ⚠️ สินค้าที่ถูกถอดออกจะไม่คืนบัญชีรายชิ้นให้เลย แม้บัญชีข้างในจะยังขายอยู่จริงก็ตาม
502supplier_unavailable
ระบบเราดึงรายการบัญชีมาไม่ได้ตอนนี้ — ให้ลองใหม่
ให้รอสักครู่แล้วลองใหม่ และ ⚠️ ห้ามตีความว่าสินค้าชิ้นนี้ไม่มีของขาย
รายละเอียดและข้อควรระวัง
  • เกิดจากระบบต้นทางที่เราดึงข้อมูลบัญชีมาตอบกลับมาในรูปที่เราอ่านไม่ได้ และเราก็ไม่มีรายการเก่าเก็บไว้ให้ใช้แทน
  • คุณจะเห็นรหัสนี้ก็ต่อเมื่อไม่เหลืออะไรให้เราตอบจริง ๆ เท่านั้น ตราบใดที่เรายังมีรายการล่าสุดของสินค้าชิ้นนั้นเก็บอยู่ คุณจะได้ 200 พร้อมรายการนั้นแทน (อาจเก่าไปนิดหน่อย)
  • ใช้กับกรณี 503 ข้างล่างเหมือนกัน
503supplier_unavailable
ระบบเราติดต่อต้นทางไม่ได้เลยตอนนี้ — ให้ลองใหม่
รับมือเหมือน 502 ทุกประการ คือรอแล้วลองใหม่ อย่าสรุปว่าสินค้าขายหมด
รายละเอียดและข้อควรระวัง
  • ต่างกันแค่สาเหตุฝั่งเรา คือรอบนี้เราติดต่อระบบต้นทางไม่ได้เลย (หมดเวลารอ ต่อไม่ติด หรือมันตอบกลับมาเป็นความผิดพลาดของตัวเอง)
  • เช่นเดียวกับ 502 คุณจะเห็นรหัสนี้ก็ต่อเมื่อไม่มีรายการเก่าเก็บไว้ให้ใช้แทนแล้ว
  • สองรหัสนี้ต่างกันแค่สาเหตุ ไม่ได้ต่างกันที่สิ่งที่คุณต้องทำต่อ
อัปเดตล่าสุด 2026-09-07