realex 0.3.5 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,33 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ builder (3.0.0)
5
+ diff-lcs (1.1.3)
6
+ git (1.2.5)
7
+ jeweler (1.8.3)
8
+ bundler (~> 1.0)
9
+ git (>= 1.2.5)
10
+ rake
11
+ rdoc
12
+ json (1.6.5)
13
+ nokogiri (1.5.2)
14
+ rake (0.9.2.2)
15
+ rdoc (3.12)
16
+ json (~> 1.4)
17
+ rspec (2.6.0)
18
+ rspec-core (~> 2.6.0)
19
+ rspec-expectations (~> 2.6.0)
20
+ rspec-mocks (~> 2.6.0)
21
+ rspec-core (2.6.4)
22
+ rspec-expectations (2.6.0)
23
+ diff-lcs (~> 1.1.2)
24
+ rspec-mocks (2.6.0)
25
+
26
+ PLATFORMS
27
+ ruby
28
+
29
+ DEPENDENCIES
30
+ builder
31
+ jeweler
32
+ nokogiri
33
+ rspec (~> 2.6.0)
data/Rakefile CHANGED
@@ -25,7 +25,7 @@ begin
25
25
  gemspec.email = "paul@rslw.com"
26
26
  gemspec.homepage = "http://github.com/paulca/realex"
27
27
  gemspec.authors = ["Paul Campbell"]
28
- gemspec.version = "0.3.5"
28
+ gemspec.version = "0.4"
29
29
  gemspec.add_dependency 'nokogiri', '~> 1.4'
30
30
  end
31
31
  rescue LoadError
@@ -20,7 +20,7 @@ module RealEx
20
20
  per.payer(:type => type, :ref => reference) do |payer|
21
21
  payer.title title
22
22
  payer.firstname firstname
23
- payer.lastname lastname
23
+ payer.surname lastname
24
24
  payer.company company
25
25
  payer.address do |add|
26
26
  add.line1 address.line1
@@ -85,10 +85,13 @@ module RealEx
85
85
  per.card do |c|
86
86
  c.ref reference
87
87
  c.payerref payer.reference
88
- c.number card.number
89
- c.expdate card.expiry_date
90
- c.chname card.cardholder_name
91
- c.type card.type
88
+
89
+ if !self.cancel
90
+ c.number card.number
91
+ c.expdate card.expiry_date
92
+ c.chname card.cardholder_name
93
+ c.type card.type
94
+ end
92
95
  end
93
96
  end
94
97
  end
@@ -156,11 +159,34 @@ module RealEx
156
159
  end
157
160
 
158
161
  # timesttimestamp.merchantid.orderid.amount.currency.payerref
162
+ def hash
163
+ RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, amount, currency, payer.reference])
164
+ end
165
+ end
166
+
167
+ class Refund < Transaction
168
+ attributes :payer, :reference
169
+
170
+ def request_type
171
+ 'payment-out'
172
+ end
173
+
174
+ def to_xml
175
+ super do |per|
176
+ per.amount(amount, :currency => currency)
177
+ per.payerref payer.reference
178
+ per.paymentmethod reference
179
+ per.refundhash refund_hash
180
+ end
181
+ end
182
+
159
183
  def hash
160
184
  RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, amount, currency, payer.reference])
161
185
  end
162
186
 
187
+ def refund_hash
188
+ Digest::SHA1.hexdigest(RealEx::Config.refund_password)
189
+ end
163
190
  end
164
-
165
191
  end
166
192
  end
@@ -9,7 +9,8 @@ module RealEx
9
9
 
10
10
  attributes :timestamp, :result, :message, :orderid, :merchantid, :account,
11
11
  :cvnresult, :avspostcoderesponse, :pasref, :timetaken,
12
- :authtimetaken, :batchid, :avsaddressresponse, :cardissuer
12
+ :authtimetaken, :batchid, :avsaddressresponse, :cardissuer,
13
+ :authcode
13
14
 
14
15
  def self.new_from_xml(xml)
15
16
  parsed_xml = xml.kind_of?(String) ? Nokogiri.XML(xml) : xml
@@ -26,6 +27,7 @@ module RealEx
26
27
  r.batchid = (parsed_xml).at('batchid').inner_html if (parsed_xml).at('batchid')
27
28
  r.pasref = (parsed_xml).at('pasref').inner_html if (parsed_xml).at('pasref')
28
29
  r.timetaken = (parsed_xml).at('timetaken').inner_html if (parsed_xml).at('timetaken')
30
+ r.authcode = (parsed_xml).at('authcode').inner_html if (parsed_xml).at('authcode')
29
31
  r.authtimetaken = (parsed_xml).at('authtimetaken').inner_html if (parsed_xml).at('authtimetaken')
30
32
  if cardissuer = (parsed_xml).at('cardissuer')
31
33
  r.cardissuer = CardIssuer.new()
@@ -4,19 +4,20 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{realex}
8
- s.version = "0.3.5"
7
+ s.name = "realex"
8
+ s.version = "0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Paul Campbell}]
12
- s.date = %q{2011-07-27}
13
- s.description = %q{A Ruby library to make use of the payments API at http://realexpayments.com}
14
- s.email = %q{paul@rslw.com}
11
+ s.authors = ["Paul Campbell"]
12
+ s.date = "2012-03-15"
13
+ s.description = "A Ruby library to make use of the payments API at http://realexpayments.com"
14
+ s.email = "paul@rslw.com"
15
15
  s.extra_rdoc_files = [
16
16
  "README.md"
17
17
  ]
18
18
  s.files = [
19
19
  "Gemfile",
20
+ "Gemfile.lock",
20
21
  "README.md",
21
22
  "Rakefile",
22
23
  "lib/real_ex/address.rb",
@@ -39,20 +40,10 @@ Gem::Specification.new do |s|
39
40
  "spec/spec_helper.rb",
40
41
  "spec/transaction_spec.rb"
41
42
  ]
42
- s.homepage = %q{http://github.com/paulca/realex}
43
- s.require_paths = [%q{lib}]
44
- s.rubygems_version = %q{1.8.5}
45
- s.summary = %q{Ruby interface to http://realexpayments.com}
46
- s.test_files = [
47
- "spec/address_spec.rb",
48
- "spec/card_spec.rb",
49
- "spec/config_spec.rb",
50
- "spec/real_ex_spec.rb",
51
- "spec/recurring_spec.rb",
52
- "spec/response_spec.rb",
53
- "spec/spec_helper.rb",
54
- "spec/transaction_spec.rb"
55
- ]
43
+ s.homepage = "http://github.com/paulca/realex"
44
+ s.require_paths = ["lib"]
45
+ s.rubygems_version = "1.8.15"
46
+ s.summary = "Ruby interface to http://realexpayments.com"
56
47
 
57
48
  if s.respond_to? :specification_version then
58
49
  s.specification_version = 3
@@ -5,6 +5,7 @@ describe "RealEx::Recurring" do
5
5
  RealEx::Config.merchant_id = 'paul'
6
6
  RealEx::Config.shared_secret = "He's not dead, he's just asleep!"
7
7
  RealEx::Config.account = 'internet'
8
+ RealEx::Config.refund_password = 'password'
8
9
 
9
10
  @card = RealEx::Card.new(
10
11
  :number => '4111111111111111',
@@ -25,16 +26,23 @@ describe "RealEx::Recurring" do
25
26
  :currency => 'EUR',
26
27
  :autosettle => true
27
28
  )
29
+ @refund = RealEx::Recurring::Refund.new(
30
+ :payer => @payer,
31
+ :amount => 500,
32
+ :order_id => 1234,
33
+ :currency => 'EUR',
34
+ :autosettle => true
35
+ )
28
36
  RealEx::Client.stub!(:timestamp).and_return('20090326160218')
29
37
  end
30
38
 
31
39
  it "should create tasty XML for the payer" do
32
- @payer.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"payer-new\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <payer type=\"Business\" ref=\"boom\">\n <title>Mr.</title>\n <firstname>Paul</firstname>\n <lastname>Campbell</lastname>\n <company>Contrast</company>\n <address>\n <line1>My house</line1>\n <line1></line1>\n <line3></line3>\n <city>Dublin</city>\n <county>Dublin</county>\n <postcode>Dublin 2</postcode>\n <country country_code=\"IE\">Ireland</country>\n </address>\n <phonenumbers>\n <home>1</home>\n <work>2</work>\n <fax>3</fax>\n <mobile>4</mobile>\n </phonenumbers>\n <email>paul@contrast.ie</email>\n </payer>\n <sha1hash>7e97b1b743c2599b6c1fd0c5515d369d8372df15</sha1hash>\n</request>\n"
40
+ @payer.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"payer-new\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <payer type=\"Business\" ref=\"boom\">\n <title>Mr.</title>\n <firstname>Paul</firstname>\n <surname>Campbell</surname>\n <company>Contrast</company>\n <address>\n <line1>My house</line1>\n <line1></line1>\n <line3></line3>\n <city>Dublin</city>\n <county>Dublin</county>\n <postcode>Dublin 2</postcode>\n <country country_code=\"IE\">Ireland</country>\n </address>\n <phonenumbers>\n <home>1</home>\n <work>2</work>\n <fax>3</fax>\n <mobile>4</mobile>\n </phonenumbers>\n <email>paul@contrast.ie</email>\n </payer>\n <sha1hash>7e97b1b743c2599b6c1fd0c5515d369d8372df15</sha1hash>\n</request>\n"
33
41
  end
34
42
 
35
43
  it "should create tasty XML for the payer update" do
36
44
  @payer.update = true
37
- @payer.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"payer-edit\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <payer type=\"Business\" ref=\"boom\">\n <title>Mr.</title>\n <firstname>Paul</firstname>\n <lastname>Campbell</lastname>\n <company>Contrast</company>\n <address>\n <line1>My house</line1>\n <line1></line1>\n <line3></line3>\n <city>Dublin</city>\n <county>Dublin</county>\n <postcode>Dublin 2</postcode>\n <country country_code=\"IE\">Ireland</country>\n </address>\n <phonenumbers>\n <home>1</home>\n <work>2</work>\n <fax>3</fax>\n <mobile>4</mobile>\n </phonenumbers>\n <email>paul@contrast.ie</email>\n </payer>\n <sha1hash>7e97b1b743c2599b6c1fd0c5515d369d8372df15</sha1hash>\n</request>\n"
45
+ @payer.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"payer-edit\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <payer type=\"Business\" ref=\"boom\">\n <title>Mr.</title>\n <firstname>Paul</firstname>\n <surname>Campbell</surname>\n <company>Contrast</company>\n <address>\n <line1>My house</line1>\n <line1></line1>\n <line3></line3>\n <city>Dublin</city>\n <county>Dublin</county>\n <postcode>Dublin 2</postcode>\n <country country_code=\"IE\">Ireland</country>\n </address>\n <phonenumbers>\n <home>1</home>\n <work>2</work>\n <fax>3</fax>\n <mobile>4</mobile>\n </phonenumbers>\n <email>paul@contrast.ie</email>\n </payer>\n <sha1hash>7e97b1b743c2599b6c1fd0c5515d369d8372df15</sha1hash>\n</request>\n"
38
46
  end
39
47
 
40
48
  it "should create lovely XML for the card" do
@@ -48,12 +56,16 @@ describe "RealEx::Recurring" do
48
56
 
49
57
  it "should create lovely XML for the card cancel" do
50
58
  @card.cancel = true
51
- @card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"card-cancel-card\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <card>\n <ref>billabong</ref>\n <payerref>boom</payerref>\n <number>4111111111111111</number>\n <expdate>0802</expdate>\n <chname>Paul Campbell</chname>\n <type>VISA</type>\n </card>\n <sha1hash>d21f7cb5de344456c235d93b5f7c311bb70069ea</sha1hash>\n</request>\n"
59
+ @card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"card-cancel-card\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid></orderid>\n <account>internet</account>\n <card>\n <ref>billabong</ref>\n <payerref>boom</payerref>\n </card>\n <sha1hash>d21f7cb5de344456c235d93b5f7c311bb70069ea</sha1hash>\n</request>\n"
52
60
  end
53
61
 
54
62
  it "should create tasty XML for the authorization" do
55
63
  @transaction.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"receipt-in\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid>1234</orderid>\n <account>internet</account>\n <amount currency=\"EUR\">500</amount>\n <payerref>boom</payerref>\n <paymentmethod></paymentmethod>\n <sha1hash>ec3afd1714b4473210c2b1eda0c6675bd13c411b</sha1hash>\n</request>\n"
56
64
  end
65
+
66
+ it "should create tasty XML for the refund" do
67
+ @refund.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"payment-out\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid>1234</orderid>\n <account>internet</account>\n <amount currency=\"EUR\">500</amount>\n <payerref>boom</payerref>\n <paymentmethod></paymentmethod>\n <refundhash>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</refundhash>\n <sha1hash>ec3afd1714b4473210c2b1eda0c6675bd13c411b</sha1hash>\n</request>\n"
68
+ end
57
69
  end
58
70
 
59
71
  describe "RealEx::Recurring without a full address" do
@@ -62,6 +62,7 @@ describe "RealEx::Response" do
62
62
  @response.message.should == '[ test system ] Authorised 171616'
63
63
  @response.pasref.should == '12380877763476'
64
64
  @response.timetaken.should == '1'
65
+ @response.authcode.should== "171616"
65
66
  @response.authtimetaken.should == '0'
66
67
  @response.cardissuer.country.should == 'IRELAND'
67
68
  @response.cardissuer.countrycode.should == 'IE'
metadata CHANGED
@@ -1,89 +1,69 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: realex
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.4'
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 5
10
- version: 0.3.5
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Paul Campbell
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-27 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- version_requirements: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-03-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: &70166167360980 !ruby/object:Gem::Requirement
22
17
  none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 3
27
- segments:
28
- - 0
29
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
30
22
  type: :runtime
31
- requirement: *id001
32
23
  prerelease: false
33
- name: nokogiri
34
- - !ruby/object:Gem::Dependency
35
- version_requirements: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70166167360980
25
+ - !ruby/object:Gem::Dependency
26
+ name: builder
27
+ requirement: &70166167360460 !ruby/object:Gem::Requirement
36
28
  none: false
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- hash: 3
41
- segments:
42
- - 0
43
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
44
33
  type: :runtime
45
- requirement: *id002
46
34
  prerelease: false
47
- name: builder
48
- - !ruby/object:Gem::Dependency
49
- version_requirements: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70166167360460
36
+ - !ruby/object:Gem::Dependency
37
+ name: jeweler
38
+ requirement: &70166167359960 !ruby/object:Gem::Requirement
50
39
  none: false
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
56
- - 0
57
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
58
44
  type: :development
59
- requirement: *id003
60
45
  prerelease: false
61
- name: jeweler
62
- - !ruby/object:Gem::Dependency
63
- version_requirements: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70166167359960
47
+ - !ruby/object:Gem::Dependency
48
+ name: nokogiri
49
+ requirement: &70166167359440 !ruby/object:Gem::Requirement
64
50
  none: false
65
- requirements:
51
+ requirements:
66
52
  - - ~>
67
- - !ruby/object:Gem::Version
68
- hash: 7
69
- segments:
70
- - 1
71
- - 4
72
- version: "1.4"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.4'
73
55
  type: :runtime
74
- requirement: *id004
75
56
  prerelease: false
76
- name: nokogiri
57
+ version_requirements: *70166167359440
77
58
  description: A Ruby library to make use of the payments API at http://realexpayments.com
78
59
  email: paul@rslw.com
79
60
  executables: []
80
-
81
61
  extensions: []
82
-
83
- extra_rdoc_files:
62
+ extra_rdoc_files:
84
63
  - README.md
85
- files:
64
+ files:
86
65
  - Gemfile
66
+ - Gemfile.lock
87
67
  - README.md
88
68
  - Rakefile
89
69
  - lib/real_ex/address.rb
@@ -107,43 +87,26 @@ files:
107
87
  - spec/transaction_spec.rb
108
88
  homepage: http://github.com/paulca/realex
109
89
  licenses: []
110
-
111
90
  post_install_message:
112
91
  rdoc_options: []
113
-
114
- require_paths:
92
+ require_paths:
115
93
  - lib
116
- required_ruby_version: !ruby/object:Gem::Requirement
94
+ required_ruby_version: !ruby/object:Gem::Requirement
117
95
  none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- hash: 3
122
- segments:
123
- - 0
124
- version: "0"
125
- required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
101
  none: false
127
- requirements:
128
- - - ">="
129
- - !ruby/object:Gem::Version
130
- hash: 3
131
- segments:
132
- - 0
133
- version: "0"
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
134
106
  requirements: []
135
-
136
107
  rubyforge_project:
137
- rubygems_version: 1.8.5
108
+ rubygems_version: 1.8.15
138
109
  signing_key:
139
110
  specification_version: 3
140
111
  summary: Ruby interface to http://realexpayments.com
141
- test_files:
142
- - spec/address_spec.rb
143
- - spec/card_spec.rb
144
- - spec/config_spec.rb
145
- - spec/real_ex_spec.rb
146
- - spec/recurring_spec.rb
147
- - spec/response_spec.rb
148
- - spec/spec_helper.rb
149
- - spec/transaction_spec.rb
112
+ test_files: []