Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 41 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,52 @@ gem "pagseguro-transparente", "~> 0.2.3"
~~~
* Ainda não publicada, é preciso baixar direto do Github.

Criar um initializer em config/initializer/pagseguro.rb
###**PagSeguro** suporta dois métodos de configurações.

####Rails Initializer
~~~.ruby
rails g pagseguro:install
~~~

O generator vai criar o Rails initializer em config/initializers/pagseguro.rb.
~~~.ruby
PagSeguro.configure do |config|
config.email = "exemplo@pagseguro.com.br"
config.token = "token válido"
config.environment = :sandbox
config.adapter_javascript_url = "https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"
config.email = "exemplo@pagseguro.com.br"
config.token = "token válido"
end
~~~

####Ou por YAML
~~~.ruby
rails g pagseguro:install --use-yml
~~~

O generator vai criar o YAML em config/pagseguro.yml.
~~~.yaml
development: &development
adapter_javascript_url: "https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"
email: "exemplo@pagseguro.com.br"
token: "token válido"
environment: "sandbox"

test:
<<: *development

production:
adapter_javascript_url: "https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"
email: "exemplo@pagseguro.com.br"
token: "token válido"
environment: "production"
~~~


####Adicione ao seu application layout
~~~
<%= javascript_include_tag PagSeguro.adapter_javascript_url %>
~~~

##Criando uma nova sessão
~~~.ruby
pagseguro_session = PagSeguro::Session.new
Expand Down
55 changes: 55 additions & 0 deletions lib/config.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
module PagSeguro
class Config
# Primary e-mail associated with the primary account.
attr_accessor :email

# The API token associated with primary account.
attr_accessor :token

# Sencondary e-mail associated with secondary account.
attr_accessor :alt_email

# The API token associated with secondary account.
attr_accessor :alt_token

# The PagSeguro environment.
# Only +production+ for now.
attr_accessor :environment

# Timeout value in seconds for requests.
attr_accessor :timeout

# Javascript adapter
attr_accessor :adapter_javascript_url

def initialize
load_yml! if defined?(Rails) && yml_exists?
end

def yml_exists?
defined?(Rails.root) ? File.exist?(self.yml_path) : false
end

def yml
begin
@yml ||= HashWithIndifferentAccess.new(YAML.load_file(yml_path)[Rails.env]) rescue nil || {}
rescue Psych::SyntaxError
@yml = {}
end
end

def yml_path
Rails.root.join("config/pagseguro.yml")
end

def load_yml!
self.email = yml[:email]
self.token = yml[:token]
self.alt_email = yml[:alt_email]
self.alt_token = yml[:alt_token]
self.timeout = yml[:timeout]
self.adapter_javascript_url = yml[:adapter_javascript_url]
self.environment = yml[:environment].to_sym
end
end
end
22 changes: 22 additions & 0 deletions lib/generators/pagseguro/install_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
module PagSeguro
module Generators
class InstallGenerator < Rails::Generators::Base
namespace "pagseguro:install"
source_root File.expand_path("../../templates", __FILE__)

class_option :use_yml, type: :boolean, default: false, desc: "Use YML file instead of Rails Initializer"

def generate_config
if options[:use_yml]
template "pagseguro.yml", "config/pagseguro.yml"
end
end

def generate_initializer
unless options[:use_yml]
template "pagseguro.rb", "config/initializers/pagseguro.rb"
end
end
end
end
end
6 changes: 6 additions & 0 deletions lib/generators/templates/pagseguro.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
PagSeguro.configure do |config|
config.environment = :sandbox
config.adapter_javascript_url = "https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"
config.email = "exemplo@pagseguro.com.br"
config.token = "token válido"
end
14 changes: 14 additions & 0 deletions lib/generators/templates/pagseguro.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
development: &development
adapter_javascript_url: "https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"
email: "exemplo@pagseguro.com.br"
token: "token válido"
environment: "sandbox"

test:
<<: *development

production:
adapter_javascript_url: "https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"
email: "exemplo@pagseguro.com.br"
token: "token válido"
environment: "production"
36 changes: 15 additions & 21 deletions lib/pagseguro.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
require "active_model"
require "config"
require "pagseguro/version"
require "pagseguro/request"
require "pagseguro/session"
Expand Down Expand Up @@ -34,27 +35,24 @@

module PagSeguro
class << self
# Primary e-mail associated with the primary account.
attr_accessor :email

# The API token associated with primary account.
attr_accessor :token

# Sencondary e-mail associated with secondary account.
attr_accessor :alt_email
def config=(data)
@config = data
end

# The API token associated with secondary account.
attr_accessor :alt_token
def config
@config ||= Config.new
end

# The PagSeguro environment.
# Only +production+ for now.
attr_accessor :environment
def configure(&block)
yield config
end

# Timeout value in seconds for requests.
attr_accessor :timeout
def adapter_javascript_url
config.adapter_javascript_url
end

def api_url(version)
uris.fetch(environment) + version
uris.fetch(config.environment) + version
end

private
Expand All @@ -66,7 +64,7 @@ def uris
end
end

self.environment = :production
self.config.environment = :production

