stavarengo / php-sigep

PHP client library for the Brazilian Post Office Web Service. Integração com Web Service do Correios. Consulta preços e prazos, imprime etiquetas e PLP, etc.
https://phpsigep.stavarengo.me
MIT License
363 stars 251 forks source link

Problema com ambiente de produção #35

Closed lkfischer closed 7 years ago

lkfischer commented 8 years ago

Olá pessoal, estou fazendo a geração de etiqueta em um sistema de um cliente meu, peguei o exemplo do solicitar etiqueta com o ambiente de homologação, ele retorna perfeitamente os dados, porém quando colocou os dados masters do contrato do cliente, ele me retorna que esta com erro de autenticação, imaginei que o problema existia por que estava tentando achar os dados dela na base de homologação dos correios, porém quando troco para o link de produção dos correios, a página fica carregando eternamente, não sei se eu estou cometendo algum erro na hora de alterar para o ambiente de produção, onde seria exatamente?

Agraçado, desde já qualquer ajuda.

Att,

jorom commented 8 years ago

Estou com o mesmo problema, Já conseguiste resolver? Alem disso parece que a conexão trava não obtenho resposta.

Obrigado Zeca

lkfischer commented 8 years ago

Jorom, resolvi da seguinte maneira, o Web Service dos correios tem algum problema com a versão 5.3 do PHP então para resolver esse problema basta fazer o download do xml deles e utilizar ele no seu servidor para fazer conexão com a maquina deles.

Link do arquivo de produção para download: https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl

OBS: Ele não irá funcionar em um servidor local, como Wamp, Xammp entre outros... Então teste em um servidor na Web mesmo.

Qualquer dúvida em como implementar, fala comigo pois não sei se fui muito claro.

Att,

jorom commented 8 years ago

Obrigado pela dica, mas sou leigo neste tipo de comunicação onde coloco o XML para a conexão? Coloco no meu servidor e busco de ao inves deste link no WSDL_ATENDE_CLIENTE_PRODUCTION?

Abraços,

lkfischer commented 8 years ago

Você vai alterar o link do arquivo Config o de produção e colocar o destino de onde esta o arquivo que você baixou.

Por exemplo: "const WSDL_ATENDE_CLIENTE_PRODUCTION = 'http://suaurl/AtendeCliente.xml?wsdl';"

Entendeu?

jorom commented 8 years ago

Sim vou testar

jorom commented 8 years ago

Funcionou..muito obrigado. Por um acaso você fez algo para Autorização de Postagem? Percebi que nesta biblioteca não tem isso.

VAleu

thaz-yami commented 8 years ago

@pvpzaum Obrigado pela dica, você é foda, te devo uma breja brother!

stavarengo commented 8 years ago

Posso fechar esse bug galera?

lkfischer commented 8 years ago

@stavarengo ah não ser que o pessoal ainda tenha dúvidas, pode fechar.

JessileyOliveira commented 8 years ago

esse bug acontece com muita gente, seria interessante colocar um aviso em algum lugar sobre isso.

IuryChristmas commented 8 years ago

Uma outra opção é setar a url direto na var $wsdl lá em SoapClientFactory no método getSoapClient()

stavarengo commented 8 years ago

@xjaco222x Você pode fazer esse aviso pra gente? Pode ser uma sessão no readme.md explicando sobre o problema e como resolver. Você consegue?

JessileyOliveira commented 8 years ago

@stavarengo fiz a solicitação de alteração, não tenho tanto conhecimento no gitHub mas tentei me basear no restante do README.MD

stavarengo commented 8 years ago

Show. Aguardo o seu PR entao.

stavarengo commented 8 years ago

@xjaco222x No readme.md você disse "OBS: Não irá funcionar em um servidor local, como Wamp, Xammp entre outros.".

Porque não funciona? Sabe dizer?

JessileyOliveira commented 8 years ago

@stavarengo fiz os testes e não consegui fazer funcionar mas não sei pq, vi que o @pvpzaum informou que não funciona, então intendi que não era um erro meu.

lkfischer commented 8 years ago

@xjaco222x e @stavarengo quando eu chegar em casa eu falo por que nao funciona, mas basicamente é por causa da versão do php. Quando chegar eu explico melhor .

stavarengo commented 8 years ago

Aguardo @pvpzaum. Valeu!

IuryChristmas commented 8 years ago

Vi que informaram que este problema é devido a versão do php, mas utilizo o php 5.5 e este problema de autenticação continua, vou tentar fazer o que o @pvpzaum informou e ver se funciona

lkfischer commented 8 years ago

@IuryChristmas , entendo, você esta imaginando que o problema esta com a versão antiga, mas pelo contrario, ele só funciona perfeitamente até a versão PHP 5.2, a partir da versão 5.3+ é que la para de funcionar. Eu estou tentando arrumar um tempo para que possa vir aqui mostrar os resultados dos meus testes, mas estou pegado no meu trabalho.

IuryChristmas commented 8 years ago

