NFSe João Pessoa com nusoap

Estou implementando uma integração com a solução webservice de João Pessoa com nusoap, mas com erro, alguém tem algum exemplo de como fazer a chamada no webservice de João Pessoa?

desde já agradeço.

Primeiramente, você precisa de um certificado digital de uma empresa que esteja habilitada a emitir notas na prefeitura.
Caso contrário não consegue nem acessar o endereço do webservice.

Qual modelo segue a prefeitura de João Pessoa?
Tenho um modelo funcional para a prefeitura de Betim-MG que utiliza o ginfes!

Obrigado pela resposta, a empresa que estou implementando tem um certificado.
já tentei ligar lá varias vezes mas não atenderam.
estou tentando fazer a chamada via nusoap em php e já
trecho do codigo…
$endpoint =“https://sispmjp.joaopessoa.pb.gov.br:8443/sispmjp/NfseWSService”;

/**/

//$xml_assinado = file_get_contents($dir_arquivo_ass.$xml_ass);

$client = new SoapClient(null, array('location' => $endpoint, 'uri' => $endpoint, 'trace' => true, 'connection_timeout' => 5));
	
	$error  = $client->getError();
	
	if ($error) {
		
			echo "<h2>Error na conexao </h2><pre>" . $error . "</pre>";
	}

	$xml = trim($xml_assinado);

	$request = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 				xmlns:ser="https://sispmjp.joaopessoa.pb.gov.br:8443/sispmjp/NfseWSService/">
		<soapenv:Header/>
		<soapenv:Body>
 		 <ser:GerarNfse>
    	 <XML><![CDATA['.$xml.']]></XML>
  		</ser:GerarNfse>
		</soapenv:Body>
		</soapenv:Envelope>';	


	$result = $client->__doRequest($request, $endpoint, "", SOAP_1_1);


	if ($client->fault) {
		
			echo "<h2>Fault ....</h2><pre>";
			var_dump($result);
			echo "</pre>";
	}else{
		echo 'else';

		var_dump($result);
		
		//cria o status de envio
		setStautsXml($var_cod_xml, 3);
		
		//atualiza o campo com o xml de retorno
		setXmlRetorno($var_cod_xml,utf8_encode($result['RecepcionarLoteRpsResponse']));
		//mostra o protocolo
		
		$res  = new SimpleXMLElement($result['RecepcionarLoteRpsResponse']);
	

		echo "PROTOCOLO DO ENVIO: ".$res->Protocolo."<br>";
		
		$cont++;
		
		}

Obrigado pela sua ajuda, Pelos contatos que fiz com a prefeitura de João Pessoa eles desenvolveram a solução deles e não roda em nenhuma outra cidade.

Acredito que usando nusoap você não vai conseguir.
Com o cURL é simples.

A diferença é que precisa usar o certificado para se comunicar com o servidor.
Não é apenas para assinar o XML.

Precisa converter o certificado de PFX para PEM.
Se você não sabe fazer isso em PHP, pode usar esse site:
https://www.sslshopper.com/ssl-converter.html

