Skip to content

pablosanches/bling-sdk

Repository files navigation

Bling! - API v3

Bling!

GitHub Workflow Status (master)


Esta é uma SDK não oficial que facilita a integração com o Bling! utilizando a API V3.

Pule para:

Instalação

Você pode instalar esta SDK via composer:

composer require pablosanches/bling-sdk

Introdução

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();
    }

Os modelos de resposta dos resources trazem alguns métodos que facilitam a integração:

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();
    }

Em alguns casos o bling pode paginar e oferecer filtros para as requests

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();
    }

Contatos

Ver documentação

Criando um contato

Ver documentação

    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();
    }

Atualizando um contato:

Ver documentação

    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();
    }

Buscando todos os contatos:

Ver documentação

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();
    }

Buscando contato por ID:

Ver documentação

use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idContato = 1; 
        $response = $bling->contatos()->buscar($idContato);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Buscando tipos de um contato:

Ver documentação

use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idContato = 1; 
        $response = $bling->contatos()->buscarTipos($idContato);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Buscando contatos consumidores finais:

Ver documentação

use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idContato = 1; 
        $response = $bling->contatos()->buscarConsumidoresFinais($idContato);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Atualizando a situação de um contato:

Ver documentação

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();
    }

Atualizando a situação de múltiplos contatos:

Ver documentação

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();
    }

Remover um contato pelo seu ID:

Ver documentação

use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idContato = 1;
        $response = $bling->contatos()->remover($idContato);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Remover múltiplos contatos:

Ver documentação

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();
    }

Categorias de Produtos

Ver documentação

Criando uma categoria de produto:

Ver documentação

    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();
    }

Atualizando uma categoria de produtos:

Ver documentação

    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();
    }
    

Buscando uma categoria de produtos pelo seu ID:

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idCategoria = 123456789;
        $response = $bling->categoriasProdutos()->buscar($idCategoria);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Buscando todos as categorias de produtos

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $response = $bling->categoriasProdutos()->buscarTodos();
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Removendo uma categoria de produto

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idCategoria = 123456789;
        $response = $bling->categoriasProdutos()->remover($idCategoria);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Categorias Lojas

(Multilojas)

Ver documentação

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>']);

Criando um vínculo de uma categoria de produto

Ver documentação

    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();
    }

Atualizando um vínculo de uma categoria de produto

Ver documentação

    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();
    }

Buscando um vínculo de categoria de produto pelo seu ID

Ver documentação

    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();
    }

Buscando todos os vínculos de categorias de produtos

Ver documentação

    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();
    }

Removendo um vínculo de uma categoria de produto

Ver documentação

    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();
    }

Depósitos

Ver documentação

Criando um depósito

Ver documentação

    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();
    }

Alterando um depósito

Ver documentação

    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();
    }

Obtendo um depósito pelo ID

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idDeposito = 123456789;
        $response = $bling->depositos()->buscar($idDeposito);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Obtendo todos os depósitos

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $response = $bling->depositos()->buscarTodos();
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Estoques

Ver documentação

Criando um registro de estoque

Ver documentação

    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();
    }

Atualizando um registro de estoque

Ver documentação

    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();
    }

Obtém o saldo em estoque de produtos em todos os depósitos

Ver documentação

    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();
    }

Obtém o saldo em estoque de produtos pelo ID do depósito

Ver documentação

    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();
    }

Produtos

Ver documentação

Criar um produto

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $dadosProdutos = [...];
        $response = $bling->produtos()->criar($dadosProdutos);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Alterar um produto

Ver documentação

    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();
    }

Alterar a situação de múltiplos produtos

Ver documentação

    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();
    }

Alterar a situação de um produto

Ver documentação

    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();
    }

Obter um produto pelo seu ID

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idProduto = 123456789;
        $response = $bling->produtos()->buscar($idProduto);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Obter todos os produtos paginados

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $response = $bling->produtos()->buscarTodos();
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Excluir um produto pelo seu id

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idProduto = 123456789;
        $response = $bling->produtos()->remover($idProduto);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Excluir múltiplos produtos

Ver documentação

    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();
    }

Produtos Lojas

Ver documentação

Criar vínculo de produtos com lojas

Ver documentação

    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();
    }

Altera vínculo de produtos com lojas

Ver documentação

    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();
    }

Obtém um vínculo de produtos com lojas

Ver documentação

    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();
    }

Obtém um vínculo de todos produtos com lojas

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>', '<id-integracao-aqui>');        
        $response = $bling->produtosLojas()->buscarTodos();
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Remove o vínculo de produtos com lojas

Ver documentação

    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();
    }

Produtos Variações

Ver documentação

Obter um produto e suas variações

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $response = $bling->produtosVariacoes()->buscar($idProdutoPai);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Alterar o nome do atributo nas variações

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $payload = [...];
        $response = $bling->produtosVariacoes()->alterarNomeAtributo($idProdutoPai, $payload);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Retorna o produto pai com combinações de novas variações

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $payload = [...];
        $response = $bling->produtosVariacoes()->gerarCombinacoes($payload);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Pedidos Vendas

Ver documentação

Criar um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $payload = [...];
        $response = $bling->pedidosVendas()->criar($payload);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Atualizar um pedido de venda

Ver documentação

    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();
    }

Remover um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->remover($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Remover múltiplos pedidos de vendas

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->removerMultiplos([$idPedidoVenda]);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Buscar um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->buscar($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Buscar todos os pedidos de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $response = $bling->pedidosVendas()->buscarTodos();
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Buscar todos os pedidos de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $response = $bling->pedidosVendas()->buscarTodos();
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Alterar a situação de um pedido de venda

Ver documentação

    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();
    }

Lançar estoque de um pedido de venda especificando o depósito

Ver documentação

    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();
    }

Lançar estoque de um pedido de venda no depósito padrão

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->lancaEstoque($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Estornar o estoque de um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->estornarEstoque($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Lançar as contas de um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->lancarContas($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Estornar as contas de um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->estornarContas($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Gerar NFE de um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->gerarNfe($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }

Gerar NFCE de um pedido de venda

Ver documentação

    use PabloSanches\Bling\Client;
    
    try {
        $blingClient = Client::factory('<seu-token-aqui>');
        $idPedidoVenda = 123456789;
        $response = $bling->pedidosVendas()->gerarNfce($idPedidoVenda);
    } catch (\Exception $e) {
        // $e->getMessage();
    }