Ah, entendi... É que no readme deu a entender que o problema estava com as versões mais antigas, mas não entendi muito bem a solução... Fiz o download do wsdl, mas estou em dúvida onde salva-lo... em um servidor web ou no meu local, a dúvida é porque foi informado que em um servidor local como wampp, xampp... não funcionaria, no meu caso estou utilizando lampp e quando testei colando no local, acabou por não funcionar.

JessileyOliveira commented 8 years ago

@IuryChristmas teria que salvar o arquivo no servidor, e no lugar do link colocar o caminho do arquivo, nos meus testes em servidor local não consegui fazer funcionar mas também não insisti muito os testes.

IuryChristmas commented 8 years ago

Pois é @xjaco222x , também estou tentando... salvei no local, mas ainda não obtive êxito... mas vou continuar testando e ver se consigo

lkfischer commented 8 years ago

@xjaco222x e @IuryChristmas , poderia me mostrar como esta sua linha de código onde você tenta trazer o arquivo salvo? E o arquivo deve estar salvo em seu servidor na nuvem, no servidor local ele não irá funcionar.

Att,

IuryChristmas commented 8 years ago

@pvpzaum, era essa minha dúvida... vou tentar subir ele então pra nuvem e testar novamente... até então estava local... A linha de código está assim: const WSDL_ATENDE_CLIENTE_PRODUCTION = '127.0.0.1/AtendeCliente.xml?wsdl'; está correto dessa forma?

lkfischer commented 8 years ago

@IuryChristmas exato.

stavarengo commented 8 years ago

Pessoal, lembrando a todos que não é necessário mudar o valor da constante diretamente na classe. O caminho do WSDL é configurável como explicado aqui: https://github.com/stavarengo/php-sigep#example-change-wsdl

@pvpzaum Estamos todos ansiosos pela solução :)

itamogi commented 8 years ago

Pessoa, estava também com o problema e voltei a versão do PHP para a 5.2.9 e funcionou perfeitamente. O duro foi ter que voltar e perder as atualizações.

IuryChristmas commented 8 years ago

Boa tarde galera, eu testei subindo o arquivo e apareceu a seguinte mensagem de erro: failed to load external entity Preciso fazer mais alguma coisa além de só subir o AtendeCliente.xml?wsdl pro servidor e fazer o setWsdlAtendeCliente()?

JessileyOliveira commented 8 years ago

@IuryChristmas , você deve setar o WSDL_ATENDE_CLIENTE_PRODUCTION como caminho do arquivo.

JessileyOliveira commented 8 years ago

@stavarengo creio que vc tenha colocado errado no readme.md sobre onde alterar.

IuryChristmas commented 8 years ago

@xjaco222x eu fiz o que me indicou, mas continuou a dar o mesmo erro Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://servidor/AtendeCliente.xml?wsdl' : failed to load external entity "http://servidor/AtendeCliente.xml?wsdl" in /var/www/html/local/lib/PhpSigep/Services/Real/SoapClientFactory.php on line 52

JessileyOliveira commented 8 years ago

@IuryChristmas coloque o valor completo, exemplo http://www.seusite.com.br/clientes/SIGEPWEB/src/PhpSigep/correios.xml?wsdl

JessileyOliveira commented 8 years ago

ou se vc baixou o wsdl em formato wsdl é só colocar http://www.seusite.com.br/clientes/correios/SIGEPWEB/src/PhpSigep/correios.wsdl

itamogi commented 8 years ago

Ou fazer downgrade para o PHP 5.2*

On Thu, Sep 1, 2016 at 5:24 PM, Jessiley Willian Valerio de Oliveira < notifications@github.com> wrote:

ou se vc baixou o wsdl em formato sdl é só colocar http://www.seusite.com.br/clientes/correios/SIGEPWEB/ src/PhpSigep/correios.wsdl

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/stavarengo/php-sigep/issues/35#issuecomment-244200707, or mute the thread https://github.com/notifications/unsubscribe-auth/ABASSiUIpKsSx0FtgeGHncJzhw1MFTzhks5qlzRigaJpZM4HdLCH .

IuryChristmas commented 8 years ago

Vou dizer como salvei, abri o wsdl dos correios, cliquei em ver código fonte da página e depois cliquei em salvar página como, mudei o nome do arquivo e coloquei o AtendeCliente.xml?wsdl

@xjaco222x eu coloquei exatamente assim, coloquei o caminho completo do site, www.site.com.br/correios.xml?wsdl

@itamogi vou deixar essa opção como último recurso, depois que você fez o downgrade, funcionou tudo normal?

JessileyOliveira commented 8 years ago

@IuryChristmas não tem que salvar como xml?wsdl vc salva ou com a extensão xml ou com a extensão wsdl.

IuryChristmas commented 8 years ago

@xjaco222x entendi, eu fiz de maneira errada então... vou tentar novamente e salvr como xml e testar mais uma vez e digo aqui se deu certo ou não

itamogi commented 8 years ago

