เอกสาร Steamworks
คู่มือการใช้งานระบบธุรกรรมขนาดเล็ก

ภาพรวม

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

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

นอกจากการสั่งซื้อในเกมแล้ว ระบบยังให้ฟังก์ชันการใช้งานเพิ่มเติมที่ระบบบัญชีและระบบการรองรับของคุณสามารถใช้ได้:
  1. คุณสามารถได้รับการแจ้งเตือนหากลูกค้าไม่ได้ชำระเงิน
  2. คุณสามารถคืนเงินและสอบถามสถานะของธุรกรรมผ่านบริการทางเว็บได้
  3. คุณจะสามารถเข้าถึงรายงานอย่างละเอียดบนเว็บไซต์พันธมิตร Steamstats ที่จะแสดงให้เห็นถึงยอดขายไอเท็มและเกมแบบเรียลไทม์

แนวทางปฏิบัติที่ดีที่สุดสำหรับระบบการสั่งซื้อในเกม

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

โปรดไปที่เอกสารประกอบการใช้งาน ธุรกรรมขนาดเล็ก (การสั่งซื้อในเกม) เพื่อดูคำแนะนำเกี่ยวกับเศรษฐกิจในเกมและแนวทางปฏิบัติที่ดีที่สุด

ระบบการชำระเงินมีการทำงานอย่างไร

ระบบการชำระเงินเป็นระบบที่รวมกระบวนการสั่งซื้อใด ๆ ก็ตามที่คุณมีอยู่ในเกมเข้ากับบริการการเรียกเก็บเงินทางเว็บของ Steam และกระบวนการอนุมัติลูกค้า

กระบวนการสั่งซื้อจะเกิดขึ้นตามลำดับดังต่อไปนี้ ผู้ใช้ของคุณจะเริ่มคำสั่งซื้อในเกมของคุณและดำเนินการจนเสร็จสมบูรณ์เสมอ
  1. เมื่อลูกค้าต้องการจะซื้ออะไรบางอย่างในเกม เกมของคุณจะส่งคำขอสั่งซื้อไปยังเซิร์ฟเวอร์การสั่งซื้อของคุณ เซิร์ฟเวอร์การสั่งซื้อสามารถเป็นเอนทิตีการให้บริการใด ๆ ก็ได้ที่รองรับคำขอสั่งซื้อของระบบเกมของคุณ โดยอาจเป็นเว็บเซิร์ฟเวอร์หรือเป็นระบบการยืนยันตัวตนก็ได้ เซิร์ฟเวอร์ดังกล่าวจำเป็นจะต้องสื่อสารกับเซิร์ฟเวอร์การเรียกเก็บเงินของ Steam ผ่านทางโปรโตคอล HTTP นอกจากนั้นเซิร์ฟเวอร์การสั่งซื้อของคุณยังสามารถขอข้อมูลประเทศ ภาษา และสกุลเงินของผู้ใช้จากเซิร์ฟเวอร์การเรียกเก็บเงินของ Steam ได้อีกด้วย คุณสามารถใช้ข้อมูลนี้ในการปรับการกำหนดราคาของคุณได้ตามต้องการ
  2. จากนั้นเซิร์ฟเวอร์การสั่งซื้อของคุณจะเริ่มธุรกรรมการชำระเงินในนามของไคลเอนต์ของบริการทางเว็บบน Steam โดยคำขอจะอยู่ในรูปแบบโปรโตคอล HTTP POST ที่ปลอดภัย เนื้อหาของคำขอนี้จะประกอบไปด้วยเมทาเดตาของผู้ใช้ พร้อมคำอธิบายและราคาของผลิตภัณฑ์แต่ละรายการที่ผู้ใช้ต้องการจะสั่งซื้อ
  3. เมื่อได้รับคำขอนี้ Steam จะเปิดใช้งานโอเวอร์เลย์ Steam โดยอัตโนมัติ และจะแสดงกล่องโต้ตอบให้แก่ผู้ใช้ โดยระบุรายการไอเท็มทั้งหมด ราคา และปุ่มสำหรับยืนยันหรืออนุญาตการทำธุรกรรม หากในบัญชี Steam ของผู้ใช้มีเงินไม่เพียงพอ โอเวอร์เลย์จะนำผู้ใช้ดำเนินการผ่านกระบวนการเติมเงิน โดยโอเวอร์เลย์ Steam จะจัดการเก็บข้อมูลการเรียกเก็บเงินทั้งหมดของผู้ใช้ เมื่อดำเนินการเรียบร้อยแล้ว ผู้ใช้จะได้รับการแจ้งเตือนว่าการสั่งซื้อนั้นได้รับอนุญาตหรือไม่ได้รับอนุญาต เกมของคุณควรจะต้องลงทะเบียนเพื่อรับคอลแบ็กสำหรับการแจ้งเตือนนี้ได้ และส่งต่อผลลัพธ์ดังกล่าวไปยังเซิร์ฟเวอร์การสั่งซื้อของคุณ
  4. จากนั้นเซิร์ฟเวอร์การสั่งซื้อของคุณจะได้รับการแจ้งเตือน และโพสต์การเรียก FinalizeTransaction ไปยัง Steam เพื่อดำเนินการให้เสร็จสิ้น การตอบสนองที่สำเร็จจะส่งผลให้มีการเรียกเก็บเงินจากลูกค้า และคุณจะสามารถมอบไอเท็มชิ้นดังกล่าวให้กับผู้ใช้รายนั้นได้

