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.

Home Page:https://phpsigep.stavarengo.me

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Problema com ambiente de produção

lkfischer opened this issue · comments

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,

commented

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

Obrigado
Zeca

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,

commented

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,

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?

commented

Sim vou testar

commented

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

VAleu

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

Posso fechar esse bug galera?

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

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

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

@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?

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

Show. Aguardo o seu PR entao.

@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?

@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.

@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 .

Aguardo @pvpzaum.
Valeu!

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

@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.

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.

@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.

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

@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,

@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?

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 :)

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.

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()?

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

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

@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

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
#35 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABASSiUIpKsSx0FtgeGHncJzhw1MFTzhks5qlzRigaJpZM4HdLCH
.

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?

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

@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

@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
#35 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABASStMMYIs9JiHeAnR36PZXhC397JEBks5qlzA5gaJpZM4HdLCH
.

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

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

  1. Eu adicionei stream_context neste commit 1ce44a0 para resolver o bug #21
  2. Depois disto o @rafaelsiqueira fez o PR #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 #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 #38. Segue o link http://stackoverflow.com/questions/34609448/soap-error-parsing-wsdl-couldnt-load-from-xampp

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

Bom dia

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

'ciphers'           =>'RC4-SHA',

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.

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

#23

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

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

Por mim ok

Boa Tarde

@stavarengo

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

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

Ola

Bom dia

@stavarengo

Enviei os PR

Fico no aguardo da migração

Muito obrigado

Boa tarde,

Estou com problemas para carregar o WSDL em produção (do rastreio).
Li os comentários aqui e comentei o ciphers como está feito no método getSoapClient

https://github.com/stavarengo/php-sigep/blob/master/src/PhpSigep/Services/Real/SoapClientFactory.php#L98

Será que faria sentido comentar também ?

@mozgbrasil @stavarengo

Obrigado.

@brunorthomaz que problema vc está tendo?

Boa tarde,

Então, ao tentar rastrear em produção ocorre o seguinte erro:

PHP Warning: Uncaught ErrorException: SoapClient::SoapClient(): Failed to enable crypto in /var/www/html/.../vendor/stavarengo/php-sigep/src/PhpSigep/Services/Real/SoapClientFactory.php:115

@stavarengo

@brunorthomaz, dei uma pesquisada no Google e achei isto: https://stackoverflow.com/questions/14078182/openssl-file-get-contents-failed-to-enable-crypto

Veja se é o seu problema.


Editado:
Acabei de ver este PR. Acho que ele resolve o seu problema.
#155

Bom dia,

Sim, este PR resolve o problema.

@stavarengo

Valeu.

Pessoal boa noite estou com php 5.6 e nao consigo fazer rodar, segui o procedimento mas nao funcionou

@stavarengo, sou novo e gostaria de uma ajuda para implantar esse projeto dos correios, será que alguém pode me ajudar? Quero aprender, caso tenha algum custo para me ensinar, irei avaliar a proposta. Lembrando que quero aprender.
Desde já agradeço a todos
Rodrigo Pais

Olá galera, estou implementando essa classe para geração de etiquetas, e vejo que há funcionamento correto dela, pois em modo de produção não gera etiquetas, somente em modo de homologação.
Alguém pode dar um help!!!.
Detalhe, os arquivos estão online, pois vejo que alguns post estão dizendo que não funciona local, porém as configurações citadas acima já foram realizadas. Sendo assim, em local funciona somente em homologação.

Att: