melhorenvio/melhor-envio-sdk-php

dev-main 2023-03-06 17:19 UTC

This package is auto-updated.

Last update: 2024-12-06 21:34:22 UTC


README

Latest Version on Packagist Total Downloads

Agora ficou mais fácil ter o serviço do Melhor Envio no seu projeto de e-commerce.

Indice

require

  • PHP >= 7.4
  • Ext-json = *
  • Guzzlehttp/guzzle >= 6.5

require-dev

  • phpunit/phpunit >= 5

Instalação

Você pode instalar o pacote via composer, rodando o seguinte comando:

composer require melhorenvio/melhor-envio-sdk-php

Configuração inicial

Obtendo link de autorização de conta do Melhor Envio

require "./vendor/autoload.php";

use MelhorEnvio\MelhorEnvioSdkPhp\Event;
use MelhorEnvio\MelhorEnvioSdkPhp\OAuth2;
use MelhorEnvio\Resources\Shipment\Product;

$provider = new OAuth2(
    $appData['client_id'],
    $appData['client_secret'],
    $appData['redirect_uri']
);

$provider->setScopes('shipping-calculate');
$linkAuthorize = $provider->getAuthorizationUrl();

echo $linkAuthorize;

Obtendo Access Token e Refresh Token

Para maiores informações sobre autenticação, acessar a documentação do Auth SDK: https://packagist.org/packages/melhorenvio/auth-sdk-php

require "./vendor/autoload.php";

use MelhorEnvio\MelhorEnvioSdkPhp\Event;
use MelhorEnvio\MelhorEnvioSdkPhp\OAuth2;
use MelhorEnvio\Resources\Shipment\Product;

$provider = new OAuth2(
    $appData['client_id'],
    $appData['client_secret'],
    $appData['redirect_uri']
);

$code = $_GET['code'];

$tokens = $provider->getAccessToken($code);
var_dump($tokens);
die;

Realizando cotações

Para maiores informações sobre cotações, acessar a documentação do Shipment SDK: https://packagist.org/packages/melhorenvio/shipment-sdk-php

require "./vendor/autoload.php";

use MelhorEnvio\Enums\Environment;
use MelhorEnvio\MelhorEnvioSdkPhp\Event;
use MelhorEnvio\MelhorEnvioSdkPhp\OAuth2;
use MelhorEnvio\MelhorEnvioSdkPhp\Shipment;
use MelhorEnvio\Resources\Shipment\Product;

Event::listen('refresh', function ($token, $refreshToken) {
    // Put here trading rule to save accessToken e refreshToken.
});

$oAuth2 = new OAuth2(
    CLIENT_ID,
    TEST_CLIENT_SECRET,
    TEST_REDIRECT_URI
);

$this->shipment = new Shipment(
    $oAuth2,
    ACCESS_TOKEN,
    REFRESH_TOKEN
);

$calculator = $shipment->calculator();

$calculator->postalCode('01010010', '20271130');

$calculator->setOwnHand();
$calculator->setReceipt(false);
$calculator->setCollect(false);

$calculator->addProducts(
    new Product(uniqid(), 40, 30, 50, 10.00, 100.0, 1),
    new Product(uniqid(), 5, 1, 10, 0.1, 50.0, 1)
);

$quotations = $calculator->calculate();

var_dump($quotations);

Recebendo Access Tokens e Refresh Tokens atualizados

O Access Token gerado pelo Melhor Envio tem a validade de 1(um) mês, após esse período é possível atualizar o token de forma automatiza com o refresh token, por isso é necessário sempre manter atulizado os access tokens e refresh tokens, visando isso, o Melhor Envio SDK possui um evento de listerner de receber com os dados de tokens atualizados.
Você deverá implementar a lógica para persistir esses dados na sua plataforma, veja um exemplo abaixo:

Event::listen('refresh', function ($token, $refreshToken) {
    // Aqui deve ser inserido a sua lógica de persitir as informações na sua plataforma, o código abaixo é apenas um exemplo, o mesmo deve ser subistituido para a sua realidade.
    Credentials::update([
       'access_token' => $token,
       'refresh_token' => $refreshToken 
   ]) 
});

Criando a instância do Melhor Envio

Mais exemplos

Aqui você pode acessar mais exemplos de implementação

Testes

Dentro do projeto você encontrará alguns documentos de teste baseados em testes unitários

Você pode usar na aplicação tanto o comando:

composer test

Quanto o comando:

vendor/bin/phpunit tests 

Changelog

Consulte CHANGELOG para mais informações de alterações recentes.

Contribuindo

Consulte CONTRIBUTING para mais detalhes.

Segurança

Se você descobrir algum problema de segurança, por favor, envie um e-mail para tecnologia@melhorenvio.com, ao invés de usar um issue tracker.

Créditos

Licença

Melhor Envio. Consulte Arquivo de lincença para mais informações.