อีกทางเลือกหนึ่งคือ สำหรับเกมที่มีตัวเลือการสั่งซื้อที่โดยทั่วไปดำเนินการผ่านหน้าเว็บ หรือหากคุณต้องต้องการนำเสนอ Steam เป็นวิธีการชำระเงินโดยตรงบนเว็บไซต์ของคุณ คุณสามารถเลือกทำการผสานรวมผ่านเบราว์เซอร์ได้ ซึ่งในวิธีการนี้ กระบวนการสั่งซื้อจะเกิดขึ้นตามลำดับดังต่อไปนี้:
  1. เมื่อลูกค้าต้องการจะซื้ออะไรบางอย่างในเกมหรือในเว็บไซต์ของคุณ หากเป็นการสั่งซื้อในเกม คุณจะต้องเปิดเบราว์เซอร์ขึ้นมาเพื่อไปยังหน้าเว็บของคุณ
  2. เซิร์ฟเวอร์การสั่งซื้อของคุณจะเริ่มดำเนินธุรกรรมทางเว็บในนามของผู้ใช้ในรูปแบบของโปรโตคอล HTTP POST ที่ปลอดภัย หากการดำเนินการดังกล่าวประสบความสำเร็จ ระบบจะคืนค่า Steam URL แบบเฉพาะที่คุณสามารถใช้เพื่อนำเซสชันเบราว์เซอร์ของผู้ใช้ไปยัง URL ดังกล่าว และสามารถอนุมัติธุรกรรมได้ หลังจากนั้น คุณยังต้องกำหนด URL ส่งกลับเพื่อนำผู้ใช้กลับเมื่อผู้ใช้ดำเนินการอนุมัติเสร็จสมบูรณ์แล้ว
  3. เมื่อผู้ใช้ได้กลับมายังเว็บไซต์ของคุณ เซิร์ฟเวอร์การสั่งซื้อของคุณจะร้องขอสถานะเกี่ยวกับธุรกรรม และหากสถานะของธุรกรรมนั้นได้รับการอนุมัติสำเร็จสมบูรณ์ คุณก็จะสามารถเรียกเก็บเงินได้ด้วยการเรียก FinalizeTransaction ไปยัง Steam

การตั้งค่าการเชื่อมต่อ

สิ่งที่ต้องทำล่วงหน้า

เริ่มแรก ให้สร้างคีย์สำหรับผู้จัดจำหน่าย Web API คุณสามารถอ่านคำแนะนำได้ที่การยืนยันตัวตนโดยใช้คีย์ Web APIหน้าเอกสารประกอบการใช้งาน คีย์ดังกล่าวนี้จะถูกส่งผ่านไปพร้อมคำร้องขอทั้งหมดของเว็บเซิร์ฟเวอร์ และจะนำไปใช้เพื่อยืนยันความถูกต้องของคำขอของเซิร์ฟเวอร์ ซึ่งควรจะถูกส่งในฐานะพารามิเตอร์ key=<your key here> พร้อมคำขอเหล่านั้น

การจัดเก็บคำสั่งซื้อ

ให้จัดเก็บคำสั่งซื้อแต่ละคำสั่งเอาไว้ในระบบของคุณเพื่อใช้ในการอ้างอิงในภายหลัง ให้ใช้ไอดีคำสั่งซื้อประเภท 64 บิตแบบไม่ซ้ำเพื่ออ้างอิงธุรกรรมภายใน Steam

การส่งคำขอ

ควรส่งคำขอทั้งหมดโดยใช้โปรโตคอล HTTP 1.1 GET หรือ POST ที่ใช้การเชื่อมต่อแบบปลอดภัย TLS โดยประเภทข้อมูลของเนื้อหาควรจะเป็น "application/x-www-form-urlencoded " และพารามิเตอร์ POST ควรจะอยู่ในเนื้อหาของคำขอดังกล่าวที่อยู่ในรูปแบบมาตรฐาน urlencoding ควรจะส่งข้อความในรูปแบบของ UTF-8

