Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
AnthraxisBR

Conexão site prefeitura ISS com PHP + cURL + SOAP + XML + certificado digital

Pergunta

 

A prefeitura oferece um ótimo suporte (sarcasmo) a webservice fornecida, e graças a isso estou perdido a muito tempo no que deveria ser um negócio muito simples.

 

http://isscuritiba.curitiba.pr.gov.br/

 

Com o código abaixo eu faço login no webservice do ISS de curitiba, consigo enviar a requisição xml com sucesso e receber o retorno do webservice, porém, não consigo identificar no servidor/documentação quais são os campos obrigatórios pra trazer dados, e nem quais são os formatos dos campos, a minha resposta é que os dados enviados sempre estão inválidos.


<?php

$xml_data = '<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ConsultarNfse xmlns="http://www.e-governeapps2.com.br/">
      <ConsultarNfseEnvio>
      <Prestador>
          <Cnpj>string</Cnpj>
          <InscricaoMunicipal>string</InscricaoMunicipal>
        </Prestador>
      </ConsultarNfseEnvio>
    </ConsultarNfse>
  </soap:Body>
</soap:Envelope>';




$url = "https://pilotoisscuritiba.curitiba.pr.gov.br/nfse_ws/NfseWs.asmx?WSDL";

$headers = array(
    "POST  /nfse_ws/nfsews.asmx HTTP/1.1",
    "Host: pilotoisscuritiba.curitiba.pr.gov.br",
    "Content-Type: text/xml; charset=utf-8",
    "SOAPAction: \"http://www.e-governeapps2.com.br/ConsultarNfse\"",
    "Content-length: " . strlen($xml_data)
);

$xml = $xml_data;
$ch = curl_init();

$soapUser = "username";  //  username
$soapPassword = "123456"; // password

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . '\Pre_ISS_Cert.pem');


curl_setopt($ch, CURLOPT_URL, "$url");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSH_PRIVATE_KEYFILE, getcwd() . '\Pref_ISS_Cert.pfx');
curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . '\Pre_ISS_Cert.pem');

curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "easy2017");

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_REFERER, "$url");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

$ch_result = curl_exec($ch);

print_r($ch_result);
curl_close($ch);
?>

Alguma ideia do que fazer nessa situação sabendo que não adianta ligar pro lugar que fornece o serviço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 resposta a esta questão

Recommended Posts

@AnthraxisBR Opa! Como você resolveu o problema? Estou precisando fazer algo parecido, para o Bilhete Eletrônico da SEFAZ.

Tenho que anexar o certificado digital e-CNPJ mas dá sempre erro:
 

Exceção capturada: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://behmle.sefaz.salvador.ba.gov.br/ws/WsBilheteEletronico.svc/basic?wsdl' : failed to load external entity "https://behmle.sefaz.salvador.ba.gov.br/ws/WsBilheteEletronico.svc/basic?wsdl"

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por daemon
      Boa tarde,
       
      Duvida simples...
       
      Quando recupero os dados RSS, para inserir no banco de dados esta salvando corretamento porém no mysql esta com (ponto) . na frente de todos os registros via RSS.
       
      Fica com um ponto na frente outro atras...
       
      Data/hora:
      .2024-11-30 10:03:47.
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.