รหัสสถานะ HTTP ในช่วง 400-499 หรือ 500-599 ที่มาจากเซิร์ฟเวอร์ของคุณหมายถึงระบบได้รับคำขอดังกล่าวแต่ไม่สามารถดำเนินการคำขอได้ ให้ลองดำเนินการดังนี้
ดูข้อมูลเพิ่มเติมที่การตอบกลับจากเซิร์ฟเวอร์ของคุณในแดชบอร์ด โดยการตอบกลับอาจไม่มีข้อมูลเพิ่มเติมใดๆ ทั้งนี้ ขึ้นอยู่กับลักษณะการกำหนดค่าของเซิร์ฟเวอร์รวมถึงการออกแบบโค้ดเพื่อให้ดำเนินการกับข้อผิดพลาด
ตรวจสอบข้อผิดพลาดหรือคำเตือนในบันทึกเซิร์ฟเวอร์ ข้อผิดพลาดเหล่านี้อาจช่วยให้คุณพบสาเหตุของการตอบกลับที่ผิดพลาด ซึ่งอาจเกิดจากโค้ดที่ใช้ดำเนินการ Webhook หรือปัญหาเกี่ยวกับการกำหนดค่าบนเซิร์ฟเวอร์ของคุณ
ยืนยันว่าเหตุการณ์ที่ได้รับมีเวอร์ชัน API ที่โค้ดสามารถดำเนินการได้ เวอร์ชัน API จะเป็นตัวกำหนดโครงสร้างของออบเจ็กต์ที่อยู่ในเหตุการณ์ หากเวอร์ชัน API ของเหตุการณ์ขาเข้ากับโค้ดการประมวลผลของคุณไม่ตรงกันอาจส่งผลให้เกิดข้อผิดพลาดที่ไม่คาดคิดได้
ดูข้อมูลโดยละเอียดเกี่ยวกับข้อผิดพลาดที่พบบ่อยบางส่วนซึ่งส่งผลให้เกิดรหัสสถานะ 4xx และ 5xx รวมถึงวิธีการแก้ไขได้ด้านล่าง
ข้อผิดพลาดนี้หรือข้อผิดพลาดที่คล้ายกัน (ข้อความที่ใช้อาจแตกต่างกันไป) หมายถึงขั้นตอนการยืนยันลายเซ็นของ Webhook ไม่สำเร็จ ข้อผิดพลาดนี้มักเกิดขึ้นจากสาเหตุใดสาเหตุหนึ่งต่อไปนี้
คีย์ลับลงนามของ Webhook (whsec_
) ที่ใช้ในขั้นตอนการยืนยันลายเซ็นไม่ถูกต้อง
ตรวจสอบว่าคุณใช้คีย์ลับลงนามของ Webhook ที่ตรงกับปลายทาง Webhook ที่ส่งเหตุการณ์ซึ่งพบได้ในแดชบอร์ดหลังจากที่เลือกปลายทาง Webhook ที่ต้องการแล้ว
หากคุณใช้ Stripe CLI ระบบจะสร้างและแสดงคีย์ลับลงนามของ Webhook ให้คุณใช้งานเมื่อคุณเรียกใช้คำสั่ง stripe listen
มีการแก้ไขเนื้อหาคำขอก่อนที่การยืนยันลายเซ็นของ Webhook จะทำงาน
การเรียกใช้งานขั้นตอนการยืนยันลายเซ็นของ Webhook ต้องใช้เนื้อหาคำขอขาเข้าที่ไม่มีการดัดแปลงหรือแก้ไขเปลี่ยนแปลงจาก Stripe
หากโค้ดที่คุณใช้มีการแยกวิเคราะห์ จัดรูปแบบ หรือการกระทำอื่นใดที่เป็นการแก้ไขเนื้อหาคำขอก่อนการยืนยันลายเซ็น คุณจะพบข้อผิดพลาดในลักษณะนี้
ปรับเปลี่ยนหรือลบโค้ดรวมถึงซอฟต์แวร์ตัวกลางที่อาจแก้ไขเนื้อหาคำขอขาเข้าเดิมแล้วลองอีกครั้ง
หมายเหตุ ซอฟต์แวร์ตัวกลาง Node.js มักจะแก้ไขเนื้อหาของคำขอขาเข้า โดยพยายามแยกเนื้อหาคำขอเดิมออกก่อนที่จะมีการเรียกใช้งานซอฟต์แวร์ตัวกลางอื่นๆ
ข้อผิดพลาดนี้หรือข้อผิดพลาดที่คล้ายกัน (ข้อความที่ใช้อาจแตกต่างกันไป) หมายถึงเหตุการณ์ที่ได้รับเก่าเกินไปจนไม่สามารถยืนยันได้สำเร็จ ลายเซ็นของ Webhook มีองค์ประกอบเวลาและจะต้องยืนยันในเวลาไม่นานหลังจากที่ได้รับ
ให้ลองดำเนินการดังนี้
ยืนยันว่าได้ตั้งเวลาและวันที่ในเซิร์ฟเวอร์อย่างถูกต้องแล้ว
ตรวจสอบว่าคุณยืนยันลายเซ็นของ Webhook ขาเข้าทันทีที่ได้รับเหตุการณ์โดยไม่เกิดความล่าช้า
ข้อผิดพลาดเหล่านี้มักมีสาเหตุมาจากการที่โค้ดสร้างข้อยกเว้น ข้อผิดพลาดในการแยกวิเคราะห์ หรือการเปลี่ยนแปลงบางประเภทที่ส่งผลกับส่วนอื่นๆ
โดยส่วนใหญ่แล้ว ข้อผิดพลาดในกลุ่มนี้มักมีสาเหตุมาจากการเปลี่ยนแปลงบางประเภทที่เกิดขึ้นกับเซิร์ฟเวอร์หรือโครงสร้างพื้นฐานที่เกี่ยวข้องกับการประมวลผล Webhook โค้ดใหม่หรือโค้ดที่มีการเปลี่ยนแปลง การอัปเดตเซิร์ฟเวอร์ หรือการเปลี่ยนแปลงการกำหนดค่าอาจทำให้เกิดโหมดใหม่ที่ดำเนินการไม่สำเร็จหรือทำให้เข้ากันไม่ได้
หากคุณพบข้อผิดพลาดนี้ ให้ดูข้อมูลเพิ่มเติมจากบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ ตำแหน่งของบันทึกข้อผิดพลาดนั้นจะแตกต่างกันไปในแต่ละเซิร์ฟเวอร์ ทั้งนี้ ขึ้นอยู่กับการกำหนดค่า ระบบปฏิบัติการ ภาษาการเขียนโปรแกรมที่ใช้ รวมถึงปัจจัยอื่นๆ เราจึงไม่สามารถให้คำแนะนำที่เจาะจงได้ เราขอแนะนำให้คุณตรวจสอบทั้งบันทึกและการกำหนดค่าบันทึกข้อผิดพลาดเพื่อดูว่าคุณได้ใช้สิ่งใดต่อไปนี้ในการรับ Webhook หรือไม่
ภาษาการเขียนโปรแกรมที่คุณใช้ (เช่น Ruby, Python, PHP, Java, Node.js, Go, .NET ฯลฯ)
เว็บเซิร์ฟเวอร์ที่คุณใช้ (เช่น Nginx, Apache, Microsoft IIS ฯลฯ)
ผู้ให้บริการระบบคลาวด์หรือเซิร์ฟเวอร์ที่คุณใช้บริการ (เช่น Amazon Web Services, Google Cloud Computing, Cloudflare ฯลฯ)