Para enviar o XML usando CURL:

        $headers = array(
            "Content-type: text/xml; charset=utf-8",
            "SOAPAction: RecepcionarLoteRpsV3",
            "Content-length: ".strlen($envelope),
            "Expect:"
        );

        $url = "https://sispmjp.joaopessoa.pb.gov.br:8443/sispmjp/NfseWSService";

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
        curl_setopt($ch, CURLOPT_TIMEOUT, 300);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $envelope); //SOAP request
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLINFO_HEADER_OUT, true);

        //SSL
        $cert_dir = dirname(dirname($this->rps_dir))."/cert";
        $keyFile = "$cert_dir/pkey.pem";
        $caFile = "$cert_dir/ca.pem";
        $certFile = "$cert_dir/cert.pem";
        $certPass = file_get_contents("$cert_dir/pass.txt");

        curl_setopt($ch, CURLOPT_SSLKEY, $keyFile);
        //curl_setopt($ch, CURLOPT_CAINFO, $caFile);
        curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
        curl_setopt($ch, CURLOPT_SSLCERTPASSWD, $certPass);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        // Converte
        //$html = utf8_decode(curl_exec($ch)); --converte de UTF-8 para ISO-8859
        $html = curl_exec($ch);
        if($html === false){
            $return->data['errors'][] = [
                "codigo"    => 500,
                "mensagem"  => curl_error($ch),
                "correcao"  => ""
            ];

            return $return;
        }

        //Envio
        $sentHeaders = curl_getinfo($ch, CURLINFO_HEADER_OUT);
        file_put_contents("$fname.env", "$sentHeaders \n $envelope");

        //curl info
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        //$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);

        //Retorno
        file_put_contents("$fname.ret", $html);

        //Fechar curl
        curl_close($ch);
        $return->status = $httpcode;

        if ($httpcode!=200){
            preg_match_all('/<faultstring>(.*?)<\/faultstring>/s', html_entity_decode($html), $matches);
            $response = (count($matches)&&count($matches[1])?$matches[1][0]:$html);

            $return->data['errors'][] = [
                "codigo"    => $httpcode,
                "mensagem"  => $response,
                "correcao"  => ""
            ];

            return $return;
        }

        //Extrai o XML
        $html = html_entity_decode(file_get_contents("$fname.ret"));
        preg_match_all('/<return>(.*?)<\/return>/s', html_entity_decode($html), $matches);
        $response = (count($matches)&&count($matches[1])?$matches[1][0]:$html);

A variável $envelope é o XML já transformado para chamada SOAP.
Esse aqui é um exemplo de cabeçalho da GINFES.

        $envelope =
        "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:pro=\"http://producao.ginfes.com.br\">\n".
        "<soapenv:Body>\n".
        "<pro:RecepcionarLoteRpsV3>\n".
        "<arg0>%CabMsg%</arg0>\n".
        "<arg1>%DadMsg%</arg1>\n".
        "</pro:RecepcionarLoteRpsV3>".
        "</soapenv:Body>".
        "</soapenv:Envelope>";

        $xml = $this->rpsAsXML();
        $envelope = str_replace('%CabMsg%', $this->cabecalho, $envelope);
        $envelope = str_replace('%DadMsg%', $this->toLiteral($xml), $envelope);
        file_put_contents("$fname", $xml);

Rotinas auxiliares:

    private function fromLiteral($docxml)
    {
        $docxml = str_replace('&lt;', '<', $docxml);
        $docxml = str_replace('&gt;', '>', $docxml);
        return $docxml;
    }

    private function toLiteral($docxml)
    {
        //$docxml = str_replace('&', '&amp;', $docxml);
        $docxml = str_replace('<', '&lt;', $docxml);
        $docxml = str_replace('>', '&gt;', $docxml);
        return $docxml;
    }

Essa variável cabecalho você tem o xml dela?

Desculpe a demora:

<cabecalho versao="1.00">
<versaoDados>1.00</versaoDados>
</cabecalho>

Outro detalhe é o namespace no XML.
Isso quebra as pernas, pois não é explícito.

Segue o XML da consulta de notas por período:

<nfse:ConsultarNfseServicoPrestadoEnvio xmlns:nfse="http://www.abrasf.org.br/nfse.xsd">
    <nfse:Prestador>
        <nfse:CpfCnpj>
            <nfse:Cnpj>{$cnpj}</nfse:Cnpj>
        </nfse:CpfCnpj>
        <nfse:InscricaoMunicipal>{$im}</nfse:InscricaoMunicipal>
    </nfse:Prestador>
    <nfse:PeriodoCompetencia>
        <nfse:DataInicial>{$data_inicio}</nfse:DataInicial>
        <nfse:DataFinal>{$data_fim}</nfse:DataFinal>
    </nfse:PeriodoCompetencia>
    <nfse:Pagina>1</nfse:Pagina>
</nfse:ConsultarNfseServicoPrestadoEnvio>

Onde a data é no formato: "yyyy-mm-dd"