@luryChristmas https://github.com/IuryChristmas instalei em um outro servidor o php 5.2 e estou usando nele obtendo os resultados via json, aí não mexi no site que estava minha aplicação com o 5.6

Foi tudo normal ...

Em quinta-feira, 1 de setembro de 2016, Jessiley Willian Valerio de Oliveira notifications@github.com escreveu:

@stavarengo https://github.com/stavarengo creio que vc tenha colocado errado no readme.md sobre onde alterar.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/stavarengo/php-sigep/issues/35#issuecomment-244195971, or mute the thread https://github.com/notifications/unsubscribe-auth/ABASStMMYIs9JiHeAnR36PZXhC397JEBks5qlzA5gaJpZM4HdLCH .

mozgbrasil commented 7 years ago

Ola

Bom dia

@stavarengo

Aqui fiz o procedimento de comentar o parâmetro "stream_context" onde vemos que funcionou com dados de ambiente de produção em um servidor local

captura de tela de 2017-03-29 09-50-20 captura de tela de 2017-03-29 09-50-24 captura de tela de 2017-03-29 09-53-14 captura de tela de 2017-03-29 09-53-22 captura de tela de 2017-03-29 09-53-29

stavarengo commented 7 years ago

@mozgbrasil Olhando o histórico de alterações neste arquivo eu vi o seguinte.

  1. Eu adicionei stream_context neste commit https://github.com/stavarengo/php-sigep/commit/1ce44a0cfac0599c8d8cbcd16fae4bfc51a53884 para resolver o bug #21
  2. Depois disto o @rafaelsiqueira fez o PR https://github.com/stavarengo/php-sigep/pull/28 que removia totalmente stream_context. Provavelmente pq ele deve ter chego a mesma conclusão que vc.
  3. Por último, @gustvao enviou o PR https://github.com/stavarengo/php-sigep/pull/38 que desfez o trabalho de @rafaelsiqueira. Neste caso o @gustvao voltou a opção stream_context, porem com configurações diferentes das que eu tinha adicionado lá no passo 1.

Para mim, parece que remover stream_context não é a solução correta pois vai quebrar outros pontos e outra pessoa vai acabar adicionado novamente.

Eu sugiro que seja mesclado as duas configurações (feitas no passo 1 e no passo 2) para ver o resultado. Para isso é só mudar o array $opts declarado na linha 36 para:

$opts = array(
    'ssl' => array(
        'ciphers'           => 'RC4-SHA', 
        'verify_peer'       => false, 
        'verify_peer_name'  => false
        'allow_self_signed' => true,
    )
);

Fora isso não sei mais o que fazer. Se isso não resolver, então alguém (sugiro @mozgbrasil) terá que dar uma Googada para descobrir a verdadeira solução deste problema.

Vocês têm mais alguma ideia?

Obs: Vale a apena ressaltar o link apontado pelo @gustvao em seu PR https://github.com/stavarengo/php-sigep/pull/38. Segue o link http://stackoverflow.com/questions/34609448/soap-error-parsing-wsdl-couldnt-load-from-xampp

mozgbrasil commented 7 years ago

Bom dia

@stavarengo

Veja que fiz o teste que você sugeriu mas não funcionou

Veja que funcionou usando o seu commit 1ce44a0 para resolver o bug #21

captura de tela de 2017-03-29 10-49-18 captura de tela de 2017-03-29 10-49-31 captura de tela de 2017-03-29 10-50-02 captura de tela de 2017-03-29 10-50-11

mozgbrasil commented 7 years ago

Bom dia

Aparentemente oque está gerando o erro é o parâmetro

'ciphers'           =>'RC4-SHA',
stavarengo commented 7 years ago

Bom, acho bom a gente esperar uma explicação do @gustvao antes de remover. Ele deve ter tido um motivo para isso.

Alem disto tbm seria interessante saber pq @rafaelsiqueira escolheu remover o stream_context quando ele ainda nem tinha a opção ciphers configurada.

gustvao commented 7 years ago

fala galera, eu só implementei uma solução do @vitalibr que aparentemente tinha resolvido um problema que eu estava tendo e ainda nao tinha sido PR

https://github.com/stavarengo/php-sigep/issues/23

stavarengo commented 7 years ago

@mozgbrasil agora em com vc. O que vc sugere?

mozgbrasil commented 7 years ago

Bom dia

@stavarengo

Eu nunca tive a necessidade do uso do parâmetro ciphers no SOAP

Acho que poderia ser feito essa tentativa de comentar o parâmetro ciphers e colocar um comentário com a URL dessa issue

Caso alguém mencione alguma divergência em algum ambiente podíamos condicionar o uso desse parâmetro

stavarengo commented 7 years ago

Por mim ok

mozgbrasil commented 7 years ago

Boa Tarde

@stavarengo

Você pode estar aplicando essa atualização ao projeto ou devo enviar como Pull Requests ?

stavarengo commented 7 years ago

Claro @mozgbrasil. Ninquem melhor do que vc para corrigir aí.