gpupo/cnova-sdk

This package is abandoned and no longer maintained. No replacement package was suggested.

SDK Não Oficial para integração a partir de aplicações PHP com as APIs da Cnova Marketplace

1.4.0 2019-03-02 13:54 UTC

This package is auto-updated.

Last update: 2020-01-30 16:42:58 UTC


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)

Paypal Donations

Requisitos para uso

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

Build Status Scrutinizer Code Quality Codacy Badge Code Climate Test Coverage

Agradecimentos

- Gilmar Pupo

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

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.