Skip to content

melhorenvio/melhor-envio-sdk-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Melhor Envio SDK - Integração com Melhor Envio

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 [email protected], ao invés de usar um issue tracker.

Créditos

Licença

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

Releases

No releases published

Packages

No packages published

Languages