# Set the global configuration.
#
Expand All @@ -75,8 +73,4 @@ def uris
# config.token = "abc"
# config.environment = :sandbox
# end
#
def self.configure(&block)
yield self
end
end
6 changes: 3 additions & 3 deletions lib/pagseguro/request.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@ def post(path, version, account = "default", params = {})
self.class.base_uri PagSeguro.api_url(version)
options = { body: add_credencials(account) }
options[:body].merge!(params)
options[:timeout] = PagSeguro.timeout unless PagSeguro.timeout.blank?
options[:timeout] = PagSeguro.config.timeout unless PagSeguro.config.timeout.blank?
self.class.post(path, options)
end

private
def add_credencials(account)
if account == "alternative"
{ email: PagSeguro.alt_email, token: PagSeguro.alt_token }
{ email: PagSeguro.config.alt_email, token: PagSeguro.config.alt_token }
else
{ email: PagSeguro.email, token: PagSeguro.token }
{ email: PagSeguro.config.email, token: PagSeguro.config.token }
end
end
end
Expand Down
8 changes: 4 additions & 4 deletions spec/pagseguro/notification_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@
it { should respond_to(:transaction) }

before do
PagSeguro.email = 'mail'
PagSeguro.token = 'token'
PagSeguro.alt_email = 'alt_mail'
PagSeguro.alt_token = 'alt_token'
PagSeguro.config.email = 'mail'
PagSeguro.config.token = 'token'
PagSeguro.config.alt_email = 'alt_mail'
PagSeguro.config.alt_token = 'alt_token'
end

describe "#transaction" do
Expand Down
18 changes: 9 additions & 9 deletions spec/pagseguro/pagseguro_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

describe PagSeguro do
before do
PagSeguro.email = "EMAIL"
PagSeguro.token = "TOKEN"
PagSeguro.timeout = 10
PagSeguro.config.email = "EMAIL"
PagSeguro.config.token = "TOKEN"
PagSeguro.config.timeout = 10
end

it { expect(PagSeguro.email).to eql("EMAIL") }
it { expect(PagSeguro.token).to eql("TOKEN") }
it { expect(PagSeguro.timeout).to eql(10) }
it { expect(PagSeguro.config.email).to eql("EMAIL") }
it { expect(PagSeguro.config.token).to eql("TOKEN") }
it { expect(PagSeguro.config.timeout).to eql(10) }

context "configuring library" do
it "yields PagSeguro" do
Expand All @@ -20,7 +20,7 @@
end

context "default settings" do
it { expect(PagSeguro.environment).to eql(:production) }
it { expect(PagSeguro.config.environment).to eql(:production) }
end

describe ".api_url" do
Expand All @@ -30,7 +30,7 @@
end

context "sandbox" do
before { PagSeguro.environment = :sandbox }
before { PagSeguro.config.environment = :sandbox }
it { expect(PagSeguro.api_url(PagSeguro::Request::API_V2)).to eq('https://ws.sandbox.pagseguro.uol.com.br/v2') }
end
end
Expand All @@ -41,7 +41,7 @@
end

context "sandbox" do
before { PagSeguro.environment = :sandbox }
before { PagSeguro.config.environment = :sandbox }
it { expect(PagSeguro.api_url(PagSeguro::Request::API_V3)).to eq('https://ws.sandbox.pagseguro.uol.com.br/v3') }
end
end
Expand Down
4 changes: 2 additions & 2 deletions spec/pagseguro/payment/serializer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@
end

before do
PagSeguro.email = 'pagseguro@eventick.com.br'
PagSeguro.token = 'my_token'
PagSeguro.config.email = 'pagseguro@eventick.com.br'
PagSeguro.config.token = 'my_token'
end

let(:bank) { PagSeguro::Bank.new('bancodobrasil') }
Expand Down
8 changes: 4 additions & 4 deletions spec/pagseguro/query_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
it { should respond_to(:transaction) }

before do
PagSeguro.email = 'mail'
PagSeguro.token = 'token'
PagSeguro.alt_email = 'alt_mail'
PagSeguro.alt_token = 'alt_token'
PagSeguro.config.email = 'mail'
PagSeguro.config.token = 'token'
PagSeguro.config.alt_email = 'alt_mail'
PagSeguro.config.alt_token = 'alt_token'
end

describe "#transaction" do
Expand Down
8 changes: 4 additions & 4 deletions spec/pagseguro/refund_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
it { should respond_to(:errors) }

before do
PagSeguro.email = 'mail'
PagSeguro.token = 'token'
PagSeguro.alt_email = 'alt_mail'
PagSeguro.alt_token = 'alt_token'
PagSeguro.config.email = 'mail'
PagSeguro.config.token = 'token'
PagSeguro.config.alt_email = 'alt_mail'
PagSeguro.config.alt_token = 'alt_token'
end

describe "#request" do
Expand Down
4 changes: 2 additions & 2 deletions spec/pagseguro/session_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
subject { session }

before do
PagSeguro.email = 'mail'
PagSeguro.token = 'token'
PagSeguro.config.email = 'mail'
PagSeguro.config.token = 'token'
end

it { should respond_to(:create) }
Expand Down