Estou com esse erro também. Como aqui onde trabalho não temos certificado válido para essa operação de SP, acredito que o problema seja esse. Mas só vou ter certeza quando agendarmos uma visita no cliente para testar com o certificado dele.
A concatenação da string não tem muito segredo. Pelo visto você já tá está conseguindo assiná-la com o certificado. Eu diria pra vc ver uma olhada justamente nesse certificado. Se ele é válido. Se ele está capacitado para transações com a prefeitura de SP enfim, esses pormenores.
Se você conseguir alguma solução do problema avise por aqui. Eu tb quando for no cliente darei uma resposta aqui positiva ou negativa. Espero que seja positiva claro.
É isso.