Implement the canonical form exactly as specified above. The defaults of most JSON libraries differ in at least one respect — indentation width, uppercase hex in \u escapes, key re-ordering, or how whole-number floats are rendered — so verify your output byte-for-byte against a known-good payload before going live.
Bodies are UTF-8 in both directions, and callbacks are sent with Content-Type: application/json.