Giter VIP home page Giter VIP logo

correios-php's People

Contributors

flyingluscas avatar julianobailao avatar lucascolette avatar mklemersson avatar victorperin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

correios-php's Issues

Atualizar para Guzzle 7, e poder usar no Laravel 8

Descrição detalhada

Laravel 8 requer guzzle 7

Contexto

Por que essa mudança é importante para você? Como você usaria isso?
Pra que possa ser usado no Laravel 8

Como pode beneficiar outros usuários?
Poderao usar no Laravel 8

Possível implementação

Testar com Guzzle 7 e Atualizar o composer.json

Seu ambiente

Inclua detalhes relevantes sobre o ambiente em que você identificou o bug e como reproduzi-lo.

PHP 7.4
Laravel 8

Calculo com Varios Itens

Existe opção para adicionar o numero do contrato?
O que acontece quando um pacote excede o peso e o volume, ele automaticamente cria um novo pacote.

Sugestão de adição de método para múltiplos itens.

Descrição detalhada

Olá, gostaria de sugerir uma adição no código para adicionar múltiplos itens de só uma vez através de um método.

Contexto

A mudança é importante para mim porque atualmente não é possível inserir múltiplos itens de forma dinâmica. Apenas de forma estática, invocado cada método por vez.

Como pode beneficiar outros usuários?

Adicionando multiplos itens de só uma vez.

Possível implementação

    /**
     * array de arrays com Dimensões, peso e quantidade do items.
     * @param  array|arrays $items
     *
     * @return self
     */
    public function items($items)
    {
        foreach($items as $item){
            $this->items[] = [
                'width'     => $item[0],
                'height'    => $item[1],
                'length'    => $item[2],
                'weight'    => $item[3],
                'quantity'  => $item[4],
            ];
        }
        return $this;
    }

Calculando

    $correios = new Client;
    $items = [
        [10, 10, 15, .5, 1 ], // largura, altura, comprimento, peso e quantidade
        [10, 10, 15, .5, 1 ], // largura, altura, comprimento, peso e quantidade
        [10, 10, 15, .5, 1 ], // largura, altura, comprimento, peso e quantidade
        [10, 10, 15, .5, 1 ], // largura, altura, comprimento, peso e quantidade
        [10, 10, 15, .5, 1 ], // largura, altura, comprimento, peso e quantidade
        [10, 10, 15, .5, 1 ] // largura, altura, comprimento, peso e quantidade
    ];
    $correios->freight()
        ->origin('01001-000')
        ->destination('87047-230')
        ->services(Service::SEDEX, Service::PAC)
        ->items($items) 
        ->calculate();

Seu ambiente

PHP 7.3.9 (cli) (built: Aug 28 2019 09:28:48) ( ZTS MSVC15 (Visual C++ 2017) x64 )
Windows 10 / x64

Consulta de preços e prazos de múltiplos serviços não está funcionando

Descrição detalhada

A consulta de preços e prazos com múltiplos serviços já na mesma consulta, conforme indicado no README, parou de funcionar. Acredito que não seja um bug na biblioteca, mas sim uma mudança na resposta do serviços dos correios. Antes, eu realizava a consulta da seguinte forma:

$correios = new Client;

$correios->freight()
    ->origin('01001-000')
    ->destination('87047-230')
    ->services(Service::SEDEX, Service::PAC)
    ->item(16, 16, 16, .3, 1) // largura, altura, comprimento, peso e quantidade
    ->item(16, 16, 16, .3, 3) // largura, altura, comprimento, peso e quantidade
    ->item(16, 16, 16, .3, 2) // largura, altura, comprimento, peso e quantidade
    ->calculate();

Porém hoje de manhã essa consulta começou a retornar a seguinte resposta:

array(1) {
  [0]=>
  array(12) {
    ["Codigo"]=>
    string(1) "0"
    ["Valor"]=>
    string(1) "0"
    ["PrazoEntrega"]=>
    string(1) "0"
    ["ValorMaoPropria"]=>
    string(1) "0"
    ["ValorAvisoRecebimento"]=>
    string(1) "0"
    ["ValorValorDeclarado"]=>
    string(1) "0"
    ["EntregaDomiciliar"]=>
    object(stdClass)#458 (0) {
    }
    ["EntregaSabado"]=>
    object(stdClass)#449 (0) {
    }
    ["Erro"]=>
    string(2) "99"
    ["MsgErro"]=>
    string(76) "Erro inesperado. Descrição: Máximo de 1 código de serviço por consulta."
    ["ValorSemAdicionais"]=>
    string(1) "0"
    ["obsFim"]=>
    object(stdClass)#451 (0) {
    }
  }
}

Note a mensagem de erro retornada pelos correios: "Erro inesperado. Descrição: Máximo de 1 código de serviço por consulta.". Essa mensagem aparece mesmo acessando o serviço dos correios diretamente pela url http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo no meu browser.

