Em Salvador eu só consegui criar o envelope sobrescrevendo a
SoapClient e mudando os parâmetros da big hand antes do __doRequest :)
Essa classe do Giuliano Nascimento e Roberto Leite Machado é uma referência:
* o request é o 'EnviarLoteRpsEnvio'
Em outros municípios eu consigo usar a SoapClient nativa, passando as variáveis até por array.
P.s.: o Soapui ajuda a criar requisições com o envelope. Ele monta tudo a partir do wsdl.
Envelope que funciona é algo assim:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Body>
<EnviarLoteRPS>
</EnviarLoteRPS>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LoteRps id="001">
<NumeroLote>1</NumeroLote>
<Cnpj>...</Cnpj>
<InscricaoMunicipal>...</InscricaoMunicipal>
<QuantidadeRps>1</QuantidadeRps>
<ListaRps>
<Rps>
<InfRps id="rpsId22">
<IdentificacaoRps>
<Numero>22</Numero>
<Serie>1</Serie>
<Tipo>1</Tipo>
</IdentificacaoRps>
<DataEmissao>2015-08-26T13:31:31</DataEmissao>
<NaturezaOperacao>1</NaturezaOperacao>
<RegimeEspecialTributacao>1</RegimeEspecialTributacao>
<OptanteSimplesNacional>2</OptanteSimplesNacional>
<IncentivadorCultural>2</IncentivadorCultural>
<Status>1</Status>
<Servico>
<Valores>
<ValorServicos>100</ValorServicos>
<ValorDeducoes>0</ValorDeducoes>
<ValorPis>0</ValorPis>
<ValorCofins>0</ValorCofins>
<ValorIr>0</ValorIr>
<ValorCsll>0</ValorCsll>
<IssRetido>2</IssRetido>
<ValorIss>5</ValorIss>
<ValorIssRetido>0</ValorIssRetido>
<OutrasRetencoes>0</OutrasRetencoes>
<BaseCalculo>100</BaseCalculo>
<Aliquota>0.05</Aliquota>
<ValorLiquidoNfse>100</ValorLiquidoNfse>
<DescontoIncondicionado>0</DescontoIncondicionado>
<DescontoCondicionado>0</DescontoCondicionado>
</Valores>
<ItemListaServico>305</ItemListaServico>
<CodigoCnae>4399102</CodigoCnae>
<Discriminacao></Discriminacao>
<CodigoMunicipio>2927408</CodigoMunicipio>
</Servico>
<Prestador>
<Cnpj>...</Cnpj>
<InscricaoMunicipal>...</InscricaoMunicipal>
</Prestador>
<Tomador>
<IdentificacaoTomador>
<CpfCnpj>
<Cpf>...</Cpf>
</CpfCnpj>
</IdentificacaoTomador>
<RazaoSocial></RazaoSocial>
</Tomador>
</InfRps>
<SignedInfo>
<Reference URI="#rpsId22">
<Transforms>
</Transforms>
<DigestValue>...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<X509Data>...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Rps>
</ListaRps>
</LoteRps>
<SignedInfo>
<Reference URI="#001">
<Transforms>
</Transforms>
<DigestValue>...</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>...</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>...</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</EnviarLoteRpsEnvio>
]]></loteXML></EnviarLoteRPS></SOAP-ENV:Body></SOAP-ENV:Envelope>