devaguia / correios-php

Correios API library for PHP
https://packagist.org/packages/devaguia/correios-php
GNU General Public License v3.0
23 stars 11 forks source link

Update Authentication.php with DR and Contract #45

Closed rafaelstz closed 1 month ago

rafaelstz commented 1 month ago

Para realizar o cálculo correto da estimativa, é necessário incluir o DR e o Contract nas consultas. Portanto, ao salvá-los no objeto Authentication, facilita-se a reutilização conforme a autenticação realizada.

Exemplo

$correios = new \Correios\Correios(
    username: 'user',
    password: 'password',
    postcard: 'postcard',
    isTestMode: true
);

$token           = $correios->authentication()->getToken();
$tokenExpiration = $correios->authentication()->getTokenExpiration();
$responseBody    = $correios->authentication()->getResponseBody();
$responseCode    = $correios->authentication()->getResponseCode();
$errors          = $correios->authentication()->getErrors();

$dr = $correios->authentication()->getDr();
$contract = $correios->authentication()->getContract();

// Parâmetros obrigatórios - Required Paramns
$correios->price()->get(
    serviceCodes:['04162'],
    products:[
        ['weight' => 300]
    ],
    originCep:'71930000',
    destinyCep:'05336010'
);

// Parâmetros opcionais - Optional parameters
$correios->price()->get(
    serviceCodes:['04162'],
    products:[
        [
          'weight'      => 300,
          'length'      => 0,
          'height'      => 200,
          'width'       => 200,
          'diameter'    => 0,
          'cubicWeight' => 0,
          /** 1 - Envelope (Default); 2 - Caixa; 3 - Rolo*/
          'objectType' => 2
        ]
    ],
    originCep:'71930000',
    destinyCep:'05336010',
    fields: [
        'nuContrato' => '0000000000', // Pode ser usado $correios->authentication()->getContract();
        'nuDR' => 20 // Pode ser usado $correios->authentication()->getDr();
    ]
);
devaguia commented 1 month ago

Obrigado @rafaelstz . Ainda essa semana faço as revisões e crio os testes necessários. Se puder realizar alguns testes para mim quando eu finalizar, vai ser de grande ajuda.

devaguia commented 1 month ago

Fala @rafaelstz. Tudo bem? Vi que você criou a propriedade de $cartaoPostagem e $dr, mas a $dr não está sendo utilizada e a $cartaoPostagem você usa como um objeto para armazenar e acessar o dr e o contrato. Fez isso pois já existia uma propriedade chamada contract na classe de Authentication? Ou tem algum motivo específico?

Pergunto pois, olhando sua PR, acabei percebendo que no objeto principal(Correios.php) nomeio a variável $postcard e na classe de autenticação de $contract, mas também deveria ser $postcard.

rafaelstz commented 1 month ago

@devaguia foi isso mesmo, os dois contracts tem números diferentes. Caso mude para $postCard no objeto principal, acredito que podemos retirar a propriedade $cartaoPostagem e usar $dr e $contract direto na classe Authentication.