您好,
HTTP 403 錯誤可能是因為請求本文在簽章驗證前被 JSON 解析器或中介軟體修改,導致計算出的簽章與付款平台提供的簽章不一致。請確保驗證時使用原始、未經修改的請求本文,並在驗證成功後才解析 JSON 和執行付款處理邏輯。
如果使用 Node.js,請在付款 Webhook 路由中取得原始 "Buffer",並確保 "express.json()" 等中介軟體不會先解析該路由的請求本文。驗證時,請確認使用正確的簽章標頭、演算法及 Webhook 密鑰,並使用常數時間比較方法。
為確認問題是否源於本文解析,請在測試環境比較原始本文與驗證程式實際收到的資料,並記錄簽章驗證失敗次數及 HTTP 狀態碼;切勿記錄付款敏感資料或密鑰。建議先只調整 Webhook 路由的本文處理方式,保留現有付款邏輯,並使用付款平台提供的測試事件驗證修正結果。
如果問題仍然存在,請提供所使用的付款平台、程式語言及 Web 框架,以便進一步確認正確的驗證方式。希望這裡的內容對您有幫助。如果它能幫助您更深入地了解問題,請採納此答案。如果您還有其他問題,歡迎留言。祝您愉快!
HP.