Arquivo

Textos com Etiquetas ‘Gem’

Gem para cálculo de frete do PayPal Frete Fácil

4, setembro, 2011

O PayPal Frete Fácil é um serviço onde você tem desconto a partir de 30% no valor do frete, em relação ao valor de balcão do SEDEX dos Correios, para vendas feitas pelo PayPal.

PayPal Frete Facil

Você escolhe a transação de venda feita pelo PayPal, paga o frete pelo site, imprime a etiqueta que deve ser colada no pacote das mercadorias e posta em uma agência dos Correios conveniada.

O PayPal disponibiliza um Web Service para fazer o cálculo do PayPal Frete Fácil nos carrinhos de compra de lojas virtuais. Criei a gem paypal-frete-facil que consome esse Web Service.

Abaixo estão todos os detalhes de como instalar e utilizar a gem paypal-frete-facil.

Instalando

Gemfile:
gem 'paypal-frete-facil'

Instalação direta:
$ gem install paypal-frete-facil

Usando

require 'paypal-frete-facil'

frete = PayPal::FreteFacil::Frete.new :cep_origem => "04094-050",
                                       :cep_destino => "90619-900",
                                       :largura => 15,
                                       :altura => 2,
                                       :profundidade => 30,
                                       :peso => 0.3

frete.calcular  # => 13.87
frete.calculate # => 13.87

Log

Por padrão, cada chamada ao Web Service do PayPal Frete Fácil é logada em STDOUT, com nível de log :info, usando a gem LogMe.

Exemplo de log:
I, [2011-08-29T22:00:52.624430 #2186] INFO — : PayPal-Frete-Facil Request:
https://ff.paypal-brasil.com.br/FretesPayPalWS/WSFretesPayPal
<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:frete=”https://ff.paypal-brasil.com.br/FretesPayPalWS”><soapenv:Header /><soapenv:Body><frete:getPreco><cepOrigem>04094-050</cepOrigem><cepDestino>90619-900</cepDestino><largura>15</largura><altura>2</altura><profundidade>30</profundidade><peso>0.3</peso></frete:getPreco></soapenv:Body></soapenv:Envelope>

I, [2011-08-29T22:00:53.917895 #2186] INFO — : PayPal-Frete-Facil Response:
HTTP/1.1 200 OK
<?xml version=’1.0′ encoding=’UTF-8′?><S:Envelope xmlns:S=”http://schemas.xmlsoap.org/soap/envelope/”><S:Body><ns2:getPrecoResponse xmlns:ns2=”https://ff.paypal-brasil.com.br/FretesPayPalWS”><return>13.873999999999999</return></ns2:getPrecoResponse></S:Body></S:Envelope>

Se você configurar o nível de log como :debug, serão logados também todos os cabeçalhos HTTP da requisição e da resposta:
D, [2011-08-29T22:00:52.624430 #2186] DEBUG — : PayPal-Frete-Facil Request:
https://ff.paypal-brasil.com.br/FretesPayPalWS/WSFretesPayPal
accept: */*
user-agent: Ruby
content-type: text/xml; charset=utf-8
soapaction: https://ff.paypal-brasil.com.br/FretesPayPalWS/WSFretesPayPal/getPreco
<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:frete=”https://ff.paypal-brasil.com.br/FretesPayPalWS”><soapenv:Header /><soapenv:Body><frete:getPreco><cepOrigem>04094-050</cepOrigem><cepDestino>90619-900</cepDestino><largura>15</largura><altura>2</altura><profundidade>30</profundidade><peso>0.3</peso></frete:getPreco></soapenv:Body></soapenv:Envelope>

D, [2011-08-29T22:00:53.917895 #2186] DEBUG — : PayPal-Frete-Facil Response:
HTTP/1.1 200 OK
date: Tue, 30 Aug 2011 01:00:52 GMT
server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 mod_jk/1.2.30
content-length: 271
content-type: text/xml;charset=utf-8
set-cookie: ROUTEID=.2; path=/
connection: close
<?xml version=’1.0′ encoding=’UTF-8′?><S:Envelope xmlns:S=”http://schemas.xmlsoap.org/soap/envelope/”><S:Body><ns2:getPrecoResponse xmlns:ns2=”https://ff.paypal-brasil.com.br/FretesPayPalWS”><return>13.873999999999999</return></ns2:getPrecoResponse></S:Body></S:Envelope>

Para desabilitar o log, mudar o nível do log ou configurar um outro mecanismo de log, use o módulo PayPal::FreteFacil.

PayPal::FreteFacil.configure do |config|
  config.log_enabled = false   # Desabilita o log
  config.log_level = :debug     # Altera o nível do log
  config.logger = Rails.logger  # Usa o logger do Rails
end

Informações adicionais

Maneiras de configurar atributos no construtor de PayPal::FreteFacil::Frete

Com um hash:

frete = PayPal::FreteFacil::Frete.new :cep_origem => "04094-050",
                                       :cep_destino => "90619-900",
                                       :largura => 15,
                                       :altura => 2,
                                       :profundidade => 30,
                                       :peso => 0.3

Com um bloco:

frete = PayPal::FreteFacil::Frete.new do |f|
  f.cep_origem = "04094-050"
  f.cep_destino = "90619-900"
  f.largura = 15
  f.altura = 2
  f.profundidade = 30
  f.peso = 0.3
end
Atributos de PayPal::FreteFacil::Frete
  • String: cep_origem, cep_destino
  • Fixnum: largura, altura, profundidade
  • Float: peso
Código no Github

https://github.com/prodis/paypal-frete-facil

Gem no RubyGems.org

https://rubygems.org/gems/paypal-frete-facil

Ruby , , , , , , , , ,

Gem para cálculo de frete dos Correios

3, julho, 2011

O post da gem correios-frete foi movida para a seguinte página:

http://prodis.blog.br/correios-frete-gem-para-calculo-de-frete-dos-correios

Você será redirecionado para a nova página em 5 segundos.

Ruby , , , , , , , , , , ,

“Pretty print” para seus objetos Ruby

8, abril, 2010

Vira e mexe, seja no irb ou no script/console, temos que exibir o conteúdo de objetos para examinar seus valores. A maneira mais comum para fazer isso é utilizando os método puts ou o método p, como no exemplo abaixo:

Esse tipo de exibição não é muito legível, principalmente se você estiver no script/console visualizando os dados de  um ActiveRecord:

No caso de objetos ActiveRecord, há a opção da exibição em YAML, chamando o método y no script/console:

Agora existe uma gem chamada awesome_print que permite exibir os dados dos objetos com identação e cores de acordo com o tipo de dado.

Primeiro vamos instalá-la:
$ sudo gem install awesome_print

E para exemplificar, vamos usar o script/console para exibir os valores de um hash. Note que é necessário fazer uma referência para o arquivo “ap”. Depois bastar chamar o método ap:

Uma coisa legal é que dependendo do tipo do valor, as cores são diferentes.

Agora veja um exemplo utilizando um ActiveRecord:

Uma ressalva negativa é a não exibição dos valores decimais, como acontece quando se exibe o ActiveRecord em YAML. Talvez para uma próxima versão isso melhore.

Há também algumas opções para customizar a forma como os dados são exibidos pela awesome_print, como por exemplo o tamanho da identação e as cores. Para mais informações, veja a documentação da gem: http://github.com/michaeldv/awesome_print.

Ruby , , , , , ,