pub fn canonical_payload_hash(payload: &Value) -> String
Compute SHA-256 hash over a canonicalized JSON payload.
Canonicalization: serialize with sorted keys and no extra whitespace.