คำขอจะดำเนินผ่านทาง URI พื้นฐาน:
https://partner.steam-api.com/ISteamMicroTxn/*

คำสั่งบางคำสั่งจะคืนค่าผลลัพธ์ว่าผ่านหรือล้มเหลว ในกรณีที่มีการคืนค่าผลลัพธ์ว่าล้มเหลว จะมีการแนบรหัสและคำอธิบายข้อผิดพลาดเพิ่มเติมมาด้วย หากมีการตอบสนองว่าผ่าน คีย์เหล่านี้จะไม่ปรากฏขึ้นมา

โดยค่าเริ่มต้น การตอบจะถูกคืนค่าในรูปแบบ JSON ซึ่งคุณสามารถเลือกระบุรูปแบบ XML โดยการเพิ่มพารามิเตอร์ "format=xml" เข้าไปในคำขอได้
หมายเหตุ: คุณจะต้องใช้งาน JSON หรือ XML ที่มีความยืดหยุ่นที่อนุญาตให้สามารถโพสต์และคืนค่าคีย์พารามิเตอร์ตามลำดับที่ต้องการ

การทดสอบ

Steam ได้เตรียมระบบ Sandbox สำหรับผู้พัฒนาไว้สำหรับทดสอบการผสานการทำงานของคุณ โดย Sandbox จะรองรับคำขอทั้งหมดที่สามารถใช้งานได้ผ่านทาง API แบบธรรมดา โดยที่จะไม่มีการหักเงินจริง ๆ ออกจากวอลเล็ต Steam ของผู้ทดสอบ

ระบบ Sandbox สามารถเข้าถึงได้ผ่านทาง URI พื้นฐานต่าง ๆ ดังนี้:
https://partner.steam-api.com/ISteamMicroTxnSandbox/*

ขั้นตอนการผสานรวม

การสั่งซื้อในเกม


