pablosanches/bling-sdk

Bling! 非官方 SDK!API V3

v1.0.0.12 2024-07-22 12:11 UTC

This package is auto-updated.

Last update: 2024-09-22 12:32:27 UTC


README

Bling!

GitHub Workflow Status (master)

这是一个非官方的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();
    }