pagseguro_client 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,19 +22,27 @@ module PagseguroClient
22
22
 
23
23
  @@config[Rails.env]
24
24
  end
25
-
25
+
26
26
  def base_url
27
27
  config["base_url"]
28
28
  end
29
-
29
+
30
30
  def token
31
31
  config["token"]
32
32
  end
33
-
33
+
34
34
  def email
35
35
  config["email"]
36
36
  end
37
37
 
38
+ def payment_url(code)
39
+ "#{base_url}/v2/checkout/payment.html?code=#{code}"
40
+ end
41
+
42
+ def notification_url(code)
43
+ "#{base_url}/v2/transactions/notifications/#{code}"
44
+ end
45
+
38
46
  class MissingEnvironmentError < StandardError; end
39
47
  class MissingConfigurationError < StandardError; end
40
48
  end
@@ -9,7 +9,7 @@ module PagseguroClient
9
9
  4 => :pagseguro,
10
10
  5 => :oi_paggo
11
11
  }
12
-
12
+
13
13
  STATUS = {
14
14
  1 => :pending,
15
15
  2 => :verifying,
@@ -18,38 +18,41 @@ module PagseguroClient
18
18
  6 => :refunded,
19
19
  7 => :canceled
20
20
  }
21
-
22
- attr_accessor :code, :order_id, :order_code, :status, :payment_method
23
-
21
+
22
+ attr_accessor :code, :order_id, :status, :payment_method
23
+
24
24
  def initialize(attributes = {})
25
25
  attributes.each do |name, value|
26
26
  send("#{name}=", value)
27
27
  end
28
28
  end
29
-
29
+
30
+ def self.create_by_xml(xml)
31
+ doc = Nokogiri::XML(xml)
32
+ code = doc.xpath("//transaction/code").text
33
+ order_id = doc.xpath("//reference").text
34
+ status = doc.xpath("//status").text.to_i
35
+ payment_method = doc.xpath("//paymentMethod/type").text.to_i
36
+
37
+ notification = Notification.new(
38
+ code: code,
39
+ order_id: order_id,
40
+ status: STATUS[status],
41
+ payment_method: PAYMENT_METHOD[payment_method]
42
+ )
43
+ end
44
+
30
45
  def self.retrieve(code)
31
- response = RestClient.get("#{PagseguroClient.base_url}/v2/transactions/notifications/#{code}",
46
+ response = RestClient.get(PagseguroClient.notification_url(code),
32
47
  {
33
48
  params: {
34
- email: PagseguroClient.email,
49
+ email: PagseguroClient.email,
35
50
  token: PagseguroClient.token
36
51
  }
37
52
  }
38
53
  )
39
54
 
40
- doc = Nokogiri::XML(response.body)
41
- order_id = doc.xpath("//reference").text
42
- order_code = doc.xpath("//code").text
43
- status = doc.xpath("//status").text.to_i
44
- payment_method = doc.xpath("//paymentMethod/type").text.to_i
45
-
46
- Notification.new(
47
- code: code,
48
- order_id: order_id,
49
- order_code: order_code,
50
- status: STATUS[status],
51
- payment_method: PAYMENT_METHOD[payment_method]
52
- )
55
+ create_by_xml(response.body)
53
56
  end
54
57
  end
55
58
  end
@@ -1,13 +1,13 @@
1
1
  module PagseguroClient
2
2
  class Order
3
-
3
+
4
4
  attr_accessor :id, :products
5
-
5
+
6
6
  def initialize(order_id)
7
7
  self.id = order_id
8
8
  self.products = []
9
9
  end
10
-
10
+
11
11
  # The allowed values are:
12
12
  # - id (Required. Should match the product in your database)
13
13
  # - description (Required. Identifies the product)
@@ -16,7 +16,7 @@ module PagseguroClient
16
16
  def add(options)
17
17
  products.push(options)
18
18
  end
19
-
19
+
20
20
  def data
21
21
  data = {
22
22
  email: PagseguroClient.email,
@@ -31,10 +31,10 @@ module PagseguroClient
31
31
  data["itemAmount#{index}"] = item[:amount]
32
32
  data["itemQuantity#{index}"] = item[:quantity] || 1
33
33
  end
34
-
34
+
35
35
  data
36
36
  end
37
-
37
+
38
38
  # Send a new payment request to Pagseguro
39
39
  # Returns the URL to redirect your user to complete the payment in Pagseguro
40
40
  def send_request
@@ -45,7 +45,7 @@ module PagseguroClient
45
45
 
46
46
  {
47
47
  code: code,
48
- url: "#{PagseguroClient.base_url}/v2/checkout/payment.html?code=#{code}"
48
+ url: PagseguroClient.payment_url(code)
49
49
  }
50
50
  end
51
51
  end
@@ -1,3 +1,3 @@
1
1
  module PagseguroClient
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = PagseguroClient::VERSION
8
8
  s.authors = ["Matheus Tardivo"]
9
9
  s.email = ["matheustardivo@gmail.com"]
10
- s.homepage = ""
10
+ s.homepage = "https://github.com/matheustardivo/pagseguro_client"
11
11
  s.summary = %q{The library to access the new services from Pagseguro (v2)}
12
12
  s.description = s.summary
13
13
 
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_development_dependency "rspec-rails" , "~> 2.7"
21
+ s.add_development_dependency "rspec-rails" , "~> 2.9"
22
22
  s.add_development_dependency "rails" , "~> 3.2"
23
23
  s.add_development_dependency "rake" , "~> 0.9"
24
24
  s.add_development_dependency "sqlite3" , "~> 1.3"
@@ -0,0 +1,11 @@
1
+ require "spec_helper"
2
+
3
+ describe "Base" do
4
+ it "should return the payment url" do
5
+ PagseguroClient.payment_url("XPTO").should == "#{PagseguroClient.base_url}/v2/checkout/payment.html?code=XPTO"
6
+ end
7
+
8
+ it "should return the notification url" do
9
+ PagseguroClient.notification_url("XPTO").should == "#{PagseguroClient.base_url}/v2/transactions/notifications/XPTO"
10
+ end
11
+ end
@@ -1,5 +1,17 @@
1
1
  require "spec_helper"
2
2
 
3
- describe PagseguroClient::Notification do
4
-
3
+ module PagseguroClient
4
+ describe Notification do
5
+ context "parse notification xml" do
6
+ subject {
7
+ Notification.create_by_xml(File.read("spec/support/notification.xml"))
8
+ }
9
+
10
+ # attr_accessor :code, :order_id, :status, :payment_method
11
+ its(:code) { should == "9E884542-81B3-4419-9A75-BCC6FB495EF1" }
12
+ its(:order_id) { should == "REF1234" }
13
+ its(:status) { should == :approved }
14
+ its(:payment_method) { should == :credit_card }
15
+ end
16
+ end
5
17
  end
@@ -1,34 +1,42 @@
1
1
  require "spec_helper"
2
2
 
3
- describe PagseguroClient::Order do
4
-
5
- it "should set order id when instantiating object" do
6
- order = PagseguroClient::Order.new("ABCDEF")
7
- order.id.should == "ABCDEF"
8
- end
9
-
10
- it "should add product" do
11
- order = PagseguroClient::Order.new("John Doe")
12
- order.add(id: "1", description: "Description", amount: 199)
13
- order.products.should_not be_empty
14
- order.products.size.should == 1
15
- order.products.first[:id].should == "1"
16
- end
17
-
18
- it "should set order product data" do
19
- order = PagseguroClient::Order.new("John Doe")
20
- order.add(id: "1", description: "Description", amount: 199)
21
- order.add(id: "2", description: "Description", amount: 199)
22
- order.add(id: "3", description: "Description", amount: 199)
23
-
24
- data = order.data
25
- data.keys.include?("itemId1").should be_true
26
- data.keys.include?("itemId2").should be_true
27
- data.keys.include?("itemId3").should be_true
28
-
29
- data["itemId1"].should == "1"
30
- data["itemId2"].should == "2"
31
- data["itemId3"].should == "3"
3
+ module PagseguroClient
4
+ describe Order do
5
+
6
+ context "order with id" do
7
+ subject {
8
+ Order.new("ABCDEF")
9
+ }
10
+
11
+ its(:id) { should == "ABCDEF" }
12
+ end
13
+
14
+ context "order with attributes and products" do
15
+ subject {
16
+ order = Order.new("John Doe")
17
+ order.add(id: "1", description: "Description", amount: 199)
18
+ order
19
+ }
20
+
21
+ it "should add product" do
22
+ subject.products.should_not be_empty
23
+ subject.products.size.should == 1
24
+ subject.products.first[:id].should == "1"
25
+ end
26
+
27
+ it "should set order product data" do
28
+ subject.add(id: "2", description: "Description", amount: 199)
29
+ subject.add(id: "3", description: "Description", amount: 199)
30
+
31
+ data = subject.data
32
+ data.keys.include?("itemId1").should be_true
33
+ data.keys.include?("itemId2").should be_true
34
+ data.keys.include?("itemId3").should be_true
35
+
36
+ data["itemId1"].should == "1"
37
+ data["itemId2"].should == "2"
38
+ data["itemId3"].should == "3"
39
+ end
40
+ end
32
41
  end
33
-
34
42
  end
@@ -1,4 +1,2 @@
1
1
  PagSeguroClient::Application.routes.draw do
2
- get "dashboard", :to => "dashboard#index"
3
- get "login", :to => "session#new"
4
2
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagseguro_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,27 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-19 00:00:00.000000000 Z
12
+ date: 2012-05-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec-rails
16
- requirement: &70144902931820 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '2.7'
21
+ version: '2.9'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70144902931820
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '2.9'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rails
27
- requirement: &70144902931020 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '3.2'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70144902931020
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '3.2'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rake
38
- requirement: &70144902930560 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0.9'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70144902930560
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: sqlite3
49
- requirement: &70144902930100 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '1.3'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70144902930100
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.3'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: nokogiri
60
- requirement: &70144902945860 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ~>
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '1.5'
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70144902945860
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.5'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rest-client
71
- requirement: &70144902945020 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ~>
@@ -76,7 +101,12 @@ dependencies:
76
101
  version: '1.6'
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *70144902945020
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: '1.6'
80
110
  description: The library to access the new services from Pagseguro (v2)
81
111
  email:
82
112
  - matheustardivo@gmail.com
@@ -85,7 +115,6 @@ extensions: []
85
115
  extra_rdoc_files: []
86
116
  files:
87
117
  - .gitignore
88
- - .rbenv-gemsets
89
118
  - .rspec
90
119
  - Gemfile
91
120
  - README.markdown
@@ -96,14 +125,11 @@ files:
96
125
  - lib/pagseguro_client/order.rb
97
126
  - lib/pagseguro_client/version.rb
98
127
  - pagseguro_client.gemspec
128
+ - spec/pagseguro_client/base_spec.rb
99
129
  - spec/pagseguro_client/notification_spec.rb
100
130
  - spec/pagseguro_client/order_spec.rb
101
131
  - spec/spec_helper.rb
102
132
  - spec/support/app/controllers/application_controller.rb
103
- - spec/support/app/models/account.rb
104
- - spec/support/app/models/user.rb
105
- - spec/support/app/views/dashboard/index.erb
106
- - spec/support/app/views/session/new.erb
107
133
  - spec/support/config/boot.rb
108
134
  - spec/support/config/database.yml
109
135
  - spec/support/config/pagseguro.yml
@@ -111,7 +137,7 @@ files:
111
137
  - spec/support/log/.gitkeep
112
138
  - spec/support/log/test.log
113
139
  - spec/support/notification.xml
114
- homepage: ''
140
+ homepage: https://github.com/matheustardivo/pagseguro_client
115
141
  licenses: []
116
142
  post_install_message:
117
143
  rdoc_options: []
@@ -131,19 +157,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
157
  version: '0'
132
158
  requirements: []
133
159
  rubyforge_project: pagseguro_client
134
- rubygems_version: 1.8.11
160
+ rubygems_version: 1.8.23
135
161
  signing_key:
136
162
  specification_version: 3
137
163
  summary: The library to access the new services from Pagseguro (v2)
138
164
  test_files:
165
+ - spec/pagseguro_client/base_spec.rb
139
166
  - spec/pagseguro_client/notification_spec.rb
140
167
  - spec/pagseguro_client/order_spec.rb
141
168
  - spec/spec_helper.rb
142
169
  - spec/support/app/controllers/application_controller.rb
143
- - spec/support/app/models/account.rb
144
- - spec/support/app/models/user.rb
145
- - spec/support/app/views/dashboard/index.erb
146
- - spec/support/app/views/session/new.erb
147
170
  - spec/support/config/boot.rb
148
171
  - spec/support/config/database.yml
149
172
  - spec/support/config/pagseguro.yml
data/.rbenv-gemsets DELETED
@@ -1 +0,0 @@
1
- pagseguro_client
@@ -1,2 +0,0 @@
1
- class Account < ActiveRecord::Base
2
- end
@@ -1,3 +0,0 @@
1
- class User < ActiveRecord::Base
2
- authentication
3
- end
File without changes
File without changes