การสั่งซื้อในเกมมีไว้สำหรับเกมที่มีร้านค้าอยู่ภายในเกม ทำให้ผู้ใช้ไม่จำเป็นต้องออกจากเกม
  • ขั้นตอนที่ 1
    เกมของคุณจะต้องถูกนำส่งพร้อมกับ Steamworks API หมายความว่าเกมของคุณจะต้องประกอบด้วยไฟล์ส่วนหัว การเชื่อมโยงในไฟล์ไลบรารี และการนำส่ง DLL พร้อมกับผลิตภัณฑ์ของคุณ โปรดอ่านรายละเอียดเพิ่มเติมที่ภาพรวม Steamworks API จะต้องเริ่มต้นการใช้งาน Steamworks API ให้สำเร็จก่อนที่จะดำเนินการต่อ!
  • ขั้นตอนที่ 2
    ผู้ใช้เลือกที่จะสั่งซื้อไอเท็ม 1 ชิ้นหรือมากกว่านั้นจากในเกมของคุณ เมื่อไอเท็ม 1 ชิ้น (หรือมากกว่า 1 ชิ้น) ถูกระบุ เกมของคุณจำเป็นจะต้องเก็บเมทาดาตาบางอย่างเกี่ยวกับผู้ใช้ ดังนี้:
    • ไอดี Steam - ตัวเลขประเภท 64 บิตนี้จะระบุผู้ใช้ที่อยู่ในระบบ Steam ได้โดยไม่ซ้ำกัน
    • รหัสประเทศ - รหัสประเทศตามมาตรฐาน ISO 3166 ของผู้ใช้จะระบุสถานที่ที่ผู้ใช้ทำการสั่งซื้อ ใช้เพื่อกำหนดราคาให้แก่การสั่งซื้อดังกล่าว
    • รหัสสกุลเงิน - รหัสสกุลเงินตามมาตรฐาน ISO 4217 ที่จะใช้ในการเรียกเก็บเงินจากผู้ใช้
    • รหัสภาษาของเกมไคลเอนต์ - รหัสภาษาตามมาตรฐาน ISO 639-1 ที่เกมไคลเอนต์ Steam ใช้งานอยู่ในขณะนี้

    สามารถรับค่าไอดี Steam และภาษาได้จากการเรียก Steamworks API:

    ในการรับค่าประเทศและประเภทสกุลเงินของผู้ใช้ ให้ใช้คำขอ ISteamMicroTxn/GetUserInfo ของ Web API ที่ส่งผ่านข้อมูลไอดี Steam ของผู้ใช้เข้าไป

    ควรรวมเมทาดาตาของผู้ใช้นี้ไว้เป็นชุด แล้วส่งไปยังเซิร์ฟเวอร์การสั่งซื้อของคุณพร้อมกับข้อมูลการสั่งซื้อธรรมดาของคุณ
  • ขั้นตอนที่ 3
    เซิร์ฟเวอร์การสั่งซื้อของคุณจะเริ่มคำขอสั่งซื้อผ่านบริการเว็บบน Steam ในนามของไคลเอนต์ Steam ให้ใช้ ISteamMicroTxn/InitTxn ตามที่จะอธิบายต่อไปในเอกสารฉบับนี้ คุณจะต้องส่งข้อมูลดังต่อไปนี้ไปพร้อมกับคำขอ:
    • ไอดีคำสั่งซื้อ - หมายเลขประเภท 64 บิตที่ไม่ซ้ำที่คุณกำหนดให้กับการสั่งซื้อนี้ หมายเลขนี้คือคีย์ของคุณสำหรับธุรกรรมดังกล่าว จะใช้เพื่ออ้างอิงธุรกรรมที่อยู่ในระบบของ Steam
    • ไอดี Steam - ไอดีผู้ใช้ที่ได้รับมาจากไคลเอนต์ Steam ในขั้นตอนที่ 3
    • ไอดีแอป - ตัวระบุจำเพาะของเกม Steam ของคุณ
    • ภาษา - รหัสภาษาประเภท ISO 639-1 ที่ใช้ระบุไอเท็มของคุณ
    • สกุลเงิน - รหัสสกุลเงินประเภท ISO 4217 ที่ใช้ระบุราคาของคุณ หากไม่ตรงกับรหัสสกุลเงินของผู้ใช้ที่ระบุไว้ในขั้นตอนที่ 2 จะมีการแปลงสกุลเงินให้โดยอัตโนมัติตามอัตราตลาดในปัจจุบัน Steam จะนำเสนอราคาที่แปลงเป็นสกุลเงินท้องถิ่นแล้ว เพื่อให้ผู้ใช้อนุมัติ ขอแนะนำให้คุณดำเนินการกำหนดราคาที่เฉพาะเจาะจงกับแต่ละสกุลเงินที่คุณคาดว่าลูกค้าจะใช้ ทั้งนี้เพื่อให้ลูกค้าได้รับประสบการณ์ที่น่าพึงพอใจที่สุด
    • รายการของไอเท็มอย่างน้อยหนึ่งรายการที่ผู้ใช้ต้องการจะสั่งซื้อ โดยคุณจะต้องระบุข้อมูลดังต่อไปนี้ให้กับแต่ละไอเท็ม:
      • ไอดีไอเท็ม - ตัวระบุประเภท 32 บิตของคุณเองสำหรับแต่ละไอเท็ม
      • ปริมาณ - จำนวนไอเท็มประเภทนี้ที่อยู่ในธุรกรรม
      • จำนวนเงิน - จำนวนเงิน (ในรูปแบบเศษหนึ่งส่วนร้อย) ที่คุณต้องการเรียกเก็บจากผู้ใช้สำหรับไอเท็มนี้ บางสกุลเงินจะต้องชำระเต็มมูลค่าเท่านั้น โปรดอ่านข้อมูลเพิ่มเติมที่สกุลเงินที่รองรับ หากค่าปริมาณสำหรับไอเท็มชิ้นนี้มีค่ามากกว่า 1 ค่าดังกล่าวนี้ก็คือจำนวนราคารวมที่จะเรียกเก็บเงิน (จำนวนเงินรวม = ปริมาณไอเท็ม x ราคาไอเท็ม)
      • คำอธิบายไอเท็ม - ข้อความคำอธิบายสำหรับไอเท็ม ซึ่งจะแสดงให้ผู้ใช้เห็นเมื่อได้รับการแจ้งให้อนุมัติธุรกรรม คุณสามารถเลือกที่จะแปลภาษาให้กับคำอธิบายนี้ได้ตามรหัสภาษาที่ระบุไว้ในไคลเอนต์ Steam
      • หมวดหมู่ไอเท็ม - ข้อความคำอธิบายทางเลือกของหมวดหมู่สำหรับใช้จัดกลุ่มไอเท็มนี้ โดยจะใช้ค่าดังกล่าวนี้ในการจัดกลุ่มข้อมูลการขายในการรายงานส่วนแบ็กเอนด์ของ Steam และจะไม่แสดงให้ผู้ใช้ได้เห็นเด็ดขาด

    หาก Steam ยอมรับธุรกรรมนี้ ไคลเอนต์ Steam จะได้รับการแจ้งเตือนโดยอัตโนมัติให้อนุมัติคำสั่งซื้อดังกล่าว หากมีการคืนค่าว่าเกิดข้อผิดพลาด จำเป็นจะต้องแก้ไขปัญหานั้นให้เสร็จสิ้นก่อน แล้วส่งธุรกรรมคำสั่งซื้อใหม่
  • ขั้นตอนที่ 4

    ความพยายามของ ISteamMicroTxn/InitTxn ที่ประสบความสำเร็จจะส่งผลให้ผู้ใช้ได้รับการแจ้งเตือนผ่านทางโอเวอร์เลย์ในเกมของ Steam ว่าธุรกรรมจำเป็นต้องได้รับการอนุมัติ โดยจะแสดงรายละเอียดของธุรกรรมด้วยการใช้คำอธิบายไอเท็มที่ได้รับมาจากคำขอสั่งซื้อของคุณ จากนั้นผู้ใช้ก็จะสามารถอนุมัติธุรกรรมดังกล่าวได้ หากผู้ใช้มีเงินไม่เพียงพอในบัญชีของตนเอง Steam จะนำผู้ใช้ดำเนินการตามกระบวนการเติมเงินโดยอัตโนมัติ แล้วท้ายที่สุด เกมของคุณจะได้รับการแจ้งเตือนว่าธุรกรรมดังกล่าวนั้นได้รับการอนุมัติหรือถูกปฏิเสธ

    เกมของคุณจำเป็นจะต้องลงทะเบียนตัวจัดการคอลแบ็ก ISteamUser::MicroTxnAuthorizationResponse_t เพื่อรับการแจ้งเตือนเกี่ยวกับกิจกรรมการอนุมัติ (หรือการปฏิเสธ) ซึ่งผลลัพธ์ของคอลแบ็กนี้จะประกอบไปด้วยไอดีแอป ไอดีคำสั่งซื้อ และสถานะการอนุมัติของธุรกรรมดังกล่าว เกมของคุณสามารถส่งผลลัพธ์นี้ไปยังเซิร์ฟเวอร์การสั่งซื้อของคุณเพื่อให้สามารถรับทราบเพื่อเสร็จสิ้นการดำเนินการธุรกรรมนี้ได้ โปรดอ่านรายละเอียดเพิ่มเติมในเอกสารประกอบการใช้งานคอลแบ็ก
  • ขั้นตอนที่ 5
    เซิร์ฟเวอร์การสั่งซื้อของคุณจะใช้คำสั่ง ISteamMicroTxn/FinalizeTxn API เพื่อดำเนินการธุรกรรมให้เสร็จสมบูรณ์ด้วยพารามิเตอร์ดังต่อไปนี้:
    • ไอดีคำสั่งซื้อ - ไอดีคำสั่งซื้อที่คุณสร้างขึ้นเพื่อเริ่มดำเนินธุรกรรม
    • ไอดีแอป - ตัวระบุจำเพาะของเกม Steam ของคุณ

    การตอบกลับว่าสำเร็จหมายความว่า คำสั่งซื้อได้รับการยอมรับ และสามารถมอบไอเท็มได้ ส่วนการตอบว่าเกิดข้อผิดพลาด คือการบ่งบอกว่าคำสั่งซื้อไม่สำเร็จ และมีการแสดงข้อความแจ้งข้อผิดพลาดที่เกี่ยวข้อง
  • ขั้นตอนที่ 6
    เซิร์ฟเวอร์การสั่งซื้อจะต้องเรียก ISteamMicroTxn/GetReport API อย่างสม่ำเสมอ เพื่อรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะของการชำระเงินของธุรกรรมต่าง ๆ คุณควรเรียก API นี้อย่างน้อยวันละครั้งเพื่อกระทบยอดการชำระเงิน แต่จะเรียก API นี้ทุก ๆ นาทีก็ได้ เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ของคุณมีการอัปเดตธุรกรรมที่เป็นปัจจุบันเสมอ

    คุณสามารถคืนเงินธุรกรรมของลูกค้าได้โดยใช้ ISteammicrotxn/RefundTxn API ดังกล่าว ทั้งนี้ขึ้นอยู่กับดุลยพินิจของคุณ แต่ยังมีวิธีอื่น ๆ ที่อาจทำให้ธุรกรรมถูกส่งกลับ ซึ่งคุณมักจะต้องดำเนินการ เมื่อธุรกรรมเข้าสู่สถานะถูกส่งกลับ (เช่น Refunded, PartialRefund, Chargedback, RefundedSuspectedFraud หรือ RefundedFriendlyFraud - โปรดอ่าน: ภาคผนวก A: ค่าสถานะ) จากนั้นแบ็กเอนด์ของคุณควรพยายามดึงรายการที่ถูกเรียกคืนที่เกี่ยวข้องกับธุรกรรมที่ถูกส่งกลับหากเป็นไปได้ โปรดอ่านเอกสารเกี่ยวกับการเตรียมการรับมือการฉ้อโกงของเรา และตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการตามขั้นตอนต่าง ๆ ที่จะป้องกันจากการฉ้อโกงที่พบเห็นบ่อย ๆ

