pablosanches / bling-sdk
Bling! 非官方 SDK!API V3
v1.0.0.12
2024-07-22 12:11 UTC
Requires
- php: >=8.2
- guzzlehttp/guzzle: ^7.8
Requires (Dev)
- fakerphp/faker: ^1.23
- friendsofphp/php-cs-fixer: ^3.55
- mockery/mockery: ^1.6
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.9
- symfony/var-dumper: ^6.4
README
这是一个非官方的SDK,它通过API V3简化了与Bling! 的集成。
跳转到
安装
您可以通过composer安装此 SDK。
composer require pablosanches/bling-sdk
简介
API V3使用Bling!的OAuth 2.0认证模式,因此,在开始之前,您需要在Bling!账户中注册一个应用程序才能完成所有认证步骤。您可以了解更多信息这里!
此SDK遵循基于实现模块的动态路由标准,因此,您需要构建SDK客户端实例,并通过此客户端调用其模块。
示例
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(); }
在某些情况下,bling可能会分页并提供过滤请求的功能。
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(); }
通过ID查找联系人
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(); }
通过ID删除联系人
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(); }
通过ID查找产品分类
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(); }
商店分类
(多店铺)
要使用多店铺的资源,您需要在构建SDK客户端时指定multilojas参数。
示例
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(); }
通过ID查找产品分类的链接
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(); }
通过ID获取仓库
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(); }
通过仓库ID获取产品的库存余额
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(); }
通过ID获取产品
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(); }
通过ID删除产品
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(); }
生成销售订单的NFE
use PabloSanches\Bling\Client; try { $blingClient = Client::factory('<seu-token-aqui>'); $idPedidoVenda = 123456789; $response = $bling->pedidosVendas()->gerarNfe($idPedidoVenda); } catch (\Exception $e) { // $e->getMessage(); }
生成销售订单的NFCE
use PabloSanches\Bling\Client; try { $blingClient = Client::factory('<seu-token-aqui>'); $idPedidoVenda = 123456789; $response = $bling->pedidosVendas()->gerarNfce($idPedidoVenda); } catch (\Exception $e) { // $e->getMessage(); }