activemerchant 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +10 -0
- data/lib/active_merchant/billing/credit_card.rb +27 -17
- data/lib/active_merchant/billing/credit_card_methods.rb +23 -9
- data/lib/active_merchant/billing/gateways/litle.rb +4 -4
- data/lib/active_merchant/billing/gateways/moneris.rb +60 -23
- data/lib/active_merchant/billing/gateways/nab_transact.rb +11 -0
- data/lib/active_merchant/billing/gateways/optimal_payment.rb +2 -2
- data/lib/active_merchant/billing/gateways/paybox_direct.rb +1 -6
- data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
- data/lib/active_merchant/billing/gateways/paystation.rb +1 -1
- data/lib/active_merchant/billing/gateways/vindicia.rb +1 -1
- data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +2 -0
- data/lib/active_merchant/version.rb +1 -1
- metadata +127 -167
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
= ActiveMerchant CHANGELOG
|
2
2
|
|
3
|
+
== Version 1.24.0 (June 8, 2012)
|
4
|
+
|
5
|
+
* PayPal gateway: Support for incomplete captures [mbulat]
|
6
|
+
* Moneris gateway: Add support for vault [kenzie]
|
7
|
+
* NAB Transact gateway: Add support for card descriptors [nagash]
|
8
|
+
* SagePayForm: truncate long description fields [jnormore]
|
9
|
+
* Paybox Direct: treat all response codes besides '00000' as failures
|
10
|
+
[Soleone]
|
11
|
+
* Deprecate CreditCard#type method in favor of CreditCard#brand [jduff]
|
12
|
+
|
3
13
|
== Version 1.23.0 (May 23, 2012)
|
4
14
|
|
5
15
|
* Add Litle gateway [GregDrake]
|
@@ -22,12 +22,12 @@ module ActiveMerchant #:nodoc:
|
|
22
22
|
# * Forbrugsforeningen
|
23
23
|
# * Laser
|
24
24
|
#
|
25
|
-
# For testing purposes, use the 'bogus' credit card
|
25
|
+
# For testing purposes, use the 'bogus' credit card brand. This skips the vast majority of
|
26
26
|
# validations, allowing you to focus on your core concerns until you're ready to be more concerned
|
27
27
|
# with the details of particular credit cards or your gateway.
|
28
28
|
#
|
29
29
|
# == Testing With CreditCard
|
30
|
-
# Often when testing we don't care about the particulars of a given card
|
30
|
+
# Often when testing we don't care about the particulars of a given card brand. When using the 'test'
|
31
31
|
# mode in your {Gateway}, there are six different valid card numbers: 1, 2, 3, 'success', 'fail',
|
32
32
|
# and 'error'.
|
33
33
|
#
|
@@ -39,7 +39,7 @@ module ActiveMerchant #:nodoc:
|
|
39
39
|
# :last_name => 'Smith',
|
40
40
|
# :month => '9',
|
41
41
|
# :year => '2010',
|
42
|
-
# :
|
42
|
+
# :brand => 'visa',
|
43
43
|
# :number => '4242424242424242'
|
44
44
|
# )
|
45
45
|
#
|
@@ -68,7 +68,7 @@ module ActiveMerchant #:nodoc:
|
|
68
68
|
# @return [Integer]
|
69
69
|
attr_accessor :year
|
70
70
|
|
71
|
-
# Returns or sets the credit card
|
71
|
+
# Returns or sets the credit card brand.
|
72
72
|
#
|
73
73
|
# Valid card types are
|
74
74
|
#
|
@@ -87,8 +87,8 @@ module ActiveMerchant #:nodoc:
|
|
87
87
|
#
|
88
88
|
# Or, if you wish to test your implementation, +'bogus'+.
|
89
89
|
#
|
90
|
-
# @return (String) the credit card
|
91
|
-
attr_accessor :
|
90
|
+
# @return (String) the credit card brand
|
91
|
+
attr_accessor :brand
|
92
92
|
|
93
93
|
# Returns or sets the first name of the card holder.
|
94
94
|
#
|
@@ -112,7 +112,15 @@ module ActiveMerchant #:nodoc:
|
|
112
112
|
# @return [String] the verification value
|
113
113
|
attr_accessor :verification_value
|
114
114
|
|
115
|
-
|
115
|
+
def type
|
116
|
+
self.class.deprecated "CreditCard#type is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand instead."
|
117
|
+
brand
|
118
|
+
end
|
119
|
+
|
120
|
+
def type=(value)
|
121
|
+
self.class.deprecated "CreditCard#type is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand instead."
|
122
|
+
self.brand = value
|
123
|
+
end
|
116
124
|
|
117
125
|
# Provides proxy access to an expiry date object
|
118
126
|
#
|
@@ -189,9 +197,9 @@ module ActiveMerchant #:nodoc:
|
|
189
197
|
validate_essential_attributes
|
190
198
|
|
191
199
|
# Bogus card is pretty much for testing purposes. Lets just skip these extra tests if its used
|
192
|
-
return if
|
200
|
+
return if brand == 'bogus'
|
193
201
|
|
194
|
-
|
202
|
+
validate_card_brand
|
195
203
|
validate_card_number
|
196
204
|
validate_verification_value
|
197
205
|
validate_switch_or_solo_attributes
|
@@ -209,8 +217,8 @@ module ActiveMerchant #:nodoc:
|
|
209
217
|
self.start_month = start_month.to_i unless start_month.nil?
|
210
218
|
self.start_year = start_year.to_i unless start_year.nil?
|
211
219
|
self.number = number.to_s.gsub(/[^\d]/, "")
|
212
|
-
self.
|
213
|
-
self.
|
220
|
+
self.brand.downcase! if brand.respond_to?(:downcase)
|
221
|
+
self.brand = self.class.brand?(number) if brand.blank?
|
214
222
|
end
|
215
223
|
|
216
224
|
def validate_card_number #:nodoc:
|
@@ -220,16 +228,18 @@ module ActiveMerchant #:nodoc:
|
|
220
228
|
errors.add :number, "is not a valid credit card number"
|
221
229
|
end
|
222
230
|
|
223
|
-
unless errors.on(:number) || errors.on(:
|
224
|
-
errors.add :
|
231
|
+
unless errors.on(:number) || errors.on(:brand)
|
232
|
+
errors.add :brand, "is not the correct card brand" unless CreditCard.matching_brand?(number, brand)
|
225
233
|
end
|
226
234
|
end
|
227
235
|
|
228
|
-
def
|
229
|
-
errors.add :
|
230
|
-
errors.add :
|
236
|
+
def validate_card_brand #:nodoc:
|
237
|
+
errors.add :brand, "is required" if brand.blank? && number.present?
|
238
|
+
errors.add :brand, "is invalid" unless brand.blank? || CreditCard.card_companies.keys.include?(brand)
|
231
239
|
end
|
232
240
|
|
241
|
+
alias_method :validate_card_type, :validate_card_brand
|
242
|
+
|
233
243
|
def validate_essential_attributes #:nodoc:
|
234
244
|
errors.add :first_name, "cannot be empty" if @first_name.blank?
|
235
245
|
errors.add :last_name, "cannot be empty" if @last_name.blank?
|
@@ -245,7 +255,7 @@ module ActiveMerchant #:nodoc:
|
|
245
255
|
end
|
246
256
|
|
247
257
|
def validate_switch_or_solo_attributes #:nodoc:
|
248
|
-
if %w[switch solo].include?(
|
258
|
+
if %w[switch solo].include?(brand)
|
249
259
|
unless valid_month?(@start_month) && valid_start_year?(@start_year) || valid_issue_number?(@issue_number)
|
250
260
|
errors.add :start_month, "is invalid" unless valid_month?(@start_month)
|
251
261
|
errors.add :start_year, "is invalid" unless valid_start_year?(@start_year)
|
@@ -38,8 +38,8 @@ module ActiveMerchant #:nodoc:
|
|
38
38
|
end
|
39
39
|
|
40
40
|
module ClassMethods
|
41
|
-
# Returns true if it validates. Optionally, you can pass a card
|
42
|
-
# make sure it is of the correct
|
41
|
+
# Returns true if it validates. Optionally, you can pass a card brand as an argument and
|
42
|
+
# make sure it is of the correct brand.
|
43
43
|
#
|
44
44
|
# References:
|
45
45
|
# - http://perl.about.com/compute/perl/library/nosearch/P073000.htm
|
@@ -59,7 +59,7 @@ module ActiveMerchant #:nodoc:
|
|
59
59
|
CARD_COMPANIES
|
60
60
|
end
|
61
61
|
|
62
|
-
# Returns a string containing the
|
62
|
+
# Returns a string containing the brand of card from the list of known information below.
|
63
63
|
# Need to check the cards in a particular order, as there is some overlap of the allowable ranges
|
64
64
|
#--
|
65
65
|
# TODO Refactor this method. We basically need to tighten up the Maestro Regexp.
|
@@ -67,12 +67,12 @@ module ActiveMerchant #:nodoc:
|
|
67
67
|
# Right now the Maestro regexp overlaps with the MasterCard regexp (IIRC). If we can tighten
|
68
68
|
# things up, we can boil this whole thing down to something like...
|
69
69
|
#
|
70
|
-
# def
|
70
|
+
# def brand?(number)
|
71
71
|
# return 'visa' if valid_test_mode_card_number?(number)
|
72
|
-
# card_companies.find([nil]) { |
|
72
|
+
# card_companies.find([nil]) { |brand, regexp| number =~ regexp }.first.dup
|
73
73
|
# end
|
74
74
|
#
|
75
|
-
def
|
75
|
+
def brand?(number)
|
76
76
|
return 'bogus' if valid_test_mode_card_number?(number)
|
77
77
|
|
78
78
|
card_companies.reject { |c,p| c == 'maestro' }.each do |company, pattern|
|
@@ -83,6 +83,11 @@ module ActiveMerchant #:nodoc:
|
|
83
83
|
|
84
84
|
return nil
|
85
85
|
end
|
86
|
+
|
87
|
+
def type?(number)
|
88
|
+
deprecated "CreditCard#type? is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand? instead."
|
89
|
+
brand?(number)
|
90
|
+
end
|
86
91
|
|
87
92
|
def first_digits(number)
|
88
93
|
number.to_s.slice(0,6)
|
@@ -96,9 +101,18 @@ module ActiveMerchant #:nodoc:
|
|
96
101
|
"XXXX-XXXX-XXXX-#{last_digits(number)}"
|
97
102
|
end
|
98
103
|
|
99
|
-
# Checks to see if the calculated
|
100
|
-
def
|
101
|
-
|
104
|
+
# Checks to see if the calculated brand matches the specified brand
|
105
|
+
def matching_brand?(number, brand)
|
106
|
+
brand?(number) == brand
|
107
|
+
end
|
108
|
+
|
109
|
+
def matching_type?(number, brand)
|
110
|
+
deprecated "CreditCard#matching_type? is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#matching_brand? instead."
|
111
|
+
matching_brand?(number, brand)
|
112
|
+
end
|
113
|
+
|
114
|
+
def deprecated(message)
|
115
|
+
warn(Kernel.caller[1] + message)
|
102
116
|
end
|
103
117
|
|
104
118
|
private
|
@@ -136,7 +136,7 @@ module ActiveMerchant #:nodoc:
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def create_credit_card_hash(money, creditcard, options)
|
139
|
-
cc_type = CARD_TYPE[creditcard.
|
139
|
+
cc_type = CARD_TYPE[creditcard.brand]
|
140
140
|
|
141
141
|
exp_date_yr = creditcard.year.to_s()[2..3]
|
142
142
|
|
@@ -256,15 +256,15 @@ module ActiveMerchant #:nodoc:
|
|
256
256
|
end
|
257
257
|
|
258
258
|
def fraud_result(authorization_response)
|
259
|
-
if authorization_response.respond_to?(
|
259
|
+
if authorization_response.respond_to?(:fraudResult)
|
260
260
|
fraud_result = authorization_response.fraudResult
|
261
|
-
if fraud_result.respond_to?(
|
261
|
+
if fraud_result.respond_to?(:cardValidationResult)
|
262
262
|
cvv_to_pass = fraud_result.cardValidationResult
|
263
263
|
if(cvv_to_pass == "")
|
264
264
|
cvv_to_pass = "P"
|
265
265
|
end
|
266
266
|
end
|
267
|
-
if fraud_result.respond_to?(
|
267
|
+
if fraud_result.respond_to?(:avsResult)
|
268
268
|
avs_to_pass = AVS_RESPONSE_CODE[fraud_result.avsResult]
|
269
269
|
end
|
270
270
|
end
|
@@ -31,18 +31,34 @@ module ActiveMerchant #:nodoc:
|
|
31
31
|
# captured at a later date.
|
32
32
|
#
|
33
33
|
# Pass in +order_id+ and optionally a +customer+ parameter.
|
34
|
-
def authorize(money,
|
35
|
-
|
34
|
+
def authorize(money, creditcard_or_datakey, options = {})
|
35
|
+
requires!(options, :order_id)
|
36
|
+
post = {}
|
37
|
+
add_payment_source(post, creditcard_or_datakey)
|
38
|
+
post[:amount] = amount(money)
|
39
|
+
post[:order_id] = options[:order_id]
|
40
|
+
post[:cust_id] = options[:customer]
|
41
|
+
post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
|
42
|
+
action = (post[:data_key].blank?) ? 'preauth' : 'res_preauth_cc'
|
43
|
+
commit(action, post)
|
36
44
|
end
|
37
45
|
|
38
|
-
# This action verifies funding on a customer's card
|
46
|
+
# This action verifies funding on a customer's card and readies them for
|
39
47
|
# deposit in a merchant's account.
|
40
48
|
#
|
41
49
|
# Pass in <tt>order_id</tt> and optionally a <tt>customer</tt> parameter
|
42
|
-
def purchase(money,
|
43
|
-
|
50
|
+
def purchase(money, creditcard_or_datakey, options = {})
|
51
|
+
requires!(options, :order_id)
|
52
|
+
post = {}
|
53
|
+
add_payment_source(post, creditcard_or_datakey)
|
54
|
+
post[:amount] = amount(money)
|
55
|
+
post[:order_id] = options[:order_id]
|
56
|
+
post[:cust_id] = options[:customer]
|
57
|
+
post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
|
58
|
+
action = (post[:data_key].blank?) ? 'purchase' : 'res_purchase_cc'
|
59
|
+
commit(action, post)
|
44
60
|
end
|
45
|
-
|
61
|
+
|
46
62
|
# This method retrieves locked funds from a customer's account (from a
|
47
63
|
# PreAuth) and prepares them for deposit in a merchant's account.
|
48
64
|
#
|
@@ -79,30 +95,46 @@ module ActiveMerchant #:nodoc:
|
|
79
95
|
commit 'refund', crediting_params(authorization, :amount => amount(money))
|
80
96
|
end
|
81
97
|
|
98
|
+
def store(credit_card, options = {})
|
99
|
+
post = {}
|
100
|
+
post[:pan] = credit_card.number
|
101
|
+
post[:expdate] = expdate(credit_card)
|
102
|
+
post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
|
103
|
+
commit('res_add_cc', post)
|
104
|
+
end
|
105
|
+
|
106
|
+
def unstore(data_key)
|
107
|
+
post = {}
|
108
|
+
post[:data_key] = data_key
|
109
|
+
commit('res_delete', post)
|
110
|
+
end
|
111
|
+
|
112
|
+
def update(data_key, credit_card, options = {})
|
113
|
+
post = {}
|
114
|
+
post[:pan] = credit_card.number
|
115
|
+
post[:expdate] = expdate(credit_card)
|
116
|
+
post[:data_key] = data_key
|
117
|
+
post[:crypt_type] = options[:crypt_type] || @options[:crypt_type]
|
118
|
+
commit('res_update_cc', post)
|
119
|
+
end
|
120
|
+
|
82
121
|
def test?
|
83
122
|
@options[:test] || super
|
84
123
|
end
|
124
|
+
|
85
125
|
private # :nodoc: all
|
86
126
|
|
87
127
|
def expdate(creditcard)
|
88
128
|
sprintf("%.4i", creditcard.year)[-2..-1] + sprintf("%.2i", creditcard.month)
|
89
129
|
end
|
90
|
-
|
91
|
-
def
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
{
|
99
|
-
:order_id => options[:order_id],
|
100
|
-
:cust_id => options[:customer],
|
101
|
-
:amount => amount(money),
|
102
|
-
:pan => creditcard.number,
|
103
|
-
:expdate => expdate(creditcard),
|
104
|
-
:crypt_type => options[:crypt_type] || @options[:crypt_type]
|
105
|
-
}
|
130
|
+
|
131
|
+
def add_payment_source(post, source)
|
132
|
+
if source.is_a?(String)
|
133
|
+
post[:data_key] = source
|
134
|
+
else
|
135
|
+
post[:pan] = source.number
|
136
|
+
post[:expdate] = expdate(source)
|
137
|
+
end
|
106
138
|
end
|
107
139
|
|
108
140
|
# Common params used amongst the +credit+, +void+ and +capture+ methods
|
@@ -205,7 +237,12 @@ module ActiveMerchant #:nodoc:
|
|
205
237
|
"transact" => [:order_id, :cust_id, :amount, :pan, :expdate, :crypt_type],
|
206
238
|
"Batchcloseall" => [],
|
207
239
|
"opentotals" => [:ecr_number],
|
208
|
-
"batchclose" => [:ecr_number]
|
240
|
+
"batchclose" => [:ecr_number],
|
241
|
+
"res_add_cc" => [:pan, :expdate, :crypt_type],
|
242
|
+
"res_delete" => [:data_key],
|
243
|
+
"res_update_cc" => [:data_key, :pan, :expdate, :crypt_type],
|
244
|
+
"res_purchase_cc" => [:data_key, :order_id, :cust_id, :amount, :crypt_type],
|
245
|
+
"res_preauth_cc" => [:data_key, :order_id, :cust_id, :amount, :crypt_type]
|
209
246
|
}
|
210
247
|
end
|
211
248
|
end
|
@@ -81,6 +81,15 @@ module ActiveMerchant #:nodoc:
|
|
81
81
|
|
82
82
|
private
|
83
83
|
|
84
|
+
def add_metadata(xml, options)
|
85
|
+
if options[:merchant_name] || options[:merchant_location]
|
86
|
+
xml.tag! 'metadata' do
|
87
|
+
xml.tag! 'meta', :name => 'ca_name', :value => options[:merchant_name] if options[:merchant_name]
|
88
|
+
xml.tag! 'meta', :name => 'ca_location', :value => options[:merchant_location] if options[:merchant_location]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
84
93
|
def build_purchase_request(money, credit_card, options)
|
85
94
|
xml = Builder::XmlMarkup.new
|
86
95
|
xml.tag! 'amount', amount(money)
|
@@ -93,6 +102,8 @@ module ActiveMerchant #:nodoc:
|
|
93
102
|
xml.tag! 'cvv', credit_card.verification_value if credit_card.verification_value?
|
94
103
|
end
|
95
104
|
|
105
|
+
add_metadata(xml, options)
|
106
|
+
|
96
107
|
xml.target!
|
97
108
|
end
|
98
109
|
|
@@ -228,8 +228,8 @@ module ActiveMerchant #:nodoc:
|
|
228
228
|
xml.tag! 'month' , @credit_card.month
|
229
229
|
xml.tag! 'year' , @credit_card.year
|
230
230
|
end
|
231
|
-
if
|
232
|
-
xml.tag! 'cardType' ,
|
231
|
+
if brand = card_type(@credit_card.brand)
|
232
|
+
xml.tag! 'cardType' , brand
|
233
233
|
end
|
234
234
|
if @credit_card.verification_value
|
235
235
|
xml.tag! 'cvdIndicator' , '1' # Value Provided
|
@@ -37,7 +37,6 @@ module ActiveMerchant #:nodoc:
|
|
37
37
|
|
38
38
|
SUCCESS_CODES = ['00000']
|
39
39
|
UNAVAILABILITY_CODES = ['00001', '00097', '00098']
|
40
|
-
FRAUD_CODES = ['00102','00104','00134','00138','00141','00143','00157','00159']
|
41
40
|
SUCCESS_MESSAGE = 'The transaction was approved'
|
42
41
|
FAILURE_MESSAGE = 'The transaction failed'
|
43
42
|
|
@@ -148,7 +147,7 @@ module ActiveMerchant #:nodoc:
|
|
148
147
|
:timestamp => parameters[:dateq]),
|
149
148
|
:test => test?,
|
150
149
|
:authorization => response[:numappel].to_s + response[:numtrans].to_s,
|
151
|
-
:fraud_review =>
|
150
|
+
:fraud_review => false,
|
152
151
|
:sent_params => parameters.delete_if{|key,value| ['porteur','dateval','cvv'].include?(key.to_s)}
|
153
152
|
)
|
154
153
|
end
|
@@ -157,10 +156,6 @@ module ActiveMerchant #:nodoc:
|
|
157
156
|
SUCCESS_CODES.include?(response[:codereponse])
|
158
157
|
end
|
159
158
|
|
160
|
-
def fraud_review?(response)
|
161
|
-
FRAUD_CODES.include?(response[:codereponse])
|
162
|
-
end
|
163
|
-
|
164
159
|
def service_unavailable?(response)
|
165
160
|
UNAVAILABILITY_CODES.include?(response[:codereponse])
|
166
161
|
end
|
@@ -291,7 +291,7 @@ module ActiveMerchant #:nodoc:
|
|
291
291
|
xml.tag! 'n2:Version', API_VERSION
|
292
292
|
xml.tag! 'AuthorizationID', authorization
|
293
293
|
xml.tag! 'Amount', amount(money), 'currencyID' => options[:currency] || currency(money)
|
294
|
-
xml.tag! 'CompleteType', 'Complete'
|
294
|
+
xml.tag! 'CompleteType', options[:complete_type] || 'Complete'
|
295
295
|
xml.tag! 'InvoiceID', options[:order_id] unless options[:order_id].blank?
|
296
296
|
xml.tag! 'Note', options[:description]
|
297
297
|
end
|
@@ -107,7 +107,7 @@ module ActiveMerchant #:nodoc:
|
|
107
107
|
def add_credit_card(post, credit_card)
|
108
108
|
|
109
109
|
post[:cn] = credit_card.number
|
110
|
-
post[:ct] = credit_card.
|
110
|
+
post[:ct] = credit_card.brand
|
111
111
|
post[:ex] = format_date(credit_card.month, credit_card.year)
|
112
112
|
post[:cc] = credit_card.verification_value if credit_card.verification_value?
|
113
113
|
|
@@ -269,7 +269,7 @@ module ActiveMerchant #:nodoc:
|
|
269
269
|
:accountHolderName => creditcard.name,
|
270
270
|
:nameValues => [{ :name => 'CVN', :value => creditcard.verification_value }],
|
271
271
|
:billingAddress => convert_am_address_to_vindicia(options[:billing_address] || options[:address]),
|
272
|
-
:customerSpecifiedType => creditcard.
|
272
|
+
:customerSpecifiedType => creditcard.brand.capitalize,
|
273
273
|
:active => !!options[:recurring]
|
274
274
|
}
|
275
275
|
end
|
metadata
CHANGED
@@ -1,218 +1,188 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemerchant
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.24.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 23
|
9
|
-
- 0
|
10
|
-
version: 1.23.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Tobias Luetke
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
|
-
cert_chain:
|
17
|
-
-
|
18
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
52
|
+
'
|
53
|
+
date: 2012-06-08 00:00:00.000000000 Z
|
54
|
+
dependencies:
|
55
|
+
- !ruby/object:Gem::Dependency
|
42
56
|
name: activesupport
|
43
|
-
|
44
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
57
|
+
requirement: &2152304360 !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
63
|
type: :runtime
|
56
|
-
version_requirements: *id001
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: i18n
|
59
64
|
prerelease: false
|
60
|
-
|
65
|
+
version_requirements: *2152304360
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: i18n
|
68
|
+
requirement: &2152303820 !ruby/object:Gem::Requirement
|
61
69
|
none: false
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
66
|
-
segments:
|
67
|
-
- 0
|
68
|
-
version: "0"
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
69
74
|
type: :runtime
|
70
|
-
version_requirements: *id002
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: money
|
73
75
|
prerelease: false
|
74
|
-
|
76
|
+
version_requirements: *2152303820
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: money
|
79
|
+
requirement: &2152303240 !ruby/object:Gem::Requirement
|
75
80
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
|
80
|
-
segments:
|
81
|
-
- 0
|
82
|
-
version: "0"
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
83
85
|
type: :runtime
|
84
|
-
version_requirements: *id003
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: builder
|
87
86
|
prerelease: false
|
88
|
-
|
87
|
+
version_requirements: *2152303240
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
name: builder
|
90
|
+
requirement: &2152302600 !ruby/object:Gem::Requirement
|
89
91
|
none: false
|
90
|
-
requirements:
|
91
|
-
- -
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
hash: 15
|
94
|
-
segments:
|
95
|
-
- 2
|
96
|
-
- 0
|
97
|
-
- 0
|
92
|
+
requirements:
|
93
|
+
- - ! '>='
|
94
|
+
- !ruby/object:Gem::Version
|
98
95
|
version: 2.0.0
|
99
96
|
type: :runtime
|
100
|
-
version_requirements: *id004
|
101
|
-
- !ruby/object:Gem::Dependency
|
102
|
-
name: json
|
103
97
|
prerelease: false
|
104
|
-
|
98
|
+
version_requirements: *2152302600
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: json
|
101
|
+
requirement: &2152302000 !ruby/object:Gem::Requirement
|
105
102
|
none: false
|
106
|
-
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
hash: 1
|
110
|
-
segments:
|
111
|
-
- 1
|
112
|
-
- 5
|
113
|
-
- 1
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
114
106
|
version: 1.5.1
|
115
107
|
type: :runtime
|
116
|
-
version_requirements: *id005
|
117
|
-
- !ruby/object:Gem::Dependency
|
118
|
-
name: active_utils
|
119
108
|
prerelease: false
|
120
|
-
|
109
|
+
version_requirements: *2152302000
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: active_utils
|
112
|
+
requirement: &2152301460 !ruby/object:Gem::Requirement
|
121
113
|
none: false
|
122
|
-
requirements:
|
123
|
-
- -
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
hash: 19
|
126
|
-
segments:
|
127
|
-
- 1
|
128
|
-
- 0
|
129
|
-
- 2
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
130
117
|
version: 1.0.2
|
131
118
|
type: :runtime
|
132
|
-
version_requirements: *id006
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: nokogiri
|
135
119
|
prerelease: false
|
136
|
-
|
120
|
+
version_requirements: *2152301460
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: nokogiri
|
123
|
+
requirement: &2152300940 !ruby/object:Gem::Requirement
|
137
124
|
none: false
|
138
|
-
requirements:
|
139
|
-
- -
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
|
142
|
-
segments:
|
143
|
-
- 0
|
144
|
-
version: "0"
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
145
129
|
type: :runtime
|
146
|
-
version_requirements: *id007
|
147
|
-
- !ruby/object:Gem::Dependency
|
148
|
-
name: rake
|
149
130
|
prerelease: false
|
150
|
-
|
131
|
+
version_requirements: *2152300940
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: rake
|
134
|
+
requirement: &2152299940 !ruby/object:Gem::Requirement
|
151
135
|
none: false
|
152
|
-
requirements:
|
153
|
-
- -
|
154
|
-
- !ruby/object:Gem::Version
|
155
|
-
|
156
|
-
segments:
|
157
|
-
- 0
|
158
|
-
version: "0"
|
136
|
+
requirements:
|
137
|
+
- - ! '>='
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
159
140
|
type: :development
|
160
|
-
version_requirements: *id008
|
161
|
-
- !ruby/object:Gem::Dependency
|
162
|
-
name: mocha
|
163
141
|
prerelease: false
|
164
|
-
|
142
|
+
version_requirements: *2152299940
|
143
|
+
- !ruby/object:Gem::Dependency
|
144
|
+
name: mocha
|
145
|
+
requirement: &2152298900 !ruby/object:Gem::Requirement
|
165
146
|
none: false
|
166
|
-
requirements:
|
147
|
+
requirements:
|
167
148
|
- - ~>
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
hash: 53
|
170
|
-
segments:
|
171
|
-
- 0
|
172
|
-
- 11
|
173
|
-
- 3
|
149
|
+
- !ruby/object:Gem::Version
|
174
150
|
version: 0.11.3
|
175
151
|
type: :development
|
176
|
-
version_requirements: *id009
|
177
|
-
- !ruby/object:Gem::Dependency
|
178
|
-
name: rails
|
179
152
|
prerelease: false
|
180
|
-
|
153
|
+
version_requirements: *2152298900
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: rails
|
156
|
+
requirement: &2152298100 !ruby/object:Gem::Requirement
|
181
157
|
none: false
|
182
|
-
requirements:
|
183
|
-
- -
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
hash: 21
|
186
|
-
segments:
|
187
|
-
- 2
|
188
|
-
- 3
|
189
|
-
- 11
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
190
161
|
version: 2.3.11
|
191
162
|
type: :development
|
192
|
-
version_requirements: *id010
|
193
|
-
- !ruby/object:Gem::Dependency
|
194
|
-
name: rubigen
|
195
163
|
prerelease: false
|
196
|
-
|
164
|
+
version_requirements: *2152298100
|
165
|
+
- !ruby/object:Gem::Dependency
|
166
|
+
name: rubigen
|
167
|
+
requirement: &2160074260 !ruby/object:Gem::Requirement
|
197
168
|
none: false
|
198
|
-
requirements:
|
199
|
-
- -
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
|
202
|
-
segments:
|
203
|
-
- 0
|
204
|
-
version: "0"
|
169
|
+
requirements:
|
170
|
+
- - ! '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
205
173
|
type: :development
|
206
|
-
|
207
|
-
|
174
|
+
prerelease: false
|
175
|
+
version_requirements: *2160074260
|
176
|
+
description: Active Merchant is a simple payment abstraction library used in and sponsored
|
177
|
+
by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim
|
178
|
+
of the project is to feel natural to Ruby users and to abstract as many parts as
|
179
|
+
possible away from the user to offer a consistent interface across all supported
|
180
|
+
gateways.
|
208
181
|
email: tobi@leetsoft.com
|
209
182
|
executables: []
|
210
|
-
|
211
183
|
extensions: []
|
212
|
-
|
213
184
|
extra_rdoc_files: []
|
214
|
-
|
215
|
-
files:
|
185
|
+
files:
|
216
186
|
- CHANGELOG
|
217
187
|
- README.md
|
218
188
|
- MIT-LICENSE
|
@@ -433,36 +403,26 @@ files:
|
|
433
403
|
- lib/support/outbound_hosts.rb
|
434
404
|
homepage: http://activemerchant.org/
|
435
405
|
licenses: []
|
436
|
-
|
437
406
|
post_install_message:
|
438
407
|
rdoc_options: []
|
439
|
-
|
440
|
-
require_paths:
|
408
|
+
require_paths:
|
441
409
|
- lib
|
442
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
410
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
443
411
|
none: false
|
444
|
-
requirements:
|
445
|
-
- -
|
446
|
-
- !ruby/object:Gem::Version
|
447
|
-
|
448
|
-
|
449
|
-
- 0
|
450
|
-
version: "0"
|
451
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
412
|
+
requirements:
|
413
|
+
- - ! '>='
|
414
|
+
- !ruby/object:Gem::Version
|
415
|
+
version: '0'
|
416
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
452
417
|
none: false
|
453
|
-
requirements:
|
454
|
-
- -
|
455
|
-
- !ruby/object:Gem::Version
|
456
|
-
|
457
|
-
segments:
|
458
|
-
- 0
|
459
|
-
version: "0"
|
418
|
+
requirements:
|
419
|
+
- - ! '>='
|
420
|
+
- !ruby/object:Gem::Version
|
421
|
+
version: '0'
|
460
422
|
requirements: []
|
461
|
-
|
462
423
|
rubyforge_project: activemerchant
|
463
|
-
rubygems_version: 1.8.
|
424
|
+
rubygems_version: 1.8.16
|
464
425
|
signing_key:
|
465
426
|
specification_version: 3
|
466
427
|
summary: Framework and tools for dealing with credit card transactions.
|
467
428
|
test_files: []
|
468
|
-
|
metadata.gz.sig
CHANGED
Binary file
|