Update: The public and private keys for the Zip Merchant account have changed and now the validation works, so I’ll mark this issue as resolved. The successful validation is still only showing the [p] and [route] values, so I must have been mistaken when I initially thought that was part of the issue.
Unsure why the first set of keys didn’t work and the new ones did, my client had only recently set up the Merchant account so it shouldn’t have been outdated already. Hopefully this doesn’t affect anyone else in the future.