pagseguro_v2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+ *.swp
15
+
16
+ # YARD artifacts
17
+ .yardoc
18
+ _yardoc
19
+ doc/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in pagseguro_v2.gemspec
4
+ gemspec
@@ -0,0 +1,36 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ pagseguro_v2 (0.0.0)
5
+ builder
6
+ hashie (>= 1.2.0)
7
+ httparty
8
+ nokogiri
9
+
10
+ GEM
11
+ remote: http://rubygems.org/
12
+ specs:
13
+ builder (3.0.0)
14
+ diff-lcs (1.1.3)
15
+ hashie (1.2.0)
16
+ httparty (0.8.3)
17
+ multi_json (~> 1.0)
18
+ multi_xml
19
+ multi_json (1.3.6)
20
+ multi_xml (0.5.1)
21
+ nokogiri (1.5.4)
22
+ rspec (2.10.0)
23
+ rspec-core (~> 2.10.0)
24
+ rspec-expectations (~> 2.10.0)
25
+ rspec-mocks (~> 2.10.0)
26
+ rspec-core (2.10.1)
27
+ rspec-expectations (2.10.0)
28
+ diff-lcs (~> 1.1.3)
29
+ rspec-mocks (2.10.1)
30
+
31
+ PLATFORMS
32
+ ruby
33
+
34
+ DEPENDENCIES
35
+ pagseguro_v2!
36
+ rspec (~> 2.10.0)
@@ -0,0 +1,4 @@
1
+ pagseguro_v2
2
+ ============
3
+
4
+ Pagseguro gem for api version 2
@@ -0,0 +1,4 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new('spec')
@@ -0,0 +1,31 @@
1
+ require 'httparty'
2
+ require 'hashie'
3
+ require 'builder'
4
+ require 'bigdecimal'
5
+ require 'bigdecimal/util'
6
+ require "nokogiri"
7
+
8
+ require "pagseguro_v2/version"
9
+ require "pagseguro_v2/client"
10
+ require "pagseguro_v2/config"
11
+ require "pagseguro_v2/checkout"
12
+ require "pagseguro_v2/item"
13
+
14
+ require 'pagseguro_v2/address'
15
+
16
+ require "pagseguro_v2/sender"
17
+ require "pagseguro_v2/shipping"
18
+ require "pagseguro_v2/notification"
19
+ require "pagseguro_v2/transaction"
20
+
21
+ require "pagseguro_v2/errors/invalid_data"
22
+ #require "pagseguro_v2/errors/unknown_error"
23
+ require "pagseguro_v2/errors/unauthorized"
24
+
25
+ # Error classes
26
+ #require "errors/unauthorized"
27
+
28
+
29
+ module PagseguroV2
30
+ # Your code goes here...
31
+ end
@@ -0,0 +1,26 @@
1
+ module PagseguroV2
2
+ class Address < Hashie::Dash
3
+ property :street
4
+ property :number
5
+ property :complement
6
+ property :district
7
+ property :postal_code, :from => :postalCode
8
+ property :city
9
+ property :state
10
+ property :country
11
+
12
+ def to_xml(options = {})
13
+ builder = options[:builder] || Builder::XmlMarkup.new()
14
+ builder.address do |address|
15
+ address.country country if country
16
+ address.state state if state
17
+ address.city city if city
18
+ address.district district if district
19
+ address.postalCode postal_code if postal_code
20
+ address.street street if street
21
+ address.number number if number
22
+ address.complement complement if complement
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,132 @@
1
+ require 'pagseguro_v2/config'
2
+
3
+ module PagseguroV2
4
+ class Checkout < Hashie::Dash
5
+ attr_accessor :client
6
+
7
+ # Data from the buyer
8
+ property :sender
9
+ # Shipping informations
10
+ property :shipping
11
+
12
+ # The currency in which payment will be made
13
+ property :currency, :required => true, :default => PagseguroV2::Config::CURRENCY
14
+ # List of items contained in the payment
15
+ property :items, :required => true
16
+ # Code that reference the payment
17
+ property :reference
18
+ # Determines the URL to which the buyer will be redirected after the end
19
+ # of the payment stream
20
+ property :redirect_url
21
+ # Specifies an extra value to be added or subtracted from the total payment
22
+ property :extra_amount
23
+ # maximum number of times the code created by the Payment API calls can be used
24
+ property :max_uses
25
+ # Time (in seconds) during which the payment code created by
26
+ # the Payment API call can be used.
27
+ property :max_age
28
+
29
+ property :code
30
+ property :date
31
+
32
+ def initialize(options)
33
+ self.item = options[:item] if options[:item]
34
+ self.items = options[:items] if options[:items]
35
+ options.delete(:items)
36
+ options.delete(:item)
37
+ super(options)
38
+ end
39
+
40
+ def items=(items)
41
+ items = items.map{ |i| Item.new(i) } if items.is_a? Array
42
+ items = [Item.new(items)] if items.is_a? Hash
43
+ self[:items] = items
44
+ end
45
+
46
+ def item=(item)
47
+ self.items = [item]
48
+ end
49
+
50
+ def sender=(sender)
51
+ self[:sender] = Sender.new(sender) if sender.is_a? Hash
52
+ self[:sender] = sender if sender.is_a? Sender
53
+ end
54
+
55
+ def shipping=(shipping)
56
+ self[:shipping] = Shipping.new(shipping) if shipping.is_a? Hash
57
+ self[:shipping] = shipping if shipping.is_a? Shipping
58
+ end
59
+
60
+ def proceed!
61
+ response = self.client.proceed_checkout(self) # if code_blank
62
+ self.code = response['checkout']['code']
63
+ self.date = response['checkout']['date']
64
+ !self.code.nil? && !self.date.nil?
65
+ end
66
+
67
+ def max_uses
68
+ self[:max_uses].to_i if self[:max_uses]
69
+ end
70
+
71
+ def max_age
72
+ self[:max_age].to_i if self[:max_age]
73
+ end
74
+
75
+ def url
76
+ url = ""
77
+ url = PagseguroV2::Config::REDIRECT_URL + self.code if self.code
78
+ url
79
+ end
80
+
81
+ def to_hash(options = {})
82
+ sender = self.delete "sender"
83
+ shipping = self.delete "shipping"
84
+ items = self.delete "items"
85
+
86
+ self[:sender] = sender.to_hash(options) unless sender.nil?
87
+ self[:shipping] = shipping.to_hash(options) unless shipping.nil?
88
+ self[:items] = items.map { |i| i.to_hash(options) }
89
+
90
+ hash = super(options)
91
+
92
+ self[:sender] = sender unless sender.nil?
93
+ self[:shipping] = shipping unless shipping.nil?
94
+ self[:items] = items
95
+
96
+ return hash
97
+ end
98
+
99
+ def to_xml(options={})
100
+ builder = Builder::XmlMarkup.new( )
101
+ builder.instruct! :xml, :encoding => "UTF-8"
102
+ builder.checkout do |checkout|
103
+ checkout.currency currency
104
+
105
+ checkout.reference reference if reference
106
+ checkout.redirectURL redirect_url if redirect_url
107
+ checkout.extraAmount extra_amount if extra_amount
108
+ checkout.maxUses max_uses if max_uses
109
+ checkout.maxAge max_age if max_age
110
+
111
+ checkout.items do |items|
112
+ self.items.each{ |i| i.to_xml(:builder => items) }
113
+ end
114
+
115
+ if self.shipping
116
+ checkout.shipping self.shipping.to_xml(:builder => checkout)
117
+ end
118
+
119
+ if self.sender
120
+ checkout.sender self.sender.to_xml(:builder => checkout)
121
+ end
122
+ end
123
+ end
124
+
125
+ private
126
+ # melhorar
127
+ def convert_unit(number, unit)
128
+ number = (BigDecimal("#{number}") * unit).to_i unless number.nil? || number.kind_of?(Integer)
129
+ number
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,75 @@
1
+ require 'httparty'
2
+ require 'pagseguro_v2/config'
3
+
4
+ module PagseguroV2
5
+ class Client
6
+ include HTTParty
7
+ base_uri PagseguroV2::Config::API_HOST
8
+ format :xml
9
+
10
+ attr_accessor :email
11
+ attr_accessor :token
12
+
13
+ def initialize(email, token)
14
+ super()
15
+ self.email = email
16
+ self.token = token
17
+ end
18
+
19
+ def checkout(attributes)
20
+ checkout = Checkout.new(attributes)
21
+ checkout.client = self
22
+ checkout
23
+ end
24
+
25
+ def notification(attributes)
26
+ notification = Notification.new(attributes)
27
+ notification.client = self
28
+ notification
29
+ end
30
+
31
+ def proceed_checkout(checkout)
32
+ self.parse_post_response(PagseguroV2::Config::CHECKOUT_PATH, checkout)
33
+ end
34
+
35
+ def query_transaction(notification)
36
+ path = PagseguroV2::Config::NOTIFICATION_PATH.gsub 'ID', notification.code
37
+ options = { query: {email: email, token: token} }
38
+ parse_get_response(path, options)
39
+ end
40
+
41
+ def parse_post_response(path, object)
42
+ response = post(path, object)
43
+ parse_response(response)
44
+ end
45
+
46
+ def parse_get_response(path, options)
47
+ response = get(path, options)
48
+ parse_response(response)
49
+ end
50
+
51
+ def parse_response(response)
52
+ if response.code == 200
53
+ response
54
+ elsif response.code == 401
55
+ raise PagseguroV2::Errors::Unauthorized
56
+ elsif response.code == 400
57
+ raise PagseguroV2::Errors::InvalidData.new(response.body)
58
+ else
59
+ raise PagseguroV2::Errors::UnknownError.new(response)
60
+ end
61
+ end
62
+
63
+ def get(path, options = {})
64
+ self.class.get(path, options)
65
+ end
66
+
67
+ def post(path, object)
68
+ object_xml = object.to_xml
69
+ header = {"Content-Type" => "application/xml; charset=UTF-8"}
70
+ query = { :email => self.email, :token => self.token }
71
+ options = {query: query, body: object_xml, headers: header}
72
+ self.class.post(path, options)
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,12 @@
1
+ module PagseguroV2
2
+ module Config
3
+ API_HOST = "https://ws.pagseguro.uol.com.br/v2"
4
+ REDIRECT_URL = "https://pagseguro.uol.com.br/v2/checkout/payment.html?code="
5
+
6
+ CHECKOUT_PATH = '/checkout'
7
+ NOTIFICATION_PATH = '/transactions/notifications/ID'
8
+
9
+ CHARSET = "UTF-8"
10
+ CURRENCY = "BRL"
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module PagseguroV2
2
+ module Errors
3
+ class InvalidData < Exception
4
+ def initialize(error_xml)
5
+ err_msg = Nokogiri::XML(error_xml).css("errors error").inject("") do |acc, node|
6
+ acc + "#{node.css('code').first.content}: #{node.css('message').first.content}\n"
7
+ end
8
+ super(err_msg)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ module PagseguroV2
2
+ module Errors
3
+ class Unauthorized < Exception
4
+ def initialize
5
+ super("Email and token provided has failed to authenticate")
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module PagseguroV2
2
+ module Errors
3
+ class UnknownError < Exception
4
+ def initialize(response)
5
+ super("Unknown response code (#{response.code}):\n#{response.body}")
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ module PagseguroV2
2
+ class Item < Hashie::Dash
3
+ property :id, required: true
4
+ property :description, required: true
5
+ property :amount, required: true
6
+ property :quantity, required: true, default: 1
7
+ property :shipping_cost
8
+ property :weight
9
+
10
+ def to_xml(options = {})
11
+ builder = options[:builder] || Builder::XmlMarkup.new()
12
+ builder.item do |item|
13
+ item.id id
14
+ item.description description
15
+ item.amount amount
16
+ item.quantity quantity
17
+ item.shippingCost shipping_cost if shipping_cost
18
+ item.weight weight if weight
19
+ end
20
+ end
21
+
22
+ def quantity
23
+ self[:quantity].to_i
24
+ end
25
+
26
+ def weight
27
+ self[:weight].to_i if self[:weight]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ module PagseguroV2
2
+ class Notification < Hashie::Trash
3
+ property :code, :from => :notificationCode
4
+ property :type, :from => :notificationType
5
+
6
+ attr_accessor :client
7
+
8
+ def transaction
9
+ response = self.client.query_transaction(self)
10
+ transaction = Transaction.new response['transaction']
11
+ transaction
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module PagseguroV2
2
+ class PaymentMethod < Hashie::Dash
3
+ property :type
4
+ property :code
5
+
6
+ def type
7
+ Transaction::Payment::Codes[self.type]
8
+ end
9
+
10
+ def code
11
+ Transaction::Payment::Codes[self.code]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,29 @@
1
+ module PagseguroV2
2
+ class Sender < Hashie::Dash
3
+ property :email
4
+ property :name
5
+ property :phone_area_code
6
+ property :phone_number
7
+
8
+ def initialize(attributes)
9
+ phone = attributes.delete 'phone'
10
+ self.phone_area_code = phone['areaCode']
11
+ self.phone_number = phone['number']
12
+ super(attributes)
13
+ end
14
+
15
+ def to_xml(options = {})
16
+ builder = options[:builder] || Builder::XmlMarkup.new()
17
+ builder.sender do |sender|
18
+ sender.email email if email
19
+ sender.name name if name
20
+ if phone_area_number && phone_number
21
+ sender.phone do |phone|
22
+ phone.areaCode
23
+ phone.number
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,17 @@
1
+ module PagseguroV2
2
+ class Shipping < Hashie::Dash
3
+ property :type, default: 3
4
+ property :address
5
+ property :cost
6
+
7
+ def to_xml(options = {})
8
+ builder = options[:builder] || Builder::XmlMarkup.new()
9
+ builder.shipping do |shipping|
10
+ shipping.type type
11
+ if self.address
12
+ shipping.address self.address.to_xml(:builder => shipping)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ module PagseguroV2
2
+ class Transaction < Hashie::Trash
3
+ property :date
4
+ property :code
5
+ property :reference
6
+ property :type
7
+ property :status
8
+
9
+ property :payment_method, :from => :paymentMethod
10
+
11
+ property :gross_amount, :from => :grossAmount
12
+ property :discount_amount, :from => :discountAmount
13
+ property :fee_amount, :from => :feeAmount
14
+ property :net_amount, :from => :netAmount
15
+ property :extra_amount, :from => :extraAmount
16
+ property :installment_count, :from => :installmentCount
17
+
18
+ property :item_count, :from => :itemCount
19
+ property :items
20
+ property :sender
21
+ property :shipping
22
+ property :last_event_date, :from => :lastEventDate
23
+ property :escrow_end_date, :from => :escrowEndDate
24
+
25
+ def status
26
+ Transaction::Payment::Status[self.status]
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,68 @@
1
+ # encoding: utf-8
2
+
3
+ module PagseguroV2
4
+ module Transaction
5
+ module Payment
6
+ CODES = {
7
+ 101 => "Cartão de crédito Visa",
8
+ 102 => "Cartão de crédito MasterCard",
9
+ 103 => "Cartão de crédito American Express",
10
+ 104 => "Cartão de crédito Diners",
11
+ 105 => "Cartão de crédito Hipercard",
12
+ 106 => "Cartão de crédito Aura",
13
+ 107 => "Cartão de crédito Elo",
14
+ 108 => 'Cartão de crédito PLENOCard',
15
+ 109 => 'Cartão de crédito PersonalCard',
16
+ 110 => 'Cartão de crédito JCB',
17
+ 111 => 'Cartão de crédito Discover',
18
+ 112 => 'Cartão de crédito BrasilCard',
19
+ 113 => 'Cartão de crédito FORTBRASIL',
20
+ 201 => "Boleto Bradesco",
21
+ 202 => "Boleto Santander",
22
+ 301 => "Débito online Bradesco",
23
+ 302 => "Débito online Itaú",
24
+ 303 => "Débito online Unibanco",
25
+ 304 => "Débito online Banco do Brasil",
26
+ 305 => "Débito online Banco Real",
27
+ 306 => "Débito online Banrisul",
28
+ 307 => 'Débito online HSBC',
29
+ 401 => "Saldo PagSeguro",
30
+ 501 => "Oi Paggo"
31
+ }
32
+
33
+ TYPES = {
34
+ 1 => :credit_card,
35
+ 2 => :invoice,
36
+ 3 => :online_transfer,
37
+ 4 => :pagseguro,
38
+ 5 => :oi_paggo
39
+ }
40
+
41
+ TYPES_STRINGS = {
42
+ credit_card: 'Cartão de crédito',
43
+ invoice: 'Boleto',
44
+ online_transfer: 'Débito online (TEF)',
45
+ pagseguro: 'Saldo PagSeguro',
46
+ oi_paggo: 'Oi Paggo',
47
+ }
48
+
49
+ STATUS = {
50
+ 1 => :pending,
51
+ 2 => :verifying,
52
+ 3 => :approved,
53
+ 4 => :completed,
54
+ 5 => :completed,
55
+ 6 => :dispute,
56
+ 7 => :canceled
57
+ }
58
+
59
+ #1 Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.
60
+ #2 Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.
61
+ #3 Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.
62
+ #4 Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.
63
+ #5 Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.
64
+ #6 Devolvida: o valor da transação foi devolvido para o comprador.
65
+ #7 Cancelada: a transação foi cancelada sem ter sido finalizada.
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ module PagseguroV2
3
+ module Transaction
4
+ module Shipping
5
+ TYPES = {
6
+ normal: 1 ,
7
+ express: 2,
8
+ other: 3
9
+ }
10
+
11
+ TYPES_STRINGS = {
12
+ normal: "Encomenda normal (PAC)",
13
+ express: "SEDEX",
14
+ other: "Tipo de frete não especificado"
15
+ }
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,23 @@
1
+ module PagseguroV2
2
+ module Transaction
3
+ module Types
4
+ TYPES = {
5
+ payment: 1,
6
+ transfer: 2,
7
+ fund_addition: 3,
8
+ withdraw: 4,
9
+ charge: 5,
10
+ donation: 6,
11
+ bonus: 7,
12
+ bonus_repass: 8,
13
+ operational: 9,
14
+ political_donation: 10
15
+ }
16
+
17
+ TYPES_STRINGS = {
18
+ payment: 'Pagamento',
19
+ transfer: 'Tranferencia',
20
+ }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module PagseguroV2
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "pagseguro_v2/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "pagseguro_v2"
7
+ s.version = PagseguroV2::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Cirdes Henrique", "Thiago Diniz"]
10
+ s.email = ["oi@eventick.com.br"]
11
+ s.homepage = "http://github.com/eventick/pagseguro_v2"
12
+ s.summary = %q{Ruby gem for interfacing with Pagseguro V2 API. By http://eventick.co}
13
+ s.description = %q{Ruby gem for interfacing with Pagseguro V2 API.}
14
+
15
+ s.rubyforge_project = "pagseguro_v2"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency('nokogiri')
23
+ s.add_development_dependency "rspec", "~> 2.10.0"
24
+ s.add_runtime_dependency "hashie", '>= 1.2.0'
25
+ s.add_runtime_dependency "httparty"
26
+ s.add_runtime_dependency "builder"
27
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe PagseguroV2::Checkout do
4
+ before do
5
+ @checkout = PagseguroV2::Checkout.new
6
+ @product = {:price => 9.90, :description => "Ruby 1.9 PDF", :id => 1}
7
+ end
8
+
9
+ it "should set order id when instantiating object" do
10
+ @checkout = PagseguroV2::Checkout.new("ABCDEF")
11
+ @checkout.id.should == "ABCDEF"
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ require 'rspec'
2
+ require 'pagseguro_v2'
3
+
4
+ RSpec.configure do |config|
5
+ config.color_enabled = true
6
+ config.formatter = 'documentation'
7
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pagseguro_v2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Cirdes Henrique
9
+ - Thiago Diniz
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2012-06-12 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ requirement: &87329740 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *87329740
26
+ - !ruby/object:Gem::Dependency
27
+ name: rspec
28
+ requirement: &87329220 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.10.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *87329220
37
+ - !ruby/object:Gem::Dependency
38
+ name: hashie
39
+ requirement: &87328940 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 1.2.0
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *87328940
48
+ - !ruby/object:Gem::Dependency
49
+ name: httparty
50
+ requirement: &87328720 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *87328720
59
+ - !ruby/object:Gem::Dependency
60
+ name: builder
61
+ requirement: &87328370 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ! '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ type: :runtime
68
+ prerelease: false
69
+ version_requirements: *87328370
70
+ description: Ruby gem for interfacing with Pagseguro V2 API.
71
+ email:
72
+ - oi@eventick.com.br
73
+ executables: []
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - .gitignore
78
+ - Gemfile
79
+ - Gemfile.lock
80
+ - README.md
81
+ - Rakefile
82
+ - lib/pagseguro_v2.rb
83
+ - lib/pagseguro_v2/address.rb
84
+ - lib/pagseguro_v2/checkout.rb
85
+ - lib/pagseguro_v2/client.rb
86
+ - lib/pagseguro_v2/config.rb
87
+ - lib/pagseguro_v2/errors/invalid_data.rb
88
+ - lib/pagseguro_v2/errors/unauthorized.rb
89
+ - lib/pagseguro_v2/errors/unknown_error.rb
90
+ - lib/pagseguro_v2/item.rb
91
+ - lib/pagseguro_v2/notification.rb
92
+ - lib/pagseguro_v2/payment_method.rb
93
+ - lib/pagseguro_v2/sender.rb
94
+ - lib/pagseguro_v2/shipping.rb
95
+ - lib/pagseguro_v2/transaction.rb
96
+ - lib/pagseguro_v2/transaction/payment.rb
97
+ - lib/pagseguro_v2/transaction/shipping.rb
98
+ - lib/pagseguro_v2/transaction/types.rb
99
+ - lib/pagseguro_v2/version.rb
100
+ - pagseguro_v2.gemspec
101
+ - spec/pagseguro_v2/checkout_spec.rb
102
+ - spec/spec_helper.rb
103
+ homepage: http://github.com/eventick/pagseguro_v2
104
+ licenses: []
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ requirements: []
122
+ rubyforge_project: pagseguro_v2
123
+ rubygems_version: 1.8.10
124
+ signing_key:
125
+ specification_version: 3
126
+ summary: Ruby gem for interfacing with Pagseguro V2 API. By http://eventick.co
127
+ test_files: []