activemerchant 1.23.0 → 1.24.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|