gpupo / cnova-sdk
SDK Não Oficial para integração a partir de aplicações PHP com as APIs da Cnova Marketplace
Requires
- php: ^5.6 || ^7.0
- ext-curl: *
- gpupo/cache: 1.3.2
- gpupo/common: 1.7.7
- gpupo/common-sdk: 2.2.15
- symfony/console: 3.3.10
README
SDK Não Oficial para integração a partir de aplicações PHP com as APIs da Cnova Marketplace (Extra.com.br, Pontofrio.com.br, Casasbahia.com.br)
Requisitos para uso
- PHP >= 5.6
- curl extension
- Composer Dependency Manager
Este componente não é uma aplicação Stand Alone e seu objetivo é ser utilizado como biblioteca. Sua implantação deve ser feita por desenvolvedores experientes.
Isto não é um Plugin!
As opções que funcionam no modo de comando apenas servem para depuração em modo de desenvolvimento.
A documentação mais importante está nos testes unitários. Se você não consegue ler os testes unitários, eu recomendo que não utilize esta biblioteca.
Direitos autorais e de licença
Este componente está sob a licença MIT
Para a informação dos direitos autorais e de licença você deve ler o arquivo de licença que é distribuído com este código-fonte.
Resumo da licença
Exigido:
- Aviso de licença e direitos autorais
Permitido:
- Uso comercial
- Modificação
- Distribuição
- Sublicenciamento
Proibido:
- Responsabilidade Assegurada
Indicadores de qualidade
Agradecimentos
- A todos os que contribuiram com patchs;
- Aos que fizeram sugestões importantes;
- Aos desenvolvedores que criaram as bibliotecas utilizadas neste componente.
Instalação
Adicione o pacote cnova-sdk
ao seu projeto utilizando composer:
composer require gpupo/cnova-sdk
Uso
Este exemplo demonstra o uso simplificado a partir do Factory
:
///... use Gpupo\CnovaSdk\Factory; $cnovaSdk = Factory::getInstance()->setup([ 'client_id' => 'foo', 'access_token' => 'bar', 'version' => 'sandbox', ]); $manager = $cnovaSdk->factoryManager('product'));
Parâmetro | Descrição | Valores possíveis |
---|---|---|
client_id |
Chave da loja | string |
access_token |
Token de autorização da aplicação | string |
version |
Identificação do Ambiente | sandbox, prod (produção) |
registerPath |
Quando informado, registra no diretório informado, os dados de cada requisição executada |
Acesso a lista de produtos cadastrados:
$produtosCadastrados = $manager->fetch(); // Collection de Objetos Product
Acesso a informações de um produto cadastrado e com identificador conhecido:
$produto = $manager->findById(9)); // Objeto Produto
echo $product->getTitle(); // Acesso ao nome do produto de Id 9
Criação de um produto:
$data = []; // Veja o formato de $data em Resources/fixture/Product/ProductId.json
$product = $cnovaSdk->createProduct($data);
Envio do produto para o Marketplace:
$manager->save($product);
Registro (log)
//...
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
//..
$logger = new Logger('foo');
$logger->pushHandler(new StreamHandler('Resources/logs/main.log', Logger::DEBUG));
$cnovaSdk->setLogger($logger);
Console
Lista de comandos disponíveis:
./bin/main
Você pode verificar suas credenciais Cnova na linha de comando:
./bin/main credential
Você poder criar um arquivo chamado app.json
com suas configurações personalizadas, as quais serão utilizadas na linha de comando:
{ "client_id": "foo", "access_token": "bar" }
Utilize como modelo o arquivo app.json.dist
Dica: Verifique os logs gerados em Resources/logs/main.log
Links
- Cnova-sdk Composer Package no packagist.org
- Documentação Oficial da API V2
- Marketplace-bundle Composer Package - Integração deste pacote com Symfony
- Outras SDKs para o Ecommerce do Brasil
Desenvolvimento
git clone --depth=1 git@github.com:gpupo/cnova-sdk.git
cd cnova-sdk;
ant;
Personalize a configuração do phpunit
:
cp phpunit.xml.dist phpunit.xml;
Personalize os parâmetros!
Dica: Verifique os logs gerados em var/log/main.log
Propriedades dos objetos
Todo
Propriedades dos objetos
CnovaSdk\Client\Client
- Sucesso ao definir options
- Gerencia uri de recurso
- Objeto request possui header
- Acesso a lista de pedidos
- Acesso a lista de produtos
CnovaSdk\Entity\Order\Customer\Customer
- É propriedade de order
- Possui objeto phones
CnovaSdk\Entity\Order\Customer\Phones\Phone
- Possui numero
- Possui identificação de tipo
CnovaSdk\Entity\Order\Items\Items
- Possui coleção de objetos product
- Possui ids diferentes para cada unidade mesmo com skus iguais
- Contém lista de ids existentes na coleção
CnovaSdk\Entity\Order\Items\Product\Product
- Possui um identificador por unidade
- Possui identificador do sku
CnovaSdk\Entity\Order\Manager
- Obtem lista pedidos
- Obtém a lista de pedidos recém aprovados e que esperam processamento
- Recupera informacoes de um pedido especifico
- Move pedido para status enviado
- Falha ao mover pedido para enviado sem informações completas
- Move pedido para status recebido
- Move pedido para status cancelado
CnovaSdk\Entity\OrderCollection
- Cada elementoÉ um objeto order
- Cada elemento possui dados corretos
- É um objeto metadata container
- Possui objeto metadata
- Possui propriedade indicadora de quantidade de registros
CnovaSdk\Entity\Order\Order
- Cada item de uma lista e um objeto
- Cada pedido possui objeto billing
- Cada pedido possui objeto cliente
- Cada pedido possui objeto frete
- Cada pedido possui objeto contendo endereco de entrega
- Cada pedido possui colecao de rastreamentos
- Cada pedido possui colecao de produtos
CnovaSdk\Entity\Order\Trackings\Tracking\Invoice
- Possui cnpj
- Possui chave de acesso
CnovaSdk\Entity\Order\Trackings\Tracking\Tracking
- Valida
- Possui lista de items
- Possui dados da transportadora
- Inválido com rastreamento ausente
- Inválido com nota fiscal ausente
- Inválido com transportadora ausente
- Válido com dados completos
- Possui formato para atualização de order
CnovaSdk\Entity\Product\Loads\Loads
- Possui colecao de products
- Cada product possui status
- Possui objeto metadata
CnovaSdk\Entity\Product\Loads\Manager
- Obtem lista de situacoes de produtos
- Permite acesso a lista de produtos com erro
CnovaSdk\Entity\Product\Loads\Metadata
- É uma collection
- Metadata possui quantidade de objetos enviados
- Metadata possui informacao do offset atual
- Metadata possui informacao do limit atual
CnovaSdk\Entity\Product\Manager
- É o administrador de produtos
- Possui objeto pool
- Possui objeto client
- Obtem lista de produtos cadastrados
- Recupera informacoes de um produto especifico a partir de id
- Guarda produtos em uma fila para gravacao em lote
- Gerencia gravacao de produtos em lote
- Atualiza preco e estoque de um produto
- Nao executa atualizacao em produto inalterado
- Atualiza apenas estoque em caso de ser o unico atributo alterado
CnovaSdk\Entity\Product\Price
- É propriedade de product
- Possui preço de
- Possui preço por
- Entrega parâmetros para atualização de preço do sku
CnovaSdk\Entity\Product\ProductCollection
- Possui coleção de products
- É um objeto metadata container
- Possui objeto metadata
- Possui propriedade indicadora de quantidade de registros
CnovaSdk\Entity\Product\Product
- Possui propriedades e objetos
- Possui uma colecao attributes
- Possui objeto price
- Possui objeto stock
- Possui objeto dimensions
- Possui objeto gift wrap
- Entrega json
CnovaSdk\Entity\Product\Stock
- É propriedade de product
- Possui quantidade
- Possui tempo preparação do produto
- Entrega parâmetros para atualização de estoque do sku
CnovaSdk\Factory
- Centraliza acesso a managers
- Centraliza criacao de objetos
Lista de dependências (libraries)
Name | Version | Description |
---|---|---|
codeclimate/php-test-reporter | v0.3.2 | PHP client for reporting test coverage to Code Climate |
doctrine/annotations | v1.2.7 | Docblock Annotations Parser |
doctrine/cache | v1.6.0 | Caching library offering an object-oriented API for many cache backends |
doctrine/collections | v1.3.0 | Collections Abstraction library |
doctrine/common | v2.5.3 | Common Library for Doctrine projects |
doctrine/inflector | v1.1.0 | Common String Manipulations with regard to casing and singular/plural rules. |
doctrine/instantiator | 1.0.5 | A small, lightweight utility to instantiate objects in PHP without invoking their constructors |
doctrine/lexer | v1.0.1 | Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers. |
gpupo/cache | 1.3.0 | Caching library that implements PSR-6 |
gpupo/common | 1.6.6 | Common Objects |
gpupo/common-sdk | 2.0.11 | Componente de uso comum entre SDKs para integração a partir de aplicações PHP com Restful webservices |
guzzle/guzzle | v3.9.3 | PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle |
monolog/monolog | 1.19.0 | Sends your logs to files, sockets, inboxes, databases and various web services |
myclabs/deep-copy | 1.5.1 | Create deep copies (clones) of your objects |
phpdocumentor/reflection-common | 1.0 | Common reflection classes used by phpdocumentor to reflect the code structure |
phpdocumentor/reflection-docblock | 3.1.0 | With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock. |
phpdocumentor/type-resolver | 0.2 | |
phpspec/prophecy | v1.6.1 | Highly opinionated mocking framework for PHP 5.3+ |
phpunit/php-code-coverage | 4.0.0 | Library that provides collection, processing, and rendering functionality for PHP code coverage information. |
phpunit/php-file-iterator | 1.4.1 | FilterIterator implementation that filters files based on a list of suffixes. |
phpunit/php-text-template | 1.2.1 | Simple template engine. |
phpunit/php-timer | 1.0.8 | Utility class for timing |
phpunit/php-token-stream | 1.4.8 | Wrapper around PHP's tokenizer extension. |
phpunit/phpunit | 5.4.6 | The PHP Unit Testing framework. |
phpunit/phpunit-mock-objects | 3.2.3 | Mock Object library for PHPUnit |
psr/cache | 1.0.0 | Common interface for caching libraries |
psr/log | 1.0.0 | Common interface for logging libraries |
satooshi/php-coveralls | v1.0.1 | PHP client library for Coveralls API |
sebastian/code-unit-reverse-lookup 1.0.0 | Looks up which function or method a line of code belongs to | |
sebastian/comparator | 1.2.0 | Provides the functionality to compare PHP values for equality |
sebastian/diff | 1.4.1 | Diff implementation |
sebastian/environment | 1.3.7 | Provides functionality to handle HHVM/PHP environments |
sebastian/exporter | 1.2.2 | Provides the functionality to export PHP variables for visualization |
sebastian/global-state | 1.1.1 | Snapshotting of global state |
sebastian/object-enumerator | 1.0.0 | Traverses array structures and object graphs to enumerate all referenced objects |
sebastian/peek-and-poke | dev-master a8295 | Proxy for accessing non-public attributes and methods of an object |
sebastian/recursion-context | 1.0.2 | Provides functionality to recursively process PHP variables |
sebastian/resource-operations | 1.0.0 | Provides a list of PHP built-in functions that operate on resources |
sebastian/version | 2.0.0 | Library that helps with managing the version number of Git-hosted PHP projects |
symfony/config | v3.1.1 | Symfony Config Component |
symfony/console | v3.1.1 | Symfony Console Component |
symfony/event-dispatcher | v2.8.7 | Symfony EventDispatcher Component |
symfony/filesystem | v3.1.1 | Symfony Filesystem Component |
symfony/polyfill-mbstring | v1.2.0 | Symfony polyfill for the Mbstring extension |
symfony/stopwatch | v3.1.1 | Symfony Stopwatch Component |
symfony/yaml | v3.1.1 | Symfony Yaml Component |
twig/twig | v1.24.1 | Twig, the flexible, fast, and secure template language for PHP |
webmozart/assert | 1.0.2 | Assertions to validate method input/output with nice error messages. |