การสั่งซื้อผ่านเว็บ

หากร้านค้าเกมของคุณเป็นหน้าเว็บ หรือคุณเพียงต้องการจะเพิ่ม Steam เป็นวิธีชำระเงินไปยังกระบวนการชำระเงินที่มีอยู่บนร้านค้าของคุณ คุณสามารถใช้ขั้นตอนดังต่อไปนี้เพื่อประสานกระบวนการดังกล่าวได้:
  • ขั้นตอนที่ 1
    รับไอดี Steam ของผู้ใช้
    • หากผู้ใช้กำลังอยู่ในเกม ให้ใช้ Steamworks API เพื่อคืนค่าไอดี Steam: ISteamUser::GetSteamID
    • หากผู้ใช้อยู่ในเว็บไซต์ของคุณ คุณก็สามารถใช้ Steamworks OpenID API เพื่อเรียกรับไอดี Steam ของผู้ใช้ได้อย่างปลอดภัยได้ คุณสามารถดูรายละเอียดเกี่ยวกับ OpenID ได้ที่หน้าเอกสารประกอบการใช้งาน Steamworks การยืนยันตัวตนทางเว็บเบราว์เซอร์ด้วย OpenID

    หมายเหตุ: เราขอแนะนำให้คุณเชื่อมโยงบัญชีเกมของผู้ใช้เข้ากับไอดี Steam ของผู้ใช้รายนั้น เพื่อให้ผู้ใช้ต้องเข้าสู่ระบบครั้งที่ 2 นี้แค่เพียงครั้งเดียวเท่านั้น
  • ขั้นตอนที่ 2
    รับค่าประเทศและประเภทสกุลเงินของผู้ใช้โดยการเรียกคำขอ ISteamMicroTxn/GetUserInfo Web API ซึ่งจะส่งข้อมูลไอดี Steam ของผู้ใช้เข้าไป โดยสามารถใช้ข้อมูลนี้เพื่อแสดงการกำหนดราคาและมูลค่าสกุลเงินที่เหมาะสมของร้านค้าของคุณให้กับผู้ใช้

    หมายเหตุ: GetUserInfo มีพารามิเตอร์ที่อยู่ IP เป็นตัวเลือกที่คุณสามารถใช้เพื่อแจ้ง Steam ได้ว่าผู้ใช้มีตำแหน่งที่ตั้งอยู่ที่ไหน ส่งที่อยู่ IP สาธารณะของผู้ใช้รายนั้นทุกครั้งที่มีการสั่งซื้อผ่านทางหน้าเว็บ หรือครั้งใดก็ตามที่ผู้ใช้ดังกล่าวเล่นเกมของคุณโดยไม่ได้เข้าสู่ระบบผ่านทางไคลเอนต์ Steam
  • ขั้นตอนที่ 3
    เซิร์ฟเวอร์การสั่งซื้อของคุณจะเริ่มกระบวนคำขอสั่งซื้อผ่านทางบริการทางเว็บของ Steam ด้วยการใช้ ISteamMicroTxn/InitTxn ในกระบวนการดังกล่าวนี้จำเป็นจะต้องแนบข้อมูลอีก 2 รายการที่เพิ่มเติมขึ้นมาจากการสั่งซื้อในเกมแบบธรรมดา ซึ่งก็คือ:
    • usersession - ควรจะตั้งค่าให้เป็น "web" เพื่อระบุว่าผู้ใช้จะดำเนินการยืนยันความถูกต้องของธุรกรรมผ่านทางเบราว์เซอร์
    • ipaddress - ที่อยู่ IP สาธารณะของผู้ใช้

    เมื่อ usersession ถูกตั้งค่าเป็น WEB คำขอ InitTxn จะคืนค่าพารามิเตอร์ steamurl เพิ่มเติม นี่คือ URL แบบเฉพาะที่คุณสามารถนำทางเว็บเซสชันของผู้ใช้ และใช้ระบุธุรกรรมที่สร้างขึ้นด้วยการเรียก API นี้

  • ขั้นตอนที่ 4
    เซิร์ฟเวอร์การสั่งซื้อของคุณจะนำทางเว็บเซสชันของผู้ใช้ไปยัง URL ของ Steam ที่คืนค่าในการเรียก InitTxn API โดยในการนำทาง ให้แนบ URL ของคุณเองเข้าไปด้วย ซึ่งจะเป็นที่ที่ผู้ใช้จะกลับมาหลังจากธุรกรรมได้รับการอนุมัติ (หรือถูกปฏิเสธ) แล้ว ให้ใช้ URL แบบเต็มที่ระบุไว้ (เช่น http://www.steamgames.com) ในรูปแบบของ
    returnurl=your_URL_here
    เมื่อผู้ใช้ถูกนำทางไปยัง URL ของ Steam แล้ว ผู้ใช้จำเป็นจะต้องเข้าสู่ระบบ Steam ก่อนที่จะดำเนินการยืนยันความถูกต้องได้ หากผู้ใช้เลือก Steam เป็นวิธีชำระเงินบนเว็บไซต์ของคุณ จากมุมมองของผู้ใช้นี่ควรจะเป็นพฤติกรรมที่ผู้ใช้น่าจะทำ หากผู้ใช้ได้เข้าสู่ระบบ Steam และกำลังเล่นเกมของคุณอยู่เป็นที่เรียบร้อยแล้ว ขอแนะนำให้ข้ามขั้นตอนการเข้าสู่ระบบเป็นครั้งที่ 2 นี้ไป ซึ่งคุณสามารถดำเนินการดังกล่าวนี้ได้โดยการใช้เว็บเบราว์เซอร์ภายในของโอเวอร์เลย์ในเกม เมื่อมีการใช้เบราว์เซอร์ของโอเวอร์เลย์ในเกมสำหรับการอนุมัติ ผู้ใช้จะเข้าสู่ระบบโดยอัตโนมัติ ในการเปิดใช้งานเบราว์เซอร์ ให้ใช้การเรียก Steamworks API
    ISteamFriends::ActivateGameOverlayToWebPage

    คุณสามารถอ่านรายละเอียดทั้งหมดเกี่ยวกับการใช้โอเวอร์เลย์ในเกมได้ที่นี่
  • ขั้นตอนที่ 5
    เมื่อผู้ใช้กลับมาที่ไซต์ของคุณ ให้เรียก API ISteamMicroTxn/QueryTxn เพื่อรับผลลัพธ์ หากสถานะคำสั่งซื้อเป็น "Approved" ให้เก็บเงินด้วยการเรียก API ISteamMicroTxn/FinalizeTxn ละทิ้งธุรกรรมนี้หากคืนค่าสถานะอื่น ๆ

    หมายเหตุ: หากผู้ใช้ปิดเบราว์เซอร์หรือเกิดเหตุการณ์บางอย่างที่ทำให้ผู้ใช้ไม่สามารถกลับไปที่ไซต์ของคุณได้ ให้ละทิ้งธุรกรรมและอย่าเรียก FinalizeTxn แม้ว่าผู้ใช้อนุมัติธุรกรรมแล้วแต่ไม่ถูกนำทางกลับมา ให้ละทิ้งและเริ่มต้นใหม่อีกครั้ง
  • ขั้นตอนที่ 6
    เซิร์ฟเวอร์การสั่งซื้อจะต้องเรียก ISteamMicroTxn/GetReport API อย่างสม่ำเสมอ เพื่อรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะของการชำระเงินของธุรกรรมต่าง ๆ คุณควรเรียก API นี้อย่างน้อยวันละครั้งเพื่อกระทบยอดการชำระเงิน แต่จะเรียก API นี้ทุก ๆ นาทีก็ได้ เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ของคุณมีการอัปเดตธุรกรรมที่เป็นปัจจุบันเสมอ

    คุณสามารถคืนเงินธุรกรรมของลูกค้าได้โดยใช้ ISteammicrotxn/RefundTxn API ดังกล่าว ทั้งนี้ขึ้นอยู่กับดุลยพินิจของคุณ แต่ยังมีวิธีอื่น ๆ ที่อาจทำให้ธุรกรรมถูกส่งกลับ ซึ่งคุณมักจะต้องดำเนินการ เมื่อธุรกรรมเข้าสู่สถานะถูกส่งกลับ (เช่น Refunded, PartialRefund, Chargedback, RefundedSuspectedFraud หรือ RefundedFriendlyFraud - โปรดอ่าน: ภาคผนวก A: ค่าสถานะ) จากนั้นแบ็กเอนด์ของคุณควรพยายามดึงรายการที่เกี่ยวข้องกับธุรกรรมที่ถูกส่งคืนกลับคืนมาหากเป็นไปได้ โปรดอ่านเอกสารเกี่ยวกับการเตรียมการรับมือการฉ้อโกงของเรา และตรวจสอบให้แน่ใจว่าคุณได้ดำเนินการตามขั้นตอนต่าง ๆ ที่จะป้องกันจากการฉ้อโกงที่พบเห็นบ่อย ๆ

ภาคผนวก A: ค่าสถานะ

ค่าสถานะที่เป็นไปได้ ซึ่งคืนค่ามาจาก ISteamMicroTxn Web API มีดังต่อไปนี้ โดยทั่วไปแล้ว คีย์การตอบสนองที่บรรจุค่าเหล่านี้จะเรียกว่า สถานะ
  • Init - สร้างคำสั่งซื้อแล้ว แต่ผู้ใช้ยังไม่อนุญาต
  • Approved - ผู้ใช้อนุมัติคำสั่งซื้อแล้ว
  • Succeeded - ประมวลผลคำสั่งซื้อสำเร็จแล้ว
  • Failed - คำสั่งซื้อดำเนินการไม่สำเร็จหรือถูกปฏิเสธ
  • Refunded - คืนเงินให้คำสั่งซื้อแล้ว และเกมควรถอดถอนผลิตภัณฑ์ดังกล่าว ลูกค้าอาจเริ่มต้นการขอรับเงินคืนได้
  • PartialRefund - ไอเท็มอย่างน้อย 1 รายการในรถเข็นได้รับเงินคืนแล้ว ตรวจสอบช่องข้อมูล itemstatus ของแต่ละไอเท็มเพื่อรับทราบรายละเอียด
  • Chargedback - คำสั่งซื้อมีการฉ้อโกงหรือมีข้อขัดแย้ง และเกมควรถอดถอนผลิตภัณฑ์ดังกล่าว
  • RefundedSuspectedFraud - Valve ได้คืนเงินให้คำสั่งซื้อแล้ว เนื่องจากสงสัยว่าเป็นการฉ้อโกง เกมควรถอดถอนผลิตภัณฑ์ดังกล่าว
  • RefundedFriendlyFraud - Valve ได้คืนเงินให้คำสั่งซื้อแล้ว เนื่องจากพิจารณาแล้วเห็นว่าลูกค้าปฏิเสธการชำระเงิน เกมควรถอดถอนผลิตภัณฑ์ดังกล่าว

ภาคผนวก B: รหัสข้อผิดพลาด

รหัสข้อผิดพลาดที่เป็นไปได้ ซึ่งคืนค่ามาจาก ISteamMicroTxn Web API มีดังต่อไปนี้ โดยทั่วไปแล้ว คีย์การตอบสนองที่บรรจุค่าเหล่านี้คือรหัสข้อผิดพลาด
  • 1 - สำเร็จ
  • 2 - การดำเนินการล้มเหลว
  • 3 - พารามิเตอร์ไม่ถูกต้อง
  • 4 - ข้อผิดพลาดภายใน
  • 5 - ผู้ใช้ยังไม่อนุมัติธุรกรรม
  • 6 - คอมมิตการทำธุรกรรมแล้ว
  • 7 - ผู้ใช้ไม่ได้เข้าสู่ระบบ
  • 8 - สกุลเงินไม่ตรงกับสกุลเงินในบัญชี Steam ของผู้ใช้
  • 9 - ไม่มีบัญชีอยู่ในระบบ หรือบัญชีไม่พร้อมใช้งานชั่วคราว
  • 10 - ธุรกรรมถูกปฏิเสธโดยผู้ใช้
  • 11 - ธุรกรรมถูกปฏิเสธเนื่องจากผู้ใช้อยู่ในประเทศที่ถูกจำกัด
  • 12 - ธุรกรรมถูกปฏิเสธเนื่องจากไม่ได้เปิดใช้ข้อตกลงการเรียกเก็บเงิน
  • 13 - ไม่สามารถประมวลผลข้อตกลงการเรียกเก็บเงิน เนื่องจากไม่ใช่ข้อตกลงประเภท GAME
  • 14 - ข้อตกลงการเรียกเก็บเงินถูกระงับ เนื่องจากมีข้อขัดแย้งในการเก็บเงินหรือมีการเรียกเงินคืน
  • 15 - ไม่สามารถประมวลผลข้อตกลงการเรียกเก็บเงิน เนื่องจากไม่ใช่ข้อตกลงประเภท STEAM
  • 16 - ผู้ใช้มีข้อตกลงการเรียกเก็บเงินสำหรับเกมนี้อยู่แล้ว
  • 100 - มีเงินไม่เพียงพอ
  • 101 - เกินระยะเวลาที่กำหนดสำหรับดำเนินการขั้นสุดท้าย
  • 102 - บัญชีถูกปิดการใช้งาน
  • 103 -บัญชีไม่ได้รับอนุญาตให้สั่งซื้อได้
  • 104 - ธุรกรรมถูกปฏิเสธเนื่องจากตรวจพบการฉ้อโกง
  • 105 - ไม่มีวิธีชำระเงินที่แคชไว้
  • 106 - ธุรกรรมจะทำให้เกินวงเงินการใช้จ่ายของข้อตกลงการเรียกเก็บเงิน
  • 107 - ผู้ใช้มีธุรกรรมที่อยู่ระหว่างดำเนินการ ซึ่งจะต้องดำเนินการให้เสร็จสมบูรณ์ก่อนที่จะเริ่มธุรกรรมใหม่

มีคำถามเพิ่มเติมหรือไม่?

ถามคำถามได้ที่กระดานสนทนาหัวข้อการบูรณาการระบบสั่งซื้อในเกม