Após identificar o problema, mudei meu código para consultar um serviço de cada vez e depois fazer o merge das respostas:

$freight->services(CorreiosService::SEDEX);
$sedexFreight = $freight->calculate();
$freight->services(CorreiosService::PAC);
$pacFreight = $freight->calculate();
return array_merge($sedexFreight, $pacFreight);

Contexto

Utilizo a biblioteca correios-php na minha aplicação para calcular o preço e prazo de entregas via Pac e Sedex. Essa consulta é feita diariamente pelos usuários do site. Fui supreendido essa manhã quando esse erro começou a ocorrer em todas as requisições. Decidi criar essa issue como forma de informar os mantenedores e usuários da biblioteca sobre esse problema, para que possam ser tomadas ações a fim de evitá-lo.

Notice error ao informar cep sem complemento

Descrição detalhada

Ao fazer um cálculo de preço para determinado cep, caso o correios não possua o complemento definido para o endereço, a aplicação retorna um alert Notice.

O arquivo que apresenta erro esta na pasta vendor/flyingluscas/correios-php/src/Services/ZipCode.php na linha 200. Testei com o cep 13960-000

CEPs em áreas de risco

Pelo que testei, não dá pra saber se um CEP é de área de risco ou não...
Então, esta issue seria uma Feature Request

Este aqui, p.ex., é um desses CEPs: 21862250
A gente pode consultar as áreas de risco aqui:
http://www2.correios.com.br/sistemas/precosPrazos/restricaoentrega/resultado.cfm

Isso já é um problema antigo.
2014: https://extra.globo.com/economia/correios-omite-restricao-de-entrega-em-areas-de-risco-13750185.html
2018: https://www.ecommercebrasil.com.br/noticias/quase-metade-ceps-rio-de-janeiro-restricao-entrega/

Encontrei um plugin pra Magento que consegue reconhecer esses CEPs:
pedro-teixeira/correios#29

E pelo que localizei no plugin, os soft_errors são os códigos de erro que indicam isso.

Config.xml

<postmethods>40010</postmethods>
<hard_errors>-3,-6,-10,-33,-888,7,99</hard_errors>
<soft_errors>009,010,011</soft_errors>

CorreiosMethod.php

    protected function _getSoftErrorMsg($error)
    {
        $msg = "";
        if ($this->getConfigFlag('show_soft_errors')) {
            $softErrorList = explode(',', $this->getConfigData('soft_errors'));
            $isSoftError = in_array($error, $softErrorList);
            if ($isSoftError) {
                $msg.= " / Área de Risco";
            }
        }
        return $msg;
    }

[edit]
Acabo de inspecionar a resposta da consulta SIGEP no seu código e não vejo nenhuma mensagem de "soft error"...

Erro na instalação via composer - versão 8.1 do PHP

Descrição detalhada

Ao solicitar a instalação via composer, esse erro é gerado:
Package flyingluscas/correios-php has requirements incompatible with your PHP version, PHP extensions and Composer version:
- flyingluscas/correios-php v2.4.0 requires php ~5.6|~7.0 which does not match your installed version 8.1.0.

Contexto

Sem essa correção não é possível fazer a instalação da biblioteca.

Ambiente

Teste feito no Xammp, localhost

  • Vesão usada PHP 8.1:
  • Sistema operacional e versão (Windows 10):

Composer PHP incompatível

Hoje baixei o Composer última versão e quando rodo a instalação me aparece um erro de versão de PHP incompatível com a versão deles.
Gostaria de saber se isso é algum erro na minha máquina ou se será corrigido.

Método de teste para verificar limites

Estou num caso onde preciso adicionar vários itens, mas me deparei com o erro de dimensões fora do limite dos correios, pensei em atribuir o envio a uma variável qualquer, adicionar o item e usar o calculate() para simular o erro, caso erro criar uma nova entrega, só que mesmo em outra variável o Client é o mesmo e o item ainda fica naquela entrega.
Teria como simular o mesmo ou verificar se o próximo item cabe na entrega?

-

Descrição detalhada

Forneça uma descrição detalhada da alteração ou adição que você está propondo.

Deixe claro se o problema é um bug, um aprimoramento ou apenas uma pergunta.

Contexto

Por que essa mudança é importante para você? Como você usaria isso?

Como pode beneficiar outros usuários?

Possível implementação

Não é obrigatório, mas sugere uma idéia para implementar adição ou mudança.

Seu ambiente

Inclua detalhes relevantes sobre o ambiente em que você identificou o bug e como reproduzi-lo.

  • Vesão usada (e.g. PHP 5.6, HHVM 3):
  • Sistema operacional e versão (e.g. Ubuntu 16.04, Windows 7):
  • ...
  • ...

Correios não aceita mais de um serviço por requisição

Boas, uma mudança no webservice e n permite consultar múltiplos serviços
Seria para uma alteração na doc e também no código para permitir somente um ou alguma alteração que possa colocar vários serviços mas fazendo consultas separadas

Calcular frete com CEPs diferentes na mesma compra.

Descrição detalhada

Como seria possível calcular vários produtos com CEPs diferentes e fazer a soma no final?

Contexto

Estou tentando implementar em um módulo de frete do Opencart para dropshipping.

Dimensões mínimas dos correios ser tratado na lib

image

Olá Lucas! Tive que fazer uma extensão da class Freght, pois o cliente tem produtos com tamanho menor do que os correios pedem. No inicio eu limitava o tamanho dos produtos com o mínimo necessário, porém passei a pensar se isso não teria que ser feito ao calcular todas as dimensões para envio para API. Então passei a limitar as dimensões mínimas para 1, porém quando um cliente adicionava apenas o produto com as dimensões menores no carrinho e calculava o frete, retornava erro na API dos Correios. Para contornar, tive que adicionar esse item pra definir um mínimo na largura, altura e comprimento.

Eu poderia não limitar no cadastro do produto e apenas adicionar os tamanhos mínimos dos correios no banco, porém com a soma da altura e comprimento, isso seria refletido no valor passado para o cliente, certo?

Acha que posso estar fazendo algo errado para ter surgido essa necessidade? Ou acha que isso seria necessário implementar na lib?

TimeOut

Bom dia,
Estou usando pela primeira vez o pacote, e como sabemos as vezes os correios deixam a desejar em estabilidade.
Estou desenvolvendo usando o pacote, porém com gatilho de tabela caso esteja fora do ar.
Como consigo definir o timeout para retornar um erro quando passar de 5 segundos.
Obrigado.

D;uvidas

Descrição detalhada

Este código esta funcionando em PHP 5, 5.6, 7.0, 7.1 ou até mesmo em 7.2 ?
São muitas dúvidas e nada pessoal... (Já deixo claro)
Este código esta nas normativas novas dos correios (2017) e que pelo visto já existe novas normativas em (2018)...
Bom, este não é o único que visualizamos que aparentemente esta tudo correto.
Mas, tenho que ser este USUÁRIO questionador, já que estamos enfrentando tantos problemas seja eles em PHP, AJAX ou qualquer impulso anterior á 2017.
E assim vem as dúvidas...

Gostaria de saber se podemos implementar este código em outras ferramentas e até mesmo em outas plataformas...

Espero que tenhamos uma resposta satisfatória e um UPGRADE. (O que neste notamos que o upgrade é notavel).

Forneça uma descrição detalhada da alteração ou adição que você está propondo.

Deixe claro se o problema é um bug, um aprimoramento ou apenas uma pergunta.

Contexto

Por que essa mudança é importante para você? Como você usaria isso?

Como pode beneficiar outros usuários?

Possível implementação

Não é obrigatório, mas sugere uma idéia para implementar adição ou mudança.

Seu ambiente

Inclua detalhes relevantes sobre o ambiente em que você identificou o bug e como reproduzi-lo.

  • Vesão usada (e.g. PHP 5.6, HHVM 3):
  • Sistema operacional e versão (e.g. Ubuntu 16.04, Windows 7):
  • ...
  • ...
    S.O = Centos7 - Plesk
    Php = 5.6 / 7.0

Erro ERP-008

Quando eu envio 1 item com a dimensão 1x1x1, ele dá o erro de ERP-008: Dimensões não Localizadas.

Mas quando eu coloco um item com a dimensão 16x16x16 esse erro não acontece.

Qual o caso? O Pacote não calcula o mínimo automaticamente? E quando eu precisar enviar vários itens, terei que fazer uma checagem antes para validar o valor total das dimensões e peso?

Rastreio de CEP gera um fatal error

Descrição detalhada

O exemplo do README.md para consulta de CEP gera um erro do cURL.

Código:
use FlyingLuscas\Correios\Client;
require 'vendor/autoload.php';
$correios = new Client;
$correios->zipcode()->find('01001-000');

Mensagem de erro:
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\xampp\htdocs\modulo12\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:201 Stack trace: #0 C:\xampp\htdocs\modulo12\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(155): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\modulo12\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(105): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp\htdocs\modulo12\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 C:\xampp\htdocs\modulo12\vendor\guzzlehttp\guzzle\src\Handler\Pr in C:\xampp\htdocs\modulo12\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 201

Seu ambiente

  • PHP 7.1
  • Xampp 3.2.2
  • Windows 10:

Tratativa de erro quando CEP não encontrado

Descrição detalhada

Ao procurar por alguns CEPS, o sistema não identifica o erro e retorna um erro. Por favor, utilize o cep "122430-049" e veja o que acontece.

Contexto

Este conserto é importante pois alguns sistemas estão quebrando por conta disso.

Possível implementação

O método que busca por erros "hasErrorMessage" talvez precise buscar por resultados vazios também!

Seu ambiente

macOS bigSUR
PHP 7.3
Buscar pelo cep citado acima

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.