BlingApi
Wrapper de integração com a API v3 do ERP 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