อ่านออเดอร์รายตัว
/api/v1/orders/{order_id}orders:readอ่านสถานะและผลของออเดอร์หนึ่งรายการ · นี่คือแหล่งข้อมูลหลักที่ใช้ตามผลออเดอร์ ให้เช็คที่นี่เป็นหลัก ไม่ใช่รอ callback อย่างเดียว เพราะ callback เป็นตัวช่วยแจ้งเตือน แต่ถ้ามันส่งไม่ถึงคุณ ข้อมูลจริงก็ยังอ่านได้จากที่นี่เสมอ · คำตอบทั้งหมดอยู่ที่สามฟิลด์: status = ออเดอร์ไปถึงขั้นไหนแล้ว · charged = เงินในกระเป๋าถูกหักไปหรือยัง · delivery = ตัวสินค้า ซึ่งจะมีค่าเมื่อ status เป็น completed · รูปของ delivery ขึ้นกับ type ของออเดอร์นั้น — cdkey/account1 ได้คีย์ ส่วน account2 ได้ข้อมูลล็อกอินของบัญชี
delivery มีสองรูป และ type ของออเดอร์ตัวเดียวกันเป็นตัวตัดสิน
รูปของ delivery ถูกตัดสินด้วยฟิลด์ type ของออเดอร์ตัวเดียวกันนั้น ไม่ใช่ด้วยเอนด์พอยต์ที่เรียกและไม่ใช่ด้วยสถานะ — สองรูปนี้ไม่มีฟิลด์ร่วมกันเลยสักตัว: cdkey กับ account1 ได้ { keys: [{ serial }] } ส่วน account2 ได้ login · password · email · email_password · extra · ให้พาร์เซอร์ฝั่งคุณแยกสาขาด้วย type เท่านั้น ห้ามแยกจากเนื้อข้อมูล — แยกผิดทางจะอ่านได้ undefined ทั้งก้อน ซึ่งหน้าตาเหมือนของยังไม่มาเป๊ะ ทั้งที่จ่ายเงินไปแล้วและของมาแล้ว · กติกาเดียวกันนี้ใช้กับก้อนที่ webhook ส่งมาด้วย เพราะมันคือก้อนเดียวกันนี้เอง
การปฏิเสธที่ด่านยืนยันตัวตนเกิดกับเอนด์พอยต์นี้ด้วย
ห้ารหัสของด่านยืนยันตัวตน — 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
| ชื่อ | ชนิด | วิธีใช้ |
|---|---|---|
| order_idบังคับ | สตริง | ค่า order_id ที่ได้ตอนสั่งซื้อ · ขึ้นต้นด้วย ord_ ตามด้วยเลขฐานสิบหก 24 ตัว · บันทึกไว้ฝั่งคุณตั้งแต่ตอนสั่ง เพราะเป็นทางเดียวที่จะกลับมาดูออเดอร์นั้นได้โดยตรง |
Header
| ชื่อ | ชนิด | วิธีใช้ |
|---|---|---|
| Authorizationบังคับ | string | คีย์ของคุณในรูป Bearer <คีย์> — ต้องส่งมาทุกคำขอ |
ข้อมูลที่ได้รับ
| ชื่อ | ชนิด | วิธีใช้ |
|---|---|---|
| order_id | สตริง หรือ null | รหัสออเดอร์ ขึ้นต้นด้วย ord_ ตามด้วยเลขฐานสิบหก 24 ตัวรายละเอียดและข้อควรระวัง
|
| status | สตริง หรือ null | สถานะของออเดอร์ตอนนี้ รายละเอียดและข้อควรระวัง
|
| type | สตริง หรือ null | ประเภทที่สั่งไว้ — เป็นตัวบอกว่า delivery จะมารูปไหน ไม่ใช่เอนด์พอยต์ที่เรียกและไม่ใช่สถานะ |
| product_id | สตริง หรือ null | รหัสสินค้าที่สั่ง |
| price | ตัวเลข หรือ null | ราคาที่ตกลงกันไว้ หน่วยบาท เท่ากับ expected_price ที่ส่งมาตอนสั่ง |
| charged | อ็อบเจกต์ หรือ null | { amount, currency } คือยอดที่หักจากกระเป๋าจริง และเป็นฟิลด์ เดียว ที่ตอบว่าออเดอร์นี้จ่ายไปแล้วหรือยังรายละเอียดและข้อควรระวัง
|
| delivery | อ็อบเจกต์ หรือ null | ตัวสินค้าที่ส่งมอบ มีค่าเฉพาะตอน status เป็น completed และมาใน หนึ่งในสองรูปที่ไม่มีฟิลด์ร่วมกันเลยสักตัว โดยดูจาก type ของออเดอร์ตัวเดียวกันนี้รายละเอียดและข้อควรระวัง
|
| error | อ็อบเจกต์ หรือ null | สาเหตุที่ไม่สำเร็จ มีค่าเฉพาะตอน status เป็น failed โดยมี { code, message } อยู่ข้างในรายละเอียดและข้อควรระวัง
|
| created_at | สตริง ISO 8601 (UTC) หรือ null | เวลาที่ออเดอร์ถูกสร้าง |
| updated_at | สตริง ISO 8601 (UTC) หรือ null | เวลาที่ออเดอร์ถูกแก้ครั้งล่าสุด |
สถานะที่อาจได้รับ
| สถานะ | รหัส | ความหมาย |
|---|---|---|
| 200 | — | queued — ยังไม่ถึงคิว รออ่านซ้ำเรายังไม่ได้เริ่มซื้อออเดอร์นี้ · charged กับ delivery เป็น null ทั้งคู่ ซึ่งถูกต้องแล้วสำหรับสถานะนี้ · สิ่งที่ต้องทำคือรออีกสักพักแล้วอ่านซ้ำ (หรือรอ callback ถ้าตั้งไว้) |
| 200 | — | failed — ไม่สำเร็จ และออเดอร์ไม่มีบันทึกการหักเงินอ่านสาเหตุจาก error.codeรายละเอียดและข้อควรระวัง
|
| 200 | — | failed — ไม่สำเร็จ แต่ charged มีค่าอยู่ออเดอร์นี้กับออเดอร์ข้างบนมีสถานะเดียวกันเป๊ะ แต่เงินเดินไปไม่เท่ากัน ออเดอร์ข้างบนไม่มีบันทึกการหักเงิน ส่วนออเดอร์นี้มี รายละเอียดและข้อควรระวัง
|
| 200 | — | refunded — คืนเงินแล้ว และ charged ยังคงค่าเดิมไว้การคืนเงินไม่ล้างและไม่เขียนทับ charged ค่านั้นยังบอกว่าเคยหักไปเท่าไหร่ ส่วนตัวที่บอกว่าคืนแล้วคือ status ที่เป็น refundedรายละเอียดและข้อควรระวัง
|
| 200 | — | completed — ได้ของแล้ว (แบบคีย์)type เป็น cdkey หรือ account1 ของที่ส่งมอบจึงอยู่ที่ delivery.keys[].serial ซึ่งเป็นค่าที่คุณเอาไปส่งต่อให้ผู้ซื้อได้เลย |
| 200 | — | completed — แต่ delivery.keys ว่าง (ผิดปกติ)keys ที่ว่างคู่กับ completed แปลว่าคีย์ยังไม่ถูกบันทึกลงออเดอร์ · ให้อ่านออเดอร์ซ้ำอีกครั้ง และ ห้ามสั่งใหม่ ถ้ายังว่างอยู่ให้ติดต่อเราพร้อม order_id |
| 200 | — | completed — ได้ของแล้ว (แบบบัญชี)type เป็น account2 ของที่ส่งมอบคือสี่ฟิลด์ข้อมูลล็อกอิน ซึ่งเป็นสิ่งที่คุณส่งต่อให้ผู้ซื้อรายละเอียดและข้อควรระวัง
|
| 200 | — | completed — แต่รายละเอียดบัญชีอ่านไม่ได้ (ผิดปกติ)ออเดอร์ที่ completed ทั้งที่รายละเอียดยังไม่ครบ จะยังคงรูปเดิมนี้ไว้ คือมีคีย์ครบทุกช่องแต่ค่าเป็น null ไม่มีทางที่ delivery ทั้งก้อนจะกลายเป็น nullรายละเอียดและข้อควรระวัง
|
| 400 | bad_request | ไม่ได้ใส่ order_id มาใน URLช่อง order_id ใน URL ว่างเปล่า หรือมีแต่ช่องว่าง — เติมค่าให้ถูกแล้วยิงใหม่ |
| 404 | order_not_found | ไม่พบออเดอร์นี้ เกิดได้สามกรณี คือ order_id รูปแบบผิดรายละเอียดและข้อควรระวัง
|