Um pouco tarde, eu sei. Mas caso alguém mais encontre esse problema.
Na verdade, devemos fazer urlencoding do payload antes de codificá-lo em base64. Nosso plugin do WordPress e nossa implementação em Ruby usam funções de biblioteca para construir o payload, o que automaticamente cuida da codificação.
Atualizei a documentação para deixar mais explícito: