Skip to main content
หน้าหลักบล็อกสถานะการจัดส่งของ Shipping API: รหัสสถานะ, Webhooks และการแจ้งเตือนข้อยกเว้น

สถานะการจัดส่งของ Shipping API: รหัสสถานะ, Webhooks และการแจ้งเตือนข้อยกเว้น

17TRACK

สถานะการจัดส่งของ shipping API อธิบายความคืบหน้าของพัสดุ ไม่ได้ระบุว่าคำขอ API สำเร็จหรือไม่ หากต้องการสร้างระบบติดตามที่เชื่อถือได้ ควรแยกรหัสการตอบกลับ HTTP ออกจากสถานะการจัดส่ง ประมวลผล webhook โดยไม่สันนิษฐานว่าจะมาถึงเพียงครั้งเดียวหรือตามลำดับ และเปลี่ยนข้อยกเว้นที่ต้องดำเนินการให้เป็นการแจ้งเตือนพร้อมผู้รับผิดชอบที่ชัดเจน สำหรับทีมวิศวกรรมและทีมปฏิบัติการอีคอมเมิร์ซ เป้าหมายคือบันทึกการจัดส่งที่ยังคงเชื่อถือได้เมื่อการอัปเดตจากผู้ให้บริการขนส่งล่าช้า ซ้ำกัน หรือถูกแก้ไข

สถานะการจัดส่ง Shipping API รหัสสถานะ Webhook และการแจ้งเตือนข้อยกเว้น

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

แยกรหัส HTTP ผลลัพธ์ API และสถานะการจัดส่งออกจากกัน

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

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

มาตรฐานความหมายของ HTTP กำหนดความหมายของการตอบกลับ HTTP ตัวอย่างเช่น 202 Accepted หมายความว่าคำขอได้รับการยอมรับเพื่อประมวลผล แต่การประมวลผลอาจยังไม่เสร็จสิ้น ไม่ใช่หลักฐานว่าผู้ให้บริการขนส่งรับพัสดุแล้ว

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

สร้างโมเดลสถานะโดยไม่ละทิ้งรายละเอียดจากผู้ให้บริการขนส่ง

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

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

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

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

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

สร้างการจัดการ webhook โดยยึดการรับข้อมูลที่คงทน

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

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

รหัสตอบรับที่แน่นอน ระยะหมดเวลา ตารางการลองส่งซ้ำ และพฤติกรรมการเล่นซ้ำขึ้นอยู่กับผู้ให้บริการ ให้ตรวจสอบรายละเอียดเหล่านี้โดยเฉพาะ คำแนะนำทั่วไปว่า “ให้ส่ง 200 กลับไป” ไม่สามารถใช้แทนข้อตกลง webhook ได้

ใช้ HTTPS และอย่าเก็บข้อมูลรับรองไว้ใน URL หรือ log ตามปกติ ใช้การควบคุมการเข้าถึงกับ payload ที่จัดเก็บ เนื่องจากข้อมูลการติดตามอาจมีข้อมูลส่วนบุคคล OWASP REST Security Cheat Sheet ให้คำแนะนำที่เกี่ยวข้องเกี่ยวกับการป้องกันการส่งข้อมูล การตรวจสอบอินพุต และความปลอดภัยของ endpoint

ลบเหตุการณ์ซ้ำโดยไม่ระงับการอัปเดตจริง

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

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

แยกเวลาเหตุการณ์ออกจากเวลาที่ได้รับ

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

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

เปลี่ยนข้อยกเว้นให้เป็นการดำเนินการที่มีผู้รับผิดชอบ

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

เริ่มจากนโยบายการจัดเส้นทางขนาดเล็ก:

  • ปัญหาที่อยู่หรือการเข้าถึง: ส่งต่อให้ฝ่ายสนับสนุนลูกค้าตรวจสอบปัญหาและกระบวนการแก้ไขที่ผู้ให้บริการขนส่งมีให้ อย่าสัญญาว่าจะเปลี่ยนที่อยู่ก่อนยืนยันว่าทำได้
  • ต้องไปรับพัสดุ: แจ้งผู้รับเมื่อแหล่งข้อมูลมีคำแนะนำการรับพัสดุที่ใช้งานได้ เก็บกำหนดเวลาที่ตรวจสอบแล้วไว้
  • ต้องดำเนินการด้านศุลกากร: มอบหมายกรณีตามผู้ที่ต้องจัดเตรียมเอกสารหรือข้อมูลที่ร้องขอ เหตุการณ์ที่เกี่ยวข้องกับศุลกากรเพียงอย่างเดียวไม่ได้ยืนยันว่าต้องชำระเงิน
  • พยายามจัดส่งไม่สำเร็จ: ตรวจสอบขั้นตอนถัดไปที่รายงานไว้ก่อนแนะนำให้จัดส่งใหม่หรือไปรับพัสดุ
  • ส่งคืนผู้ส่ง: เปิดการตรวจสอบโดยฝ่ายปฏิบัติการ อย่าออกเงินคืนโดยอัตโนมัติเพียงจากป้ายกำกับการติดตามแบบกว้าง เว้นแต่นโยบายของคุณอนุญาตไว้อย่างชัดเจน
  • ผู้ให้บริการรายงานว่าสูญหายหรือเสียหาย: ส่งต่อให้ผู้รับผิดชอบการเคลมและเก็บหลักฐานเหตุการณ์ไว้ แยกการตัดสินใจเรื่องเคลมออกจากการตรวจจับความล่าช้าทั่วไป

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

ถือว่า “ไม่มีการอัปเดต” เป็นเงื่อนไขแยกต่างหาก

การจัดส่งที่ไม่มีการสแกนล่าสุดไม่ได้หมายความว่าสูญหายโดยอัตโนมัติ อาจอยู่ระหว่างจุดตรวจ รอการสแกนทางกายภาพครั้งแรก หรือได้รับผลกระทบจากช่องว่างในการมองเห็น

กำหนดเกณฑ์การไม่มีความเคลื่อนไหวตามบริการ เส้นทาง ขั้นตอนการจัดส่ง และคำมั่นทางธุรกิจ แทนการใช้ตัวจับเวลาเดียวกับทุกกรณี แยกพัสดุที่ไม่เคยได้รับการสแกนรับพัสดุออกจากพัสดุที่หยุดอัปเดตหลังเข้าสู่เครือข่าย หากหลักฐานในอดีตมีจำกัด ให้ใช้เกณฑ์ดังกล่าวเพื่อเริ่มการตรวจสอบ ไม่ใช่ประกาศว่าพัสดุสูญหาย

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

ตรวจสอบสุขภาพการเชื่อมต่อแยกจากประสิทธิภาพการจัดส่ง

การตรวจสอบ API ตอบว่าการเชื่อมต่อระบบติดตามทำงานหรือไม่ การตรวจสอบการจัดส่งตอบว่าเกิดอะไรขึ้นกับพัสดุ endpoint ที่ทำงานปกติอาจได้รับข้อมูลเก่าจากผู้ให้บริการขนส่ง ขณะที่ endpoint ที่ไม่พร้อมใช้งานอาจพลาดการอัปเดตของพัสดุที่ยังเคลื่อนที่ตามปกติ

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

สำหรับการลองส่งคำขอซ้ำ ให้ปฏิบัติตามคำแนะนำของผู้ให้บริการเกี่ยวกับการจำกัดอัตราและการลองใหม่ หลีกเลี่ยงการทำซ้ำการดำเนินการที่อาจสร้างการลงทะเบียนซ้ำหรือผลข้างเคียงอื่น ๆ โดยไม่ตรวจสอบ ใช้กลไก idempotency ที่มีเอกสารรองรับเมื่อมีให้ใช้

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

ทดสอบกรณีล้มเหลวก่อนเปิดใช้การแจ้งเตือนลูกค้า

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

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

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

คำถามที่พบบ่อย

HTTP 200 หมายความว่าพัสดุถูกจัดส่งแล้วหรือไม่

ไม่ หมายถึงคำขอสำเร็จในระดับ HTTP เท่านั้น ให้อ่านผลลัพธ์ทางธุรกิจของ API และฟิลด์สถานะการจัดส่งแยกจากกัน สำหรับ webhook การตอบรับสำเร็จเกี่ยวข้องกับการรับการแจ้งเตือน ไม่ใช่การจัดส่งพัสดุจริง

ควรใช้ webhook หรือ polling สำหรับการอัปเดตการติดตาม

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

เหตุใดสถานะการติดตามจึงเปลี่ยนหลังจาก “จัดส่งแล้ว”

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

ควรส่งการแจ้งเตือนข้อยกเว้นเร็วเพียงใด

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

ลูกค้าควรเห็นสถานะดิบจากผู้ให้บริการขนส่งหรือไม่

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

แหล่งข้อมูล

  • RFC 9110: HTTP Semantics — แหล่งอ้างอิงสำหรับความหมายของรหัสสถานะ HTTP รวมถึง 200 และ 202
  • OWASP REST Security Cheat Sheet — คำแนะนำด้านความปลอดภัยที่เกี่ยวข้องกับ endpoint ของ API และ webhook
  • 17TRACK Tracking API — แหล่งอ้างอิงผลิตภัณฑ์อย่างเป็นทางการสำหรับตัวเลือกการเชื่อมต่อระบบติดตามที่กล่าวถึง
  • 17TRACK API Documentation — แหล่งอ้างอิงอย่างเป็นทางการสำหรับข้อกำหนดการเชื่อมต่อเฉพาะของผู้ให้บริการ สคีมาและคำแนะนำเวิร์กโฟลว์ในคู่มือนี้เป็นเพียงตัวอย่าง ไม่สามารถใช้แทนข้อตกลงดังกล่าว
Loading