BlingApi

Wrapper de integração com a API v3 do ERP Bling!.

Documentação API v3 Bling!

Funcionalidades:

  • Clientes: create, update, find_by_id, find_by_tax_id (CPF/CNPJ)
  • Pedido de venda: create, find_by_id
  • Produtos: find_by_sku
  • Vendedores: get_sellers (listagem), find_by_id

Instalação

Adicionar bling_api no Gemfile:

gem 'bling_api'

ou

bundle add bling_api

Instalar a gem:

bin/rails generate bling_api:install

Uso

Configurar access_token no initializer ou direto no código:

BlingApi.configure do |config|
  config.access_token = "ACCESS_TOKEN"
end

Exemplos

Token

api_client = BlingApi::Client.new.refresh_token(client_id: "123456", client_secret: "101112131415", refresh_token: "abcde12345")
#retorna o JSON da resposta
puts api_client["access_token"] # "a1b2c3d4e5"
puts api_client["expires_in"] # 21600

Produto

# Encontrar um produto a partir do SKU
product = BlingApi::Product.find_by_sku("123456")
puts product.sku # "123456"

Pedido de venda

# Instancia o objeto
order = BlingApi::Order.new(
  id_contato: 16693257776,
  items: [{
    id: 16219735350,
    quantidade: 1,
    valor: 20.25,
    produto: {
      id: 16219735350
    }
  }],
  parcelas: [{
    dataVencimento: "2024-06-06",
    valor: 20.25,
    formaPagamento: {
      id: 4776248
    }
  }],
  numero_loja: "ABC-123",
  data: "2024-06-06",
  total_produtos: 20.25,
  total: 20.25,
  id_loja: 204683421,
  numero_pedido_compra: "ABC-123",
  observacoes: "Observação",
  observacoes_internas: "Obervação interna",
  valor_desconto: 0.00,
  id_categoria: 14653794318,
  transporte: {
    fretePorConta: 1,
    frete: 0.00,
    quantidadeVolumes: 1,
    contato: {
      nome: "LOGISTICA S.A"
    },
    etiqueta: {
      nome: "João da Silva",
      endereco: "Rua da Saudade",
      numero: "120",
      complemento: "",
      municipio: "São Paulo",
      uf: "SP",
      bairro: "Centro",
      cep: "01002010",
      nomePais: "Brasil"
    },
    volumes: [
      {
        servico: "SEDEX",
        codigoRastreamento: ""
      }
    ]
  },
  id_vendedor: 15596298834,
  pessoa_juridica: false, 
  numero_documento: "123.123.123-87"
)

# Cria o pedido de venda
created_order = order.create

puts created_order.numero # 102030