Esta é uma SDK não oficial que facilita a integração com o Bling! utilizando a API V3.
Pule para:
- Instalação
- Introdução
- Contatos
- Categorias de Produtos
- Categorias Lojas
- Depósitos
- Estoques
- Produtos
- Produtos Lojas
- Produtos Variações
- Pedidos Vendas
- Criar um pedido de venda
- Atualizar um pedido de venda
- Remover um pedido de venda
- Remover múltiplos pedidos de vendas
- Buscar um pedido de venda
- Buscar todos os pedidos de venda
- Alterar a situação de um pedido de venda
- Lançar estoque de um pedido de venda especificando o depósito
- Lançar estoque de um pedido de venda no depósito padrão
- Estornar o estoque de um pedido de venda
- Lançar as contas de um pedido de venda
- Estornar as contas de um pedido de venda
- Gerar NFE de um pedido de venda
- Gerar NFCE de um pedido de venda
Você pode instalar esta SDK via composer:
composer require pablosanches/bling-sdk
A API V3 do Bling! utiliza do modelo de autenticação OAuth 2.0, sendo assim, antes de qualquer coisa você precisará registrar um aplicativo em sua conta do Bling! para conseguir realizar todas as etapas de autenticação, você pode saber mais aqui!
Esta SDK segue um padrão de roteamento dinâmico baseado nos módulos implementados, desta forma, você precisará construir a instância de client da SDK e chamar seus módulos através deste client.
Exemplo:
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'nome' => 'Pablo Sanches'
];
$response = $bling->contatos()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'nome' => 'Pablo Sanches'
];
$response = $bling->contatos()->criar($payload);
// Este método faz um unwrap do elemento data que o bling coloca por padrão em seu objeto de resposta
var_dump($response->getData());
// Este método traz a reposta padrão do Bling
var_dump($response->getContents());
// Este método traz o statusCode da requisição
var_dump($response->getStatusCode());
// Este método indica se houve algum erro na requisição
var_dump($response->hasError());
// Este método faz um unwrap do elemento error que o bling coloca por padrão em seu objeto de resposta de erros
var_dump($response->getError());
// Este método exporta o conteúdo da resposta, independente se houve erro ou sucesso
var_dump($response->export());
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$filtros = [
'pagina' => 1,
'limite' => 100,
'criterio' => 1,
'dataInclusaoInicial' => '2024-01-01'
];
$response = $bling->contatos()->buscarTodos($filtros);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'nome' => 'Pablo Sanches'
];
$response = $bling->contatos()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'nome' => 'Pablo Sanches'
];
$response = $bling->contatos()->atualizar($id, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$filtros = [
'pagina' => 1,
'limite' => 100,
'criterio' => 1,
'dataInclusaoInicial' => '2024-01-01'
];
$response = $bling->contatos()->buscarTodos($filtros);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idContato = 1;
$response = $bling->contatos()->buscar($idContato);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idContato = 1;
$response = $bling->contatos()->buscarTipos($idContato);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idContato = 1;
$response = $bling->contatos()->buscarConsumidoresFinais($idContato);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idContato = 1;
$situacao = 'A';
$response = $bling->contatos()->atualizarSituacao($idContato, $situacao);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idsContatos = [1, 2, 3, 4];
$situacao = 'A';
$response = $bling->contatos()->alterarSituacoesMultiplos($idsContatos, $situacao);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idContato = 1;
$response = $bling->contatos()->remover($idContato);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idsContatos = [1, 2, 3, 4];
$response = $bling->contatos()->removerMultiplos($idContato);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'descricao' => 'Eletrônicos'
];
$response = $bling->categoriasProdutos()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'descricao' => 'Eletrônicos - Atualizado'
];
$idCategoria = 123456789;
$response = $bling->categoriasProdutos()->atualizar($idCategoria, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idCategoria = 123456789;
$response = $bling->categoriasProdutos()->buscar($idCategoria);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->categoriasProdutos()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idCategoria = 123456789;
$response = $bling->categoriasProdutos()->remover($idCategoria);
} catch (\Exception $e) {
// $e->getMessage();
}
(Multilojas)
Para utilizar recursos do multilojas, você precisa especificar o parâmetro multilojas na construção do Client da SDK.
Exemplo:
use PabloSanches\Bling\Client;
$blingClient = Client::factory('<seu-token-aqui>', ['multilojas' => '<id-integracao-aqui>']);
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$payload = [
'descricao' => 'Categoria de produto vinculado à loja',
'codigo' => '12345678',
'categoriaProduto' => ['id' => 12345678]
];
$response = $bling->categoriasLojas()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$payload = [
'descricao' => 'Categoria de produto vinculado à loja',
'codigo' => '12345678',
'categoriaProduto' => ['id' => 12345678]
];
$idVinculo = 123456789;
$response = $bling->categoriasLojas()->atualizar($idVinculo, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$idVinculo = 123456789;
$response = $bling->categoriasLojas()->buscar($idVinculo);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$idVinculo = 123456789;
$response = $bling->categoriasLojas()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$idVinculo = 123456789;
$response = $bling->categoriasLojas()->remover($idVinculo);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'descricao' => 'Depósito Geral',
'situacao' => 1,
'padrao' => false,
'desconsiderarSaldo' => false
];
$response = $bling->depositos()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
'descricao' => 'Depósito Geral',
'situacao' => 1,
'padrao' => false,
'desconsiderarSaldo' => false
];
$idDeposito = 123456789;
$response = $bling->depositos()->atualizar($idDeposito, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idDeposito = 123456789;
$response = $bling->depositos()->buscar($idDeposito);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->depositos()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
"produto" => ['id' => 123456789],
"deposito" => ['id' => 123456789],
"operacao" => "B",
"preco" => 1500.75,
"custo" => 1500.75,
"quantidade" => 50.75,
"observacoes" => "Observações de estoque"
];
$response = $bling->estoques()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [
"produto" => ['id' => 123456789],
"deposito" => ['id' => 123456789],
"operacao" => "B",
"preco" => 1500.75,
"custo" => 1500.75,
"quantidade" => 50.75,
"observacoes" => "Observações de estoque"
];
$idDoEstoque = 123456789;
$response = $bling->estoques()->atualizar($idDoEstoque, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$filtros = [
"idsProdutos" => ['id' => 123456789]
];
$response = $bling->estoques()->buscarTodos($filtros);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$filtros = [
"idDeposito" => 123456789,
"idsProdutos" => ['id' => 123456789]
];
$response = $bling->estoques()->buscarPorDeposito($filtros);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$dadosProdutos = [...];
$response = $bling->produtos()->criar($dadosProdutos);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idProduto = 123456789;
$dadosProdutos = [...];
$response = $bling->produtos()->atualizar($idProduto, $dadosProdutos);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idsProdutos = [123456789, 123456789];
$situacao = 'A';
$response = $bling->produtos()->alterarSituacaoMultiplosProdutos($idsProdutos, $situacao);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idProduto = 123456789;
$situacao = 'A';
$response = $bling->produtos()->alterarSituacaoProduto($idProduto, $situacao);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idProduto = 123456789;
$response = $bling->produtos()->buscar($idProduto);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->produtos()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idProduto = 123456789;
$response = $bling->produtos()->remover($idProduto);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idProduto = [123456789, 123456789, 123456789];
$response = $bling->produtos()->removerMultiplos($idProduto);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$payload = [...];
$response = $bling->produtosLojas()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$idVinculo = 123456789;
$payload = [...];
$response = $bling->produtosLojas()->atualizar($idVinculo, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$idVinculo = 123456789;
$response = $bling->produtosLojas()->buscar($idVinculo);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$response = $bling->produtosLojas()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');
$idVinculo = 123456789;
$response = $bling->produtosLojas()->remover($idVinculo);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->produtosVariacoes()->buscar($idProdutoPai);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [...];
$response = $bling->produtosVariacoes()->alterarNomeAtributo($idProdutoPai, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [...];
$response = $bling->produtosVariacoes()->gerarCombinacoes($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$payload = [...];
$response = $bling->pedidosVendas()->criar($payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$payload = [...];
$response = $bling->pedidosVendas()->atualizar($idPedidoVenda, $payload);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->remover($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->removerMultiplos([$idPedidoVenda]);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->buscar($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->pedidosVendas()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$response = $bling->pedidosVendas()->buscarTodos();
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$idSituacao = 123456789;
$response = $bling->pedidosVendas()->alterarSituacao($idPedidoVenda, $idSituacao);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$idDeposito = 123456789;
$response = $bling->pedidosVendas()->lancaEstoquePorDeposito($idPedidoVenda, $idDeposito);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->lancaEstoque($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->estornarEstoque($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->lancarContas($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->estornarContas($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->gerarNfe($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}
use PabloSanches\Bling\Client;
try {
$blingClient = Client::factory('<seu-token-aqui>');
$idPedidoVenda = 123456789;
$response = $bling->pedidosVendas()->gerarNfce($idPedidoVenda);
} catch (\Exception $e) {
// $e->getMessage();
}