realex 0.4 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/Rakefile +1 -1
- data/lib/real_ex/recurring.rb +40 -36
- data/lib/real_ex/transaction.rb +7 -6
- data/realex.gemspec +3 -3
- data/spec/recurring_spec.rb +29 -7
- data/spec/transaction_spec.rb +12 -0
- metadata +42 -19
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
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.4"
|
28
|
+
gemspec.version = "0.4.1"
|
29
29
|
gemspec.add_dependency 'nokogiri', '~> 1.4'
|
30
30
|
end
|
31
31
|
rescue LoadError
|
data/lib/real_ex/recurring.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
module RealEx
|
2
2
|
module Recurring
|
3
|
-
|
3
|
+
|
4
4
|
class Transaction < RealEx::Transaction
|
5
5
|
def authorize!
|
6
6
|
RealEx::Response.new_from_xml(RealEx::Client.call(real_vault_uri, to_xml))
|
7
7
|
end
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
class Payer < Transaction
|
11
11
|
attributes :type, :reference, :title, :firstname, :lastname, :address, :company, :comments
|
12
12
|
attributes :update
|
13
|
-
|
13
|
+
|
14
14
|
def request_type
|
15
15
|
@request_type = update == true ? 'payer-edit' : 'payer-new'
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def to_xml
|
19
19
|
super do |per|
|
20
20
|
per.payer(:type => type, :ref => reference) do |payer|
|
@@ -22,27 +22,31 @@ module RealEx
|
|
22
22
|
payer.firstname firstname
|
23
23
|
payer.surname lastname
|
24
24
|
payer.company company
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
payer.phonenumbers do |numbers|
|
36
|
-
numbers.home address.phone_numbers[:home]
|
37
|
-
numbers.work address.phone_numbers[:work]
|
38
|
-
numbers.fax address.phone_numbers[:fax]
|
39
|
-
numbers.mobile address.phone_numbers[:mobile]
|
25
|
+
|
26
|
+
unless address.nil?
|
27
|
+
payer.address do |add|
|
28
|
+
add.line1 address.line1
|
29
|
+
add.line1 address.line2
|
30
|
+
add.line3 address.line3
|
31
|
+
add.city address.city
|
32
|
+
add.county address.county
|
33
|
+
add.postcode address.post_code
|
34
|
+
add.country(address.country, :country_code => address.country_code)
|
40
35
|
end
|
36
|
+
if address.phone_numbers.kind_of?(Hash)
|
37
|
+
payer.phonenumbers do |numbers|
|
38
|
+
numbers.home address.phone_numbers[:home]
|
39
|
+
numbers.work address.phone_numbers[:work]
|
40
|
+
numbers.fax address.phone_numbers[:fax]
|
41
|
+
numbers.mobile address.phone_numbers[:mobile]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
payer.email address.email
|
41
45
|
end
|
42
|
-
|
46
|
+
|
43
47
|
if !comments.empty?
|
44
48
|
payer.comments do |c|
|
45
|
-
comments.each_with_index do |i
|
49
|
+
comments.each_with_index do |comment,i|
|
46
50
|
c.comment(comment, :id => i + 1)
|
47
51
|
end
|
48
52
|
end
|
@@ -55,18 +59,18 @@ module RealEx
|
|
55
59
|
def hash
|
56
60
|
RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, '', '', reference])
|
57
61
|
end
|
58
|
-
|
62
|
+
|
59
63
|
def save!
|
60
64
|
authorize!
|
61
65
|
end
|
62
|
-
|
66
|
+
|
63
67
|
def update!
|
64
68
|
self.update = true
|
65
69
|
authorize!
|
66
70
|
end
|
67
71
|
|
68
72
|
end
|
69
|
-
|
73
|
+
|
70
74
|
class Card < Transaction
|
71
75
|
attributes :card, :payer, :update, :reference, :cancel
|
72
76
|
|
@@ -79,7 +83,7 @@ module RealEx
|
|
79
83
|
@request_type = 'card-new'
|
80
84
|
end
|
81
85
|
end
|
82
|
-
|
86
|
+
|
83
87
|
def to_xml
|
84
88
|
super do |per|
|
85
89
|
per.card do |c|
|
@@ -95,7 +99,7 @@ module RealEx
|
|
95
99
|
end
|
96
100
|
end
|
97
101
|
end
|
98
|
-
|
102
|
+
|
99
103
|
# 20030516181127.yourmerchantid.uniqueid…smithj01.John Smith.498843******9991
|
100
104
|
def hash
|
101
105
|
if cancel
|
@@ -106,11 +110,11 @@ module RealEx
|
|
106
110
|
RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, '', '', payer.reference,card.cardholder_name,card.number])
|
107
111
|
end
|
108
112
|
end
|
109
|
-
|
113
|
+
|
110
114
|
def save!
|
111
115
|
authorize!
|
112
116
|
end
|
113
|
-
|
117
|
+
|
114
118
|
def update!
|
115
119
|
self.update = true
|
116
120
|
authorize!
|
@@ -122,15 +126,15 @@ module RealEx
|
|
122
126
|
end
|
123
127
|
|
124
128
|
end
|
125
|
-
|
129
|
+
|
126
130
|
class Authorization < Transaction
|
127
131
|
attributes :payer, :reference, :customer_number, :variable_reference, :product_id
|
128
132
|
attributes :billing_address, :shipping_address
|
129
|
-
|
133
|
+
|
130
134
|
def request_type
|
131
135
|
'receipt-in'
|
132
136
|
end
|
133
|
-
|
137
|
+
|
134
138
|
def to_xml
|
135
139
|
super do |per|
|
136
140
|
per.amount(amount, :currency => currency)
|
@@ -157,13 +161,13 @@ module RealEx
|
|
157
161
|
end
|
158
162
|
end
|
159
163
|
end
|
160
|
-
|
164
|
+
|
161
165
|
# timesttimestamp.merchantid.orderid.amount.currency.payerref
|
162
166
|
def hash
|
163
167
|
RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, amount, currency, payer.reference])
|
164
|
-
end
|
168
|
+
end
|
165
169
|
end
|
166
|
-
|
170
|
+
|
167
171
|
class Refund < Transaction
|
168
172
|
attributes :payer, :reference
|
169
173
|
|
@@ -183,10 +187,10 @@ module RealEx
|
|
183
187
|
def hash
|
184
188
|
RealEx::Client.build_hash([RealEx::Client.timestamp, RealEx::Config.merchant_id, order_id, amount, currency, payer.reference])
|
185
189
|
end
|
186
|
-
|
190
|
+
|
187
191
|
def refund_hash
|
188
192
|
Digest::SHA1.hexdigest(RealEx::Config.refund_password)
|
189
193
|
end
|
190
194
|
end
|
191
195
|
end
|
192
|
-
end
|
196
|
+
end
|
data/lib/real_ex/transaction.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module RealEx
|
2
2
|
class Transaction
|
3
3
|
include Initializer
|
4
|
-
attributes :card, :amount, :order_id, :currency, :autosettle, :variable_reference, :remote_uri, :real_vault_uri
|
4
|
+
attributes :card, :amount, :order_id, :currency, :autosettle, :variable_reference, :remote_uri, :real_vault_uri, :account
|
5
5
|
attr_accessor :comments
|
6
6
|
attr_accessor :authcode, :pasref
|
7
7
|
|
@@ -14,6 +14,7 @@ module RealEx
|
|
14
14
|
self.currency ||= RealEx::Config.currency || 'EUR'
|
15
15
|
self.remote_uri ||= RealEx::Config.remote_uri || '/epage-remote.cgi'
|
16
16
|
self.real_vault_uri ||= RealEx::Config.real_vault_uri || '/epage-remote-plugins.cgi'
|
17
|
+
self.account ||= RealEx::Config.account
|
17
18
|
end
|
18
19
|
|
19
20
|
def request_type
|
@@ -30,14 +31,14 @@ module RealEx
|
|
30
31
|
r.orderid order_id
|
31
32
|
r.authcode authcode if authcode
|
32
33
|
r.pasref pasref if pasref
|
33
|
-
r.account
|
34
|
+
r.account account
|
34
35
|
if block_given?
|
35
36
|
block.call(r)
|
36
37
|
end
|
37
38
|
if !comments.empty?
|
38
39
|
r.comments do |c|
|
39
|
-
comments.each_with_index do |index
|
40
|
-
c.comment(comment, :id => index)
|
40
|
+
comments.each_with_index do |comment,index|
|
41
|
+
c.comment(comment, :id => index + 1)
|
41
42
|
end
|
42
43
|
end
|
43
44
|
end
|
@@ -157,8 +158,8 @@ module RealEx
|
|
157
158
|
per.refundhash refund_hash
|
158
159
|
if !comments.empty?
|
159
160
|
per.comments do |c|
|
160
|
-
comments.each_with_index do |index
|
161
|
-
c.comment(comment, :id => index)
|
161
|
+
comments.each_with_index do |comment,index|
|
162
|
+
c.comment(comment, :id => index + 1)
|
162
163
|
end
|
163
164
|
end
|
164
165
|
end
|
data/realex.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "realex"
|
8
|
-
s.version = "0.4"
|
8
|
+
s.version = "0.4.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Paul Campbell"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-05-30"
|
13
13
|
s.description = "A Ruby library to make use of the payments API at http://realexpayments.com"
|
14
14
|
s.email = "paul@rslw.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
]
|
43
43
|
s.homepage = "http://github.com/paulca/realex"
|
44
44
|
s.require_paths = ["lib"]
|
45
|
-
s.rubygems_version = "1.8.
|
45
|
+
s.rubygems_version = "1.8.23"
|
46
46
|
s.summary = "Ruby interface to http://realexpayments.com"
|
47
47
|
|
48
48
|
if s.respond_to? :specification_version then
|
data/spec/recurring_spec.rb
CHANGED
@@ -35,20 +35,20 @@ describe "RealEx::Recurring" do
|
|
35
35
|
)
|
36
36
|
RealEx::Client.stub!(:timestamp).and_return('20090326160218')
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
it "should create tasty XML for the payer" do
|
40
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"
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
it "should create tasty XML for the payer update" do
|
44
44
|
@payer.update = true
|
45
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"
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
it "should create lovely XML for the card" do
|
49
49
|
@card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"card-new\" 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>24dc62271ccaddc59082b4db45c80b0241f630f7</sha1hash>\n</request>\n"
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
it "should create lovely XML for the card update" do
|
53
53
|
@card.update = true
|
54
54
|
@card.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"card-update-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>cdcb4dd95d0d61d7c86685b1e465796ea55bdcea</sha1hash>\n</request>\n"
|
@@ -62,7 +62,7 @@ describe "RealEx::Recurring" do
|
|
62
62
|
it "should create tasty XML for the authorization" do
|
63
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"
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
it "should create tasty XML for the refund" do
|
67
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
68
|
end
|
@@ -85,8 +85,30 @@ describe "RealEx::Recurring without a full address" do
|
|
85
85
|
@payer = RealEx::Recurring::Payer.new(:type => 'Business', :reference => 'boom', :title => 'Mr.', :firstname => 'Paul', :lastname => 'Campbell', :company => 'Contrast')
|
86
86
|
@payer.address = RealEx::Address.new(:country => 'Ireland', :country_code => 'IE')
|
87
87
|
end
|
88
|
-
|
88
|
+
|
89
89
|
it "should convert the payer" do
|
90
90
|
@payer.to_xml.should match(/IE/)
|
91
91
|
end
|
92
|
-
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "RealEx::Recurring without any address" do
|
95
|
+
before do
|
96
|
+
RealEx::Config.merchant_id = 'paul'
|
97
|
+
RealEx::Config.shared_secret = "He's not dead, he's just asleep!"
|
98
|
+
RealEx::Config.account = 'internet'
|
99
|
+
|
100
|
+
@card = RealEx::Card.new(
|
101
|
+
:number => '4111111111111111',
|
102
|
+
:cvv => '509',
|
103
|
+
:expiry_date => '0802',
|
104
|
+
:cardholder_name => 'Paul Campbell',
|
105
|
+
:type => 'VISA',
|
106
|
+
:issue_number => nil
|
107
|
+
)
|
108
|
+
@payer = RealEx::Recurring::Payer.new(:type => 'Business', :reference => 'boom', :title => 'Mr.', :firstname => 'Paul', :lastname => 'Campbell', :company => 'Contrast')
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should convert the payer" do
|
112
|
+
@payer.to_xml.should match(/Paul/)
|
113
|
+
end
|
114
|
+
end
|
data/spec/transaction_spec.rb
CHANGED
@@ -33,6 +33,18 @@ describe "RealEx::Transaction" do
|
|
33
33
|
@transaction.comments.should == ["This is a comment"]
|
34
34
|
end
|
35
35
|
|
36
|
+
it "should allow overriding of the account" do
|
37
|
+
@transaction = RealEx::Authorization.new(
|
38
|
+
:card => @card,
|
39
|
+
:amount => 500,
|
40
|
+
:order_id => 1234,
|
41
|
+
:currency => 'EUR',
|
42
|
+
:autosettle => true,
|
43
|
+
:account => "override"
|
44
|
+
)
|
45
|
+
@transaction.account.should == "override"
|
46
|
+
end
|
47
|
+
|
36
48
|
it "should build the xml" do
|
37
49
|
@transaction.to_xml.should == "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<request type=\"auth\" timestamp=\"20090326160218\">\n <merchantid>paul</merchantid>\n <orderid>1234</orderid>\n <account>internet</account>\n <amount currency=\"EUR\">500</amount>\n <card>\n <number>4111111111111111</number>\n <expdate>0802</expdate>\n <chname>Paul Campbell</chname>\n <type>VISA</type>\n </card>\n <autosettle flag=\"1\"/>\n <tssinfo>\n </tssinfo>\n <sha1hash>d979885b0a296469d85ada0f08c5577d857142a0</sha1hash>\n</request>\n"
|
38
50
|
end
|
metadata
CHANGED
@@ -1,60 +1,80 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: realex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.4'
|
5
4
|
prerelease:
|
5
|
+
version: 0.4.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Paul Campbell
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-05-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
|
15
|
+
type: :runtime
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
|
-
|
22
|
+
name: nokogiri
|
23
23
|
prerelease: false
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: builder
|
27
|
-
requirement: &70166167360460 !ruby/object:Gem::Requirement
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
28
25
|
none: false
|
29
26
|
requirements:
|
30
27
|
- - ! '>='
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
33
31
|
type: :runtime
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
name: builder
|
34
39
|
prerelease: false
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: jeweler
|
38
|
-
requirement: &70166167359960 !ruby/object:Gem::Requirement
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
39
41
|
none: false
|
40
42
|
requirements:
|
41
43
|
- - ! '>='
|
42
44
|
- !ruby/object:Gem::Version
|
43
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
44
47
|
type: :development
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
name: jeweler
|
45
55
|
prerelease: false
|
46
|
-
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
|
-
|
49
|
-
|
63
|
+
type: :runtime
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
53
68
|
- !ruby/object:Gem::Version
|
54
69
|
version: '1.4'
|
55
|
-
|
70
|
+
name: nokogiri
|
56
71
|
prerelease: false
|
57
|
-
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '1.4'
|
58
78
|
description: A Ruby library to make use of the payments API at http://realexpayments.com
|
59
79
|
email: paul@rslw.com
|
60
80
|
executables: []
|
@@ -96,6 +116,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
116
|
requirements:
|
97
117
|
- - ! '>='
|
98
118
|
- !ruby/object:Gem::Version
|
119
|
+
segments:
|
120
|
+
- 0
|
121
|
+
hash: -150098097176807892
|
99
122
|
version: '0'
|
100
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
124
|
none: false
|
@@ -105,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
128
|
version: '0'
|
106
129
|
requirements: []
|
107
130
|
rubyforge_project:
|
108
|
-
rubygems_version: 1.8.
|
131
|
+
rubygems_version: 1.8.23
|
109
132
|
signing_key:
|
110
133
|
specification_version: 3
|
111
134
|
summary: Ruby interface to http://realexpayments.com
|