traycommerce / traycommerce
Library da api privada da Tray
v1.11.0
2023-08-10 19:46 UTC
Requires
- php: >=5.6
Requires (Dev)
- dev-master
- v1.11.0
- v1.10.0
- v1.9.1
- v1.9.0
- v1.8.0
- v1.7.7
- v1.7.6
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.7
- v1.5.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.11
- v1.4.10
- v1.4.9
- v1.4.8
- v1.4.7
- v1.4.6
- v1.4.5
- v1.4.4
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.2
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-05-10 21:45:14 UTC
README
SDK para manipulação da API da Tray em PHP
Como instalar - Via composer
$ composer require traycommerce/traycommerce
Exemplo para gerar autorizar a aplicação
<?php require __DIR__."/../vendor/autoload.php"; use Traycommerce\Library\TrayCommerceController; error_reporting(E_ALL); ini_set('display_errors', 1); date_default_timezone_set('America/Sao_Paulo'); //criar instancia do controlador da api $trayCommerceController = TrayCommerceController::getInstance(); //carregar informações do controlador $trayCommerceController ->setConsumerKey("SEU CONSUMER KEY") ->setConsumerSecret("SEU CONSUMER SECRET") ->setCallBackUrl("URL QUE A TRAY VAI VOLTAR DEPOIS DO LOGISTA AUTORIZAR SUA APLICAÇÂO") ->setStoreUrl("URL DA LOJA QUE SERA EXECUTADA SUA APLICAÇÂO"); $trayCommerceController->onBeforeRefreshToken(function($currentToken){ //Evento disparado ANTES de gerar o token }); $trayCommerceController->onRefreshedToken(function($newToken){ //Evento disparado DEPOIS de gerar o token //Aqui você poder guardar o token no banco ou em arquivo //Ex arquivo se usar um cast (string) a entidade do token vira um json //{"code":200,"message":"Token already exists.","date_activated":"2020-04-03 09:50:02","api_host":"https:\/\/www.XXXXXXX.com.br\/web_api","access_token":"XXXXXXXXXXXXXXXXXXXXXXX","refresh_token":"XXXXXXXXXXXXXXXXXXXXXXXXX","date_expiration_access_token":"2020-04-03 12:45:02","date_expiration_refresh_token":"2020-05-03 09:45:02","store_id":"XXXXXX","addTimeToNow":null} $tokenString = (string)$newToken; file_put_contents("./token/token.json", $tokenString); //ex banco voce percisa guardar todo o token }); //verificar se a loja ja autorizou a aplicação e //setar as configurações de autorização if(isset($_GET["code"])){ try{ $trayCommerceController ->setCode($_GET["code"]) ->setApiUrl($_GET["api_address"]) ->checkValidToken(); }catch(\Exception $ex){ } } else{ //autorizar a aplicação para gerar um token $trayCommerceController->authorizeApplication(); }
GETTERS e SETTERS do objeto de Token
//todos os dados do token sao obrigatorios na SDK $tokenString = json_decode($tokenString); $token = new Token(); $token->setAccess_token($tokenString->access_token) ->setApi_host($tokenString->api_host) ->setCode($tokenString->code) ->setDate_activated($tokenString->date_activated) ->setDate_expiration_access_token($tokenString->date_expiration_access_token) ->setDate_expiration_refresh_token($tokenString->date_expiration_refresh_token) ->setMessage($tokenString->message) ->setRefresh_token($tokenString->refresh_token) ->setStore_id($tokenString->store_id); // ou passar direto a string do token por parametro do objeto $token = new Token($tokenString); $this->getAccess_token(); $this->getApi_host(); $this->getCode(); $this->getDate_expiration_refresh_token(); $this->getMessage(); $this->getRefresh_token(); $this->getStore_id();
Usando o SDK - Exemplo a partir do arquivo do token
<?php require __DIR__."/../vendor/autoload.php"; use Traycommerce\Entity\Token; use Traycommerce\Library\TrayCommerceController; error_reporting(E_ALL); ini_set('display_errors', 1); date_default_timezone_set('America/Sao_Paulo'); $tokenString = @file_get_contents("./token/token.json"); if(empty($tokenString)) throw new Exception("Token não foi gerado!!!"); //criar instancia do controlador da api $trayCommerceController = TrayCommerceController::getInstance(); $token = new Token($tokenString); //carregar informações do controlador $trayCommerceController ->enableReadOnly() //importante sempre setar que o modo de uso de leitura ->setToken($token);
Usando o SDK - Exemplo a partir do banco
<?php require __DIR__."/../vendor/autoload.php"; use Traycommerce\Entity\Token; use Traycommerce\Library\TrayCommerceController; error_reporting(E_ALL); ini_set('display_errors', 1); date_default_timezone_set('America/Sao_Paulo'); $tokenDb = $this->db->get("token")->row(); //criar instancia do controlador da api $trayCommerceController = TrayCommerceController::getInstance(); $token = new Token(); $token ->setCode($tokenDb->code) ->setMessage($tokenDb->message) ->setApi_host($tokenDb->apiHost) ->setDate_activated($tokenDb->dateActivated) ->setAccess_token($tokenDb->accessToken) ->setRefresh_token($tokenDb->refreshToken) ->setDate_expiration_access_token($tokenDb->dateExpirationAccessToken) ->setDate_expiration_refresh_token($tokenDb->dateExpirationRefreshToken) ->setStore_id($tokenDb->storeId); //carregar informações do controlador $trayCommerceController ->enableReadOnly() //importante sempre setar que o modo de uso de leitura ->setToken($token);
Usando o SDK - Buscando detalhes de um produto
<?php require __DIR__."/../vendor/autoload.php"; use Traycommerce\Entity\Token; use Traycommerce\Library\TrayCommerceController; error_reporting(E_ALL); ini_set('display_errors', 1); date_default_timezone_set('America/Sao_Paulo'); $tokenDb = $this->db->get("token")->row(); //criar instancia do controlador da api $trayCommerceController = TrayCommerceController::getInstance(); $token = new Token(); $token ->setCode($tokenDb->code) ->setMessage($tokenDb->message) ->setApi_host($tokenDb->apiHost) ->setDate_activated($tokenDb->dateActivated) ->setAccess_token($tokenDb->accessToken) ->setRefresh_token($tokenDb->refreshToken) ->setDate_expiration_access_token($tokenDb->dateExpirationAccessToken) ->setDate_expiration_refresh_token($tokenDb->dateExpirationRefreshToken) ->setStore_id($tokenDb->storeId); //carregar informações do controlador $trayCommerceController ->enableReadOnly() //importante sempre setar que o modo de uso de leitura ->setToken($token); //--- $apiProduto = new Traycommerce\Produto(); $apiProdutoResponse = $apiProduto->dados("CODIGO DO PRODUTO"); echo '<pre>'; print_r($apiProdutoResponse); echo '</pre>';
Usando o SDK - Gerenciar TOKEN
Crie uma tarefa automatizada que rode a cada 5 minutos para checar se o token salvo esta valido
$trayCommerceController = TrayCommerceController::getInstance(); $trayCommerceController->clearEvents(); //pega o token do banco $currentToken = $this->trayToken_model->getToken(); $trayTokenModel = $this->trayToken_model; $trayCommerceController->onBeforeRefreshToken(function($oldToken) use ($trayTokenModel, $currentToken){ //voce pode marcar o token como bloqueado //assim quando sua aplicação for pegar o token e ver que esta bloqueado pode esperar ele desbloquear $trayTokenModel->edit($currentToken->id, array( "status" => TrayToken_model::STATUS_UPDATING )); cliShowLn("Token bloqueado para atualização"); }); $trayCommerceController->onRefreshedToken(function(Token $newToken) use ($trayTokenModel, $currentToken){ $trayTokenModel->edit($currentToken->id, array( "code" => $newToken->getCode(), "message" => $newToken->getMessage(), "accessToken" => $newToken->getAccess_token(), "refreshToken" => $newToken->getRefresh_token(), "dateExpirationAccessToken" => $newToken->getDate_expiration_access_token(), "dateExpirationRefreshToken" => $newToken->getDate_expiration_refresh_token(), "dateActivated" => $newToken->getDate_activated(), "status" => TrayToken_model::STATUS_AVAILABLE, "apiHost" => $newToken->getApi_host() )); cliShowLn("Token atualizado com sucesso"); }); $currentTokenToValid = new Token(); $currentTokenToValid ->setApi_host($currentToken->apiHost) ->setCode($currentToken->code) ->setMessage($currentToken->message) ->setDate_activated($currentToken->dateActivated) ->setAccess_token($currentToken->accessToken) ->setRefresh_token($currentToken->refreshToken) ->setDate_expiration_access_token($currentToken->dateExpirationAccessToken) ->setDate_expiration_refresh_token($currentToken->dateExpirationRefreshToken) ->setStore_id($currentToken->trayStoreId); $trayCommerceController->setToken($currentTokenToValid); try{ $trayCommerceController ->setConsumerKey("YOUR KEY") ->setConsumerSecret("YOUR SECRET") ->setCode("CODE STORE") ->checkValidToken(); } catch (Exception $ex) { cliShowLn("Falha: " . $ex->getMessage()); }