activemerchant 1.20.2 → 1.20.3

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/CHANGELOG CHANGED
@@ -1,5 +1,15 @@
1
1
  = ActiveMerchant CHANGELOG
2
2
 
3
+ == Version 1.20.3 (February 7, 2012)
4
+
5
+ * Various fixes to support Ruby 1.9 [wisq]
6
+ * SkipJack: Fix partial capture [jduff]
7
+ * Optimal Payments: submit region when outside North America [jduff]
8
+ * USA ePay: Add void and refund support [duff/ntalbott]
9
+ * Add first digits to credit card [codyfauser]
10
+ * Orbital: fixes to authentication and order id [Soleone]
11
+ * Stripe: fixes to purchase method [duff/ntalbott]
12
+
3
13
  == Version 1.20.2 (January 16, 2012)
4
14
 
5
15
  * Remove authorize/capture support for Stripe [gdb]
@@ -173,6 +173,10 @@ module ActiveMerchant #:nodoc:
173
173
  def display_number
174
174
  self.class.mask(number)
175
175
  end
176
+
177
+ def first_digits
178
+ self.class.first_digits(number)
179
+ end
176
180
 
177
181
  def last_digits
178
182
  self.class.last_digits(number)
@@ -84,6 +84,10 @@ module ActiveMerchant #:nodoc:
84
84
  return nil
85
85
  end
86
86
 
87
+ def first_digits(number)
88
+ number.to_s.slice(0,6)
89
+ end
90
+
87
91
  def last_digits(number)
88
92
  number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
89
93
  end
@@ -246,13 +246,16 @@ module ActiveMerchant #:nodoc:
246
246
  xml.tag! 'firstName', CGI.escape(addr[:name].split(' ').first) # TODO: parse properly
247
247
  xml.tag! 'lastName' , CGI.escape(addr[:name].split(' ').last )
248
248
  end
249
- xml.tag! 'street' , CGI.escape(addr[:address1]) if addr[:address1] && !addr[:address1].empty?
250
- xml.tag! 'street2', CGI.escape(addr[:address2]) if addr[:address2] && !addr[:address2].empty?
251
- xml.tag! 'city' , CGI.escape(addr[:city] ) if addr[:city] && !addr[:city].empty?
252
- xml.tag! 'state' , CGI.escape(addr[:state] ) if addr[:state] && !addr[:state].empty?
253
- xml.tag! 'country', CGI.escape(addr[:country] ) if addr[:country] && !addr[:country].empty?
249
+ xml.tag! 'street' , CGI.escape(addr[:address1]) if addr[:address1].present?
250
+ xml.tag! 'street2', CGI.escape(addr[:address2]) if addr[:address2].present?
251
+ xml.tag! 'city' , CGI.escape(addr[:city] ) if addr[:city].present?
252
+ if addr[:state].present?
253
+ state_tag = %w(US CA).include?(addr[:country]) ? 'state' : 'region'
254
+ xml.tag! state_tag, CGI.escape(addr[:state])
255
+ end
256
+ xml.tag! 'country', CGI.escape(addr[:country] ) if addr[:country].present?
254
257
  xml.tag! 'zip' , CGI.escape(addr[:zip] ) # this one's actually required
255
- xml.tag! 'phone' , CGI.escape(addr[:phone] ) if addr[:phone] && !addr[:phone].empty?
258
+ xml.tag! 'phone' , CGI.escape(addr[:phone] ) if addr[:phone].present?
256
259
  #xml.tag! 'email' , ''
257
260
  end
258
261
  end
@@ -78,9 +78,8 @@ module ActiveMerchant #:nodoc:
78
78
  }
79
79
 
80
80
  def initialize(options = {})
81
- unless options[:ip_authentication] == true
82
- requires!(options, :login, :password, :merchant_id)
83
- end
81
+ requires!(options, :merchant_id)
82
+ requires!(options, :login, :password) unless options[:ip_authentication]
84
83
  @options = options
85
84
  super
86
85
  end
@@ -253,7 +252,7 @@ module ActiveMerchant #:nodoc:
253
252
  yield xml if block_given?
254
253
 
255
254
  xml.tag! :Comments, parameters[:comments] if parameters[:comments]
256
- xml.tag! :OrderID, parameters[:order_id].to_s[0...22]
255
+ xml.tag! :OrderID, format_order_id(parameters[:order_id])
257
256
  xml.tag! :Amount, amount(money)
258
257
 
259
258
  # Append Transaction Reference Number at the end for Refund transactions
@@ -305,7 +304,7 @@ module ActiveMerchant #:nodoc:
305
304
  end
306
305
 
307
306
  def bin
308
- @options[:bin] || '000001' # default is Salem Global
307
+ @options[:bin] || (salem_mid? ? '000001' : '000002')
309
308
  end
310
309
 
311
310
  def xml_envelope
@@ -324,6 +323,22 @@ module ActiveMerchant #:nodoc:
324
323
  xml.tag! :MerchantID, @options[:merchant_id]
325
324
  xml.tag! :TerminalID, parameters[:terminal_id] || '001'
326
325
  end
326
+
327
+ def salem_mid?
328
+ @options[:merchant_id].length == 6
329
+ end
330
+
331
+ # The valid characters include:
332
+ #
333
+ # 1. all letters and digits
334
+ # 2. - , $ @ & and a space character, though the space character cannot be the leading character
335
+ # 3. PINless Debit transactions can only use uppercase and lowercase alpha (A-Z, a-z) and numeric (0-9)
336
+ def format_order_id(order_id)
337
+ illegal_characters = /[^,$@\- \w]/
338
+ order_id = order_id.to_s.gsub(/\./, '-')
339
+ order_id.gsub!(illegal_characters, '')
340
+ order_id[0...22]
341
+ end
327
342
  end
328
343
  end
329
344
  end
@@ -20,7 +20,7 @@ module ActiveMerchant #:nodoc:
20
20
 
21
21
  SUCCESS_MESSAGE = 'The transaction was successful.'
22
22
 
23
- MONETARY_CHANGE_STATUSES = ['AUTHORIZE', 'AUTHORIZE ADDITIONAL', 'CREDIT', 'SPLITSETTLE']
23
+ MONETARY_CHANGE_STATUSES = ['SETTLE', 'AUTHORIZE', 'AUTHORIZE ADDITIONAL', 'CREDIT', 'SPLITSETTLE']
24
24
 
25
25
  CARD_CODE_ERRORS = %w( N S "" )
26
26
 
@@ -48,7 +48,7 @@ module ActiveMerchant #:nodoc:
48
48
  add_amount(post, money, options)
49
49
  add_creditcard(post, creditcard, options)
50
50
  add_customer(post, options)
51
- add_customer_data(post, options)
51
+ post[:description] = options[:description] || options[:email]
52
52
  add_flags(post, options)
53
53
 
54
54
  raise ArgumentError.new("Customer or Credit Card required.") if !post[:card] && !post[:customer]
@@ -79,7 +79,8 @@ module ActiveMerchant #:nodoc:
79
79
  def store(creditcard, options = {})
80
80
  post = {}
81
81
  add_creditcard(post, creditcard, options)
82
- add_customer_data(post, options)
82
+ post[:description] = options[:description]
83
+ post[:email] = options[:email]
83
84
 
84
85
  if options[:customer]
85
86
  commit("customers/#{CGI.escape(options[:customer])}", post)
@@ -1,9 +1,9 @@
1
1
  module ActiveMerchant #:nodoc:
2
2
  module Billing #:nodoc:
3
-
3
+
4
4
  class UsaEpayTransactionGateway < Gateway
5
5
  URL = 'https://www.usaepay.com/gate.php'
6
-
6
+
7
7
  self.supported_cardtypes = [:visa, :master, :american_express]
8
8
  self.supported_countries = ['US']
9
9
  self.homepage_url = 'http://www.usaepay.com/'
@@ -12,61 +12,73 @@ module ActiveMerchant #:nodoc:
12
12
  TRANSACTIONS = {
13
13
  :authorization => 'authonly',
14
14
  :purchase => 'sale',
15
- :capture => 'capture'
15
+ :capture => 'capture',
16
+ :refund => 'refund',
17
+ :void => 'void'
16
18
  }
17
19
 
18
20
  def initialize(options = {})
19
21
  requires!(options, :login)
20
22
  @options = options
21
23
  super
22
- end
23
-
24
+ end
25
+
24
26
  def authorize(money, credit_card, options = {})
25
27
  post = {}
26
-
28
+
27
29
  add_amount(post, money)
28
30
  add_invoice(post, options)
29
- add_credit_card(post, credit_card)
30
- add_address(post, credit_card, options)
31
+ add_credit_card(post, credit_card)
32
+ add_address(post, credit_card, options)
31
33
  add_customer_data(post, options)
32
-
34
+
33
35
  commit(:authorization, post)
34
36
  end
35
-
37
+
36
38
  def purchase(money, credit_card, options = {})
37
39
  post = {}
38
-
40
+
39
41
  add_amount(post, money)
40
42
  add_invoice(post, options)
41
- add_credit_card(post, credit_card)
42
- add_address(post, credit_card, options)
43
+ add_credit_card(post, credit_card)
44
+ add_address(post, credit_card, options)
43
45
  add_customer_data(post, options)
44
-
46
+
45
47
  commit(:purchase, post)
46
- end
47
-
48
+ end
49
+
48
50
  def capture(money, authorization, options = {})
49
- post = {
50
- :refNum => authorization
51
- }
52
-
51
+ post = { :refNum => authorization }
52
+
53
53
  add_amount(post, money)
54
54
  commit(:capture, post)
55
55
  end
56
-
57
- private
58
-
56
+
57
+ def refund(money, authorization, options = {})
58
+ post = { :refNum => authorization }
59
+
60
+ add_amount(post, money)
61
+ commit(:refund, post)
62
+ end
63
+
64
+ def void(authorization, options = {})
65
+ post = { :refNum => authorization }
66
+ commit(:void, post)
67
+ end
68
+
69
+ private
70
+
59
71
  def add_amount(post, money)
60
72
  post[:amount] = amount(money)
61
73
  end
62
-
74
+
63
75
  def expdate(credit_card)
64
76
  year = format(credit_card.year, :two_digits)
65
77
  month = format(credit_card.month, :two_digits)
66
78
 
67
79
  "#{month}#{year}"
68
80
  end
69
-
81
+
70
82
  def add_customer_data(post, options)
71
83
  address = options[:billing_address] || options[:address] || {}
72
84
  post[:street] = address[:address1]
@@ -76,19 +88,19 @@ module ActiveMerchant #:nodoc:
76
88
  post[:custemail] = options[:email]
77
89
  post[:custreceipt] = 'No'
78
90
  end
79
-
91
+
80
92
  if options.has_key? :customer
81
93
  post[:custid] = options[:customer]
82
94
  end
83
-
95
+
84
96
  if options.has_key? :ip
85
97
  post[:ip] = options[:ip]
86
- end
98
+ end
87
99
  end
88
100
 
89
101
  def add_address(post, credit_card, options)
90
102
  billing_address = options[:billing_address] || options[:address]
91
-
103
+
92
104
  add_address_for_type(:billing, post, credit_card, billing_address) if billing_address
93
105
  add_address_for_type(:shipping, post, credit_card, options[:shipping_address]) if options[:shipping_address]
94
106
  end
@@ -107,8 +119,8 @@ module ActiveMerchant #:nodoc:
107
119
  post[address_key(prefix, 'country')] = address[:country] unless address[:country].blank?
108
120
  post[address_key(prefix, 'phone')] = address[:phone] unless address[:phone].blank?
109
121
  end
110
-
111
- def address_key_prefix(type)
122
+
123
+ def address_key_prefix(type)
112
124
  case type
113
125
  when :shipping then 'ship'
114
126
  when :billing then 'bill'
@@ -118,18 +130,18 @@ module ActiveMerchant #:nodoc:
118
130
  def address_key(prefix, key)
119
131
  "#{prefix}#{key}".to_sym
120
132
  end
121
-
133
+
122
134
  def add_invoice(post, options)
123
135
  post[:invoice] = options[:order_id]
124
136
  end
125
-
126
- def add_credit_card(post, credit_card)
137
+
138
+ def add_credit_card(post, credit_card)
127
139
  post[:card] = credit_card.number
128
140
  post[:cvv2] = credit_card.verification_value if credit_card.verification_value?
129
141
  post[:expir] = expdate(credit_card)
130
142
  post[:name] = credit_card.name
131
143
  end
132
-
144
+
133
145
  def parse(body)
134
146
  fields = {}
135
147
  for line in body.split('&')
@@ -152,23 +164,23 @@ module ActiveMerchant #:nodoc:
152
164
  :error_code => fields['UMerrorcode'],
153
165
  :acs_url => fields['UMacsurl'],
154
166
  :payload => fields['UMpayload']
155
- }.delete_if{|k, v| v.nil?}
156
- end
167
+ }.delete_if{|k, v| v.nil?}
168
+ end
169
+
157
170
 
158
-
159
171
  def commit(action, parameters)
160
172
  response = parse( ssl_post(URL, post_data(action, parameters)) )
161
-
162
- Response.new(response[:status] == 'Approved', message_from(response), response,
173
+
174
+ Response.new(response[:status] == 'Approved', message_from(response), response,
163
175
  :test => @options[:test] || test?,
164
176
  :authorization => response[:ref_num],
165
177
  :cvv_result => response[:cvv2_result_code],
166
- :avs_result => {
178
+ :avs_result => {
167
179
  :street_match => response[:avs_result_code].to_s[0,1],
168
180
  :postal_match => response[:avs_result_code].to_s[1,1],
169
181
  :code => response[:avs_result_code].to_s[2,1]
170
182
  }
171
- )
183
+ )
172
184
  end
173
185
 
174
186
  def message_from(response)
@@ -179,7 +191,7 @@ module ActiveMerchant #:nodoc:
179
191
  return response[:error]
180
192
  end
181
193
  end
182
-
194
+
183
195
  def post_data(action, parameters = {})
184
196
  parameters[:command] = TRANSACTIONS[action]
185
197
  parameters[:key] = @options[:login]
@@ -27,7 +27,7 @@ module ActiveMerchant #:nodoc:
27
27
  def purchase(money, payment_method, options = {})
28
28
  response = MultiResponse.new
29
29
  response << authorize(money, payment_method, options)
30
- response << capture(money, response.authorization, :authorization_validated => true) if response.success?
30
+ response << capture(money, response.authorization, options.merge(:authorization_validated => true)) if response.success?
31
31
  response
32
32
  end
33
33
 
@@ -21,8 +21,8 @@ module ActiveMerchant #:nodoc:
21
21
  def sage_encrypt_xor(data, key)
22
22
  raise 'No key provided' if key.blank?
23
23
 
24
- key *= (data.length.to_f / key.length.to_f).ceil
25
- key = key[0, data.length]
24
+ key *= (data.bytesize.to_f / key.bytesize.to_f).ceil
25
+ key = key[0, data.bytesize]
26
26
 
27
27
  data.bytes.zip(key.bytes).map { |b1, b2| (b1 ^ b2).chr }.join
28
28
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveMerchant
2
- VERSION = "1.20.2"
2
+ VERSION = "1.20.3"
3
3
  end
metadata CHANGED
@@ -1,207 +1,166 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: activemerchant
3
- version: !ruby/object:Gem::Version
4
- hash: 67
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.20.3
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 20
9
- - 2
10
- version: 1.20.2
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Tobias Luetke
14
9
  autorequire:
15
10
  bindir: bin
16
- cert_chain:
17
- - |
18
- -----BEGIN CERTIFICATE-----
11
+ cert_chain:
12
+ - ! '-----BEGIN CERTIFICATE-----
13
+
19
14
  MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApjb2R5
15
+
20
16
  ZmF1c2VyMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
17
+
21
18
  b20wHhcNMDcwMjIyMTcyMTI3WhcNMDgwMjIyMTcyMTI3WjBBMRMwEQYDVQQDDApj
19
+
22
20
  b2R5ZmF1c2VyMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
21
+
23
22
  FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6T4Iqt5iWvAlU
23
+
24
24
  iXI6L8UO0URQhIC65X/gJ9hL/x4lwSl/ckVm/R/bPrJGmifT+YooFv824N3y/TIX
25
+
25
26
  25o/lZtRj1TUZJK4OCb0aVzosQVxBHSe6rLmxO8cItNTMOM9wn3thaITFrTa1DOQ
27
+
26
28
  O3wqEjvW2L6VMozVfK1MfjL9IGgy0rCnl+2g4Gh4jDDpkLfnMG5CWI6cTCf3C1ye
29
+
27
30
  ytOpWgi0XpOEy8nQWcFmt/KCQ/kFfzBo4QxqJi54b80842EyvzWT9OB7Oew/CXZG
31
+
28
32
  F2yIHtiYxonz6N09vvSzq4CvEuisoUFLKZnktndxMEBKwJU3XeSHAbuS7ix40OKO
33
+
29
34
  WKuI54fHAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
35
+
30
36
  BBR9QQpefI3oDCAxiqJW/3Gg6jI6qjANBgkqhkiG9w0BAQUFAAOCAQEAs0lX26O+
37
+
31
38
  HpyMp7WL+SgZuM8k76AjfOHuKajl2GEn3S8pWYGpsa0xu07HtehJhKLiavrfUYeE
39
+
32
40
  qlFtyYMUyOh6/1S2vfkH6VqjX7mWjoi7XKHW/99fkMS40B5SbN+ypAUst+6c5R84
41
+
33
42
  w390mjtLHpdDE6WQYhS6bFvBN53vK6jG3DLyCJc0K9uMQ7gdHWoxq7RnG92ncQpT
43
+
34
44
  ThpRA+fky5Xt2Q63YJDnJpkYAz79QIama1enSnd4jslKzSl89JS2luq/zioPe/Us
45
+
35
46
  hbyalWR1+HrhgPoSPq7nk+s2FQUBJ9UZFK1lgMzho/4fZgzJwbu+cO8SNuaLS/bj
47
+
36
48
  hPaSTyVU0yCSnw==
49
+
37
50
  -----END CERTIFICATE-----
38
51
 
39
- date: 2012-01-16 00:00:00 -05:00
40
- default_executable:
41
- dependencies:
42
- - !ruby/object:Gem::Dependency
52
+ '
53
+ date: 2012-02-07 00:00:00.000000000 Z
54
+ dependencies:
55
+ - !ruby/object:Gem::Dependency
43
56
  name: activesupport
44
- version_requirements: &id001 !ruby/object:Gem::Requirement
57
+ requirement: &2152209620 !ruby/object:Gem::Requirement
45
58
  none: false
46
- requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- hash: 21
50
- segments:
51
- - 2
52
- - 3
53
- - 11
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
54
62
  version: 2.3.11
55
- prerelease: false
56
63
  type: :runtime
57
- requirement: *id001
58
- - !ruby/object:Gem::Dependency
64
+ prerelease: false
65
+ version_requirements: *2152209620
66
+ - !ruby/object:Gem::Dependency
59
67
  name: i18n
60
- version_requirements: &id002 !ruby/object:Gem::Requirement
68
+ requirement: &2152209000 !ruby/object:Gem::Requirement
61
69
  none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
69
- prerelease: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
70
74
  type: :runtime
71
- requirement: *id002
72
- - !ruby/object:Gem::Dependency
75
+ prerelease: false
76
+ version_requirements: *2152209000
77
+ - !ruby/object:Gem::Dependency
73
78
  name: money
74
- version_requirements: &id003 !ruby/object:Gem::Requirement
79
+ requirement: &2152208380 !ruby/object:Gem::Requirement
75
80
  none: false
76
- requirements:
81
+ requirements:
77
82
  - - <=
78
- - !ruby/object:Gem::Version
79
- hash: 25
80
- segments:
81
- - 3
82
- - 7
83
- - 1
83
+ - !ruby/object:Gem::Version
84
84
  version: 3.7.1
85
- prerelease: false
86
85
  type: :runtime
87
- requirement: *id003
88
- - !ruby/object:Gem::Dependency
86
+ prerelease: false
87
+ version_requirements: *2152208380
88
+ - !ruby/object:Gem::Dependency
89
89
  name: builder
90
- version_requirements: &id004 !ruby/object:Gem::Requirement
90
+ requirement: &2152207880 !ruby/object:Gem::Requirement
91
91
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 15
96
- segments:
97
- - 2
98
- - 0
99
- - 0
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
100
95
  version: 2.0.0
101
- prerelease: false
102
96
  type: :runtime
103
- requirement: *id004
104
- - !ruby/object:Gem::Dependency
97
+ prerelease: false
98
+ version_requirements: *2152207880
99
+ - !ruby/object:Gem::Dependency
105
100
  name: braintree
106
- version_requirements: &id005 !ruby/object:Gem::Requirement
101
+ requirement: &2152207380 !ruby/object:Gem::Requirement
107
102
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 15
112
- segments:
113
- - 2
114
- - 0
115
- - 0
103
+ requirements:
104
+ - - ! '>='
105
+ - !ruby/object:Gem::Version
116
106
  version: 2.0.0
117
- prerelease: false
118
107
  type: :runtime
119
- requirement: *id005
120
- - !ruby/object:Gem::Dependency
121
- name: json
122
- version_requirements: &id006 !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 1
128
- segments:
129
- - 1
130
- - 5
131
- - 1
132
- version: 1.5.1
133
108
  prerelease: false
134
- type: :runtime
135
- requirement: *id006
136
- - !ruby/object:Gem::Dependency
109
+ version_requirements: *2152207380
110
+ - !ruby/object:Gem::Dependency
137
111
  name: active_utils
138
- version_requirements: &id007 !ruby/object:Gem::Requirement
112
+ requirement: &2152206900 !ruby/object:Gem::Requirement
139
113
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 19
144
- segments:
145
- - 1
146
- - 0
147
- - 2
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
148
117
  version: 1.0.2
149
- prerelease: false
150
118
  type: :runtime
151
- requirement: *id007
152
- - !ruby/object:Gem::Dependency
119
+ prerelease: false
120
+ version_requirements: *2152206900
121
+ - !ruby/object:Gem::Dependency
153
122
  name: rake
154
- version_requirements: &id008 !ruby/object:Gem::Requirement
123
+ requirement: &2152206500 !ruby/object:Gem::Requirement
155
124
  none: false
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- hash: 3
160
- segments:
161
- - 0
162
- version: "0"
163
- prerelease: false
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
164
129
  type: :development
165
- requirement: *id008
166
- - !ruby/object:Gem::Dependency
130
+ prerelease: false
131
+ version_requirements: *2152206500
132
+ - !ruby/object:Gem::Dependency
167
133
  name: mocha
168
- version_requirements: &id009 !ruby/object:Gem::Requirement
134
+ requirement: &2152206040 !ruby/object:Gem::Requirement
169
135
  none: false
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- hash: 3
174
- segments:
175
- - 0
176
- version: "0"
177
- prerelease: false
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
178
140
  type: :development
179
- requirement: *id009
180
- - !ruby/object:Gem::Dependency
141
+ prerelease: false
142
+ version_requirements: *2152206040
143
+ - !ruby/object:Gem::Dependency
181
144
  name: rails
182
- version_requirements: &id010 !ruby/object:Gem::Requirement
145
+ requirement: &2152205540 !ruby/object:Gem::Requirement
183
146
  none: false
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- hash: 21
188
- segments:
189
- - 2
190
- - 3
191
- - 11
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
192
150
  version: 2.3.11
193
- prerelease: false
194
151
  type: :development
195
- requirement: *id010
196
- description: Active Merchant is a simple payment abstraction library used in and sponsored by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim of the project is to feel natural to Ruby users and to abstract as many parts as possible away from the user to offer a consistent interface across all supported gateways.
152
+ prerelease: false
153
+ version_requirements: *2152205540
154
+ description: Active Merchant is a simple payment abstraction library used in and sponsored
155
+ by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim
156
+ of the project is to feel natural to Ruby users and to abstract as many parts as
157
+ possible away from the user to offer a consistent interface across all supported
158
+ gateways.
197
159
  email: tobi@leetsoft.com
198
160
  executables: []
199
-
200
161
  extensions: []
201
-
202
162
  extra_rdoc_files: []
203
-
204
- files:
163
+ files:
205
164
  - CHANGELOG
206
165
  - MIT-LICENSE
207
166
  - CONTRIBUTORS
@@ -391,39 +350,28 @@ files:
391
350
  - lib/activemerchant.rb
392
351
  - lib/support/gateway_support.rb
393
352
  - lib/support/outbound_hosts.rb
394
- has_rdoc: true
395
353
  homepage: http://activemerchant.org/
396
354
  licenses: []
397
-
398
355
  post_install_message:
399
356
  rdoc_options: []
400
-
401
- require_paths:
357
+ require_paths:
402
358
  - lib
403
- required_ruby_version: !ruby/object:Gem::Requirement
359
+ required_ruby_version: !ruby/object:Gem::Requirement
404
360
  none: false
405
- requirements:
406
- - - ">="
407
- - !ruby/object:Gem::Version
408
- hash: 3
409
- segments:
410
- - 0
411
- version: "0"
412
- required_rubygems_version: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - ! '>='
363
+ - !ruby/object:Gem::Version
364
+ version: '0'
365
+ required_rubygems_version: !ruby/object:Gem::Requirement
413
366
  none: false
414
- requirements:
415
- - - ">="
416
- - !ruby/object:Gem::Version
417
- hash: 3
418
- segments:
419
- - 0
420
- version: "0"
367
+ requirements:
368
+ - - ! '>='
369
+ - !ruby/object:Gem::Version
370
+ version: '0'
421
371
  requirements: []
422
-
423
372
  rubyforge_project: activemerchant
424
- rubygems_version: 1.5.3
373
+ rubygems_version: 1.8.11
425
374
  signing_key:
426
375
  specification_version: 3
427
376
  summary: Framework and tools for dealing with credit card transactions.
428
377
  test_files: []
429
-
metadata.gz.sig CHANGED
Binary file