Start here. This is the direct spoken answer to practice first.
Overview
Verifies provider signatures over raw bytes, enforces freshness, and makes repeated delivery idempotent.
I read the raw request bytes and verify the provider's signature with the configured endpoint secret before parsing or acting on the payload. For HMAC signatures I compute the expected digest with the documented algorithm and compare it with hmac.compare_digest. I reject missing, malformed, or invalid signatures with a generic response. Re-serializing parsed JSON is wrong because whitespace and field order can change the signed bytes.