activemerchant 1.29.1 → 1.30.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.
Files changed (50) hide show
  1. data/CHANGELOG +48 -0
  2. data/CONTRIBUTORS +19 -0
  3. data/README.md +43 -41
  4. data/lib/active_merchant/billing/check.rb +15 -11
  5. data/lib/active_merchant/billing/credit_card.rb +5 -1
  6. data/lib/active_merchant/billing/credit_card_formatting.rb +8 -8
  7. data/lib/active_merchant/billing/gateway.rb +1 -1
  8. data/lib/active_merchant/billing/gateways/authorize_net.rb +9 -1
  9. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +15 -4
  10. data/lib/active_merchant/billing/gateways/balanced.rb +9 -3
  11. data/lib/active_merchant/billing/gateways/banwire.rb +15 -1
  12. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +6 -2
  13. data/lib/active_merchant/billing/gateways/beanstream.rb +26 -24
  14. data/lib/active_merchant/billing/gateways/braintree_blue.rb +5 -2
  15. data/lib/active_merchant/billing/gateways/cyber_source.rb +55 -22
  16. data/lib/active_merchant/billing/gateways/eway.rb +114 -171
  17. data/lib/active_merchant/billing/gateways/eway_managed.rb +52 -22
  18. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +222 -0
  19. data/lib/active_merchant/billing/gateways/ideal_rabobank.rb +13 -2
  20. data/lib/active_merchant/billing/gateways/litle.rb +50 -19
  21. data/lib/active_merchant/billing/gateways/merchant_ware.rb +44 -9
  22. data/lib/active_merchant/billing/gateways/merchant_warrior.rb +190 -0
  23. data/lib/active_merchant/billing/gateways/moneris.rb +3 -5
  24. data/lib/active_merchant/billing/gateways/moneris_us.rb +1 -1
  25. data/lib/active_merchant/billing/gateways/nab_transact.rb +20 -3
  26. data/lib/active_merchant/billing/gateways/netbilling.rb +1 -0
  27. data/lib/active_merchant/billing/gateways/netpay.rb +223 -0
  28. data/lib/active_merchant/billing/gateways/optimal_payment.rb +18 -3
  29. data/lib/active_merchant/billing/gateways/orbital.rb +9 -5
  30. data/lib/active_merchant/billing/gateways/payment_express.rb +62 -1
  31. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
  32. data/lib/active_merchant/billing/gateways/paypal_express.rb +2 -0
  33. data/lib/active_merchant/billing/gateways/pin.rb +157 -0
  34. data/lib/active_merchant/billing/gateways/qbms.rb +3 -2
  35. data/lib/active_merchant/billing/gateways/quickpay.rb +66 -28
  36. data/lib/active_merchant/billing/gateways/sage_pay.rb +6 -0
  37. data/lib/active_merchant/billing/gateways/smart_ps.rb +1 -1
  38. data/lib/active_merchant/billing/gateways/spreedly_core.rb +235 -0
  39. data/lib/active_merchant/billing/gateways/stripe.rb +1 -0
  40. data/lib/active_merchant/billing/gateways/wirecard.rb +15 -9
  41. data/lib/active_merchant/billing/gateways/worldpay.rb +15 -4
  42. data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +4 -1
  43. data/lib/active_merchant/billing/integrations/paypal/notification.rb +39 -31
  44. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +13 -10
  45. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +14 -14
  46. data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +2 -2
  47. data/lib/active_merchant/version.rb +1 -1
  48. data.tar.gz.sig +0 -0
  49. metadata +109 -49
  50. metadata.gz.sig +0 -0
@@ -1,16 +1,17 @@
1
1
  require 'net/http'
2
+ require 'time'
2
3
 
3
4
  module ActiveMerchant #:nodoc:
4
5
  module Billing #:nodoc:
5
6
  module Integrations #:nodoc:
6
7
  module Paypal
7
- # Parser and handler for incoming Instant payment notifications from paypal.
8
+ # Parser and handler for incoming Instant payment notifications from paypal.
8
9
  # The Example shows a typical handler in a rails application. Note that this
9
10
  # is an example, please read the Paypal API documentation for all the details
10
11
  # on creating a safe payment controller.
11
12
  #
12
13
  # Example
13
- #
14
+ #
14
15
  # class BackendController < ApplicationController
15
16
  # include ActiveMerchant::Billing::Integrations
16
17
  #
@@ -20,28 +21,28 @@ module ActiveMerchant #:nodoc:
20
21
  # if notify.masspay?
21
22
  # masspay_items = notify.items
22
23
  # end
23
- #
24
+ #
24
25
  # order = Order.find(notify.item_id)
25
- #
26
- # if notify.acknowledge
26
+ #
27
+ # if notify.acknowledge
27
28
  # begin
28
- #
29
+ #
29
30
  # if notify.complete? and order.total == notify.amount
30
- # order.status = 'success'
31
- #
31
+ # order.status = 'success'
32
+ #
32
33
  # shop.ship(order)
33
34
  # else
34
35
  # logger.error("Failed to verify Paypal's notification, please investigate")
35
36
  # end
36
- #
37
+ #
37
38
  # rescue => e
38
- # order.status = 'failed'
39
+ # order.status = 'failed'
39
40
  # raise
40
41
  # ensure
41
42
  # order.save
42
43
  # end
43
44
  # end
44
- #
45
+ #
45
46
  # render :nothing
46
47
  # end
47
48
  # end
@@ -52,7 +53,7 @@ module ActiveMerchant #:nodoc:
52
53
  super
53
54
  extend MassPayNotification if masspay?
54
55
  end
55
-
56
+
56
57
  # Was the transaction complete?
57
58
  def complete?
58
59
  status == "Completed"
@@ -63,13 +64,20 @@ module ActiveMerchant #:nodoc:
63
64
  type == "masspay"
64
65
  end
65
66
 
66
- # When was this payment received by the client.
67
- # sometimes it can happen that we get the notification much later.
68
- # One possible scenario is that our web application was down. In this case paypal tries several
67
+ # When was this payment received by the client.
68
+ # sometimes it can happen that we get the notification much later.
69
+ # One possible scenario is that our web application was down. In this case paypal tries several
69
70
  # times an hour to inform us about the notification
70
71
  def received_at
71
- parsed_time_fields = DateTime._strptime(params['payment_date'], "%H:%M:%S %b %d, %Y %z")
72
- Time.mktime(*parsed_time_fields.values_at(:year, :mon, :mday, :hour, :min, :sec, :zone))
72
+ parsed_time_fields = DateTime._strptime(params['payment_date'], "%H:%M:%S %b %d, %Y %Z")
73
+ Time.gm(
74
+ parsed_time_fields[:year],
75
+ parsed_time_fields[:mon],
76
+ parsed_time_fields[:mday],
77
+ parsed_time_fields[:hour],
78
+ parsed_time_fields[:min],
79
+ parsed_time_fields[:sec]
80
+ ) + Time.zone_offset(parsed_time_fields[:zone])
73
81
  end
74
82
 
75
83
  # Status of transaction. List of possible values:
@@ -94,8 +102,8 @@ module ActiveMerchant #:nodoc:
94
102
  params['txn_id']
95
103
  end
96
104
 
97
- # What type of transaction are we dealing with?
98
- # "cart" "send_money" "web_accept" are possible here.
105
+ # What type of transaction are we dealing with?
106
+ # "cart" "send_money" "web_accept" are possible here.
99
107
  def type
100
108
  params['txn_type']
101
109
  end
@@ -115,37 +123,37 @@ module ActiveMerchant #:nodoc:
115
123
  params['mc_currency']
116
124
  end
117
125
 
118
- # This is the item number which we submitted to paypal
126
+ # This is the item number which we submitted to paypal
119
127
  # The custom field is also mapped to item_id because PayPal
120
128
  # doesn't return item_number in dispute notifications
121
129
  def item_id
122
130
  params['item_number'] || params['custom']
123
131
  end
124
132
 
125
- # This is the invoice which you passed to paypal
133
+ # This is the invoice which you passed to paypal
126
134
  def invoice
127
135
  params['invoice']
128
- end
136
+ end
129
137
 
130
138
  # Was this a test transaction?
131
139
  def test?
132
140
  params['test_ipn'] == '1'
133
141
  end
134
-
142
+
135
143
  def account
136
144
  params['business'] || params['receiver_email']
137
145
  end
138
146
 
139
- # Acknowledge the transaction to paypal. This method has to be called after a new
140
- # ipn arrives. Paypal will verify that all the information we received are correct and will return a
141
- # ok or a fail.
142
- #
147
+ # Acknowledge the transaction to paypal. This method has to be called after a new
148
+ # ipn arrives. Paypal will verify that all the information we received are correct and will return a
149
+ # ok or a fail.
150
+ #
143
151
  # Example:
144
- #
152
+ #
145
153
  # def paypal_ipn
146
154
  # notify = PaypalNotification.new(request.raw_post)
147
155
  #
148
- # if notify.acknowledge
156
+ # if notify.acknowledge
149
157
  # ... process order ... if notify.complete?
150
158
  # else
151
159
  # ... log possible hacking attempt ...
@@ -153,11 +161,11 @@ module ActiveMerchant #:nodoc:
153
161
  def acknowledge
154
162
  payload = raw
155
163
 
156
- response = ssl_post(Paypal.service_url + '?cmd=_notify-validate', payload,
164
+ response = ssl_post(Paypal.service_url + '?cmd=_notify-validate', payload,
157
165
  'Content-Length' => "#{payload.size}",
158
166
  'User-Agent' => "Active Merchant -- http://activemerchant.org"
159
167
  )
160
-
168
+
161
169
  raise StandardError.new("Faulty paypal result: #{response}") unless ["VERIFIED", "INVALID"].include?(response)
162
170
 
163
171
  response == "VERIFIED"
@@ -7,39 +7,40 @@ module ActiveMerchant #:nodoc:
7
7
  def initialize(order, account, options = {})
8
8
  md5secret options.delete(:credential2)
9
9
  super
10
- add_field('protocol', '3')
10
+ add_field('protocol', '6')
11
11
  add_field('msgtype', 'authorize')
12
12
  add_field('language', 'da')
13
13
  add_field('autocapture', 0)
14
14
  add_field('testmode', test? ? 1 : 0)
15
15
  add_field('ordernumber', format_order_number(order))
16
16
  end
17
-
17
+
18
18
  def md5secret(value)
19
19
  @md5secret = value
20
20
  end
21
-
21
+
22
22
  def form_fields
23
23
  @fields.merge('md5check' => generate_md5check)
24
24
  end
25
-
25
+
26
26
  def generate_md5string
27
27
  MD5_CHECK_FIELDS.map {|key| @fields[key.to_s]} * "" + @md5secret
28
28
  end
29
-
29
+
30
30
  def generate_md5check
31
31
  Digest::MD5.hexdigest(generate_md5string)
32
32
  end
33
33
 
34
34
  # Limited to 20 digits max
35
35
  def format_order_number(number)
36
- number.to_s.gsub(/[^\w_]/, '').rjust(4, "0")[0...20]
36
+ number.to_s.gsub(/[^\w]/, '').rjust(4, "0")[0...20]
37
37
  end
38
-
38
+
39
39
  MD5_CHECK_FIELDS = [
40
- :protocol, :msgtype, :merchant, :language, :ordernumber,
40
+ :protocol, :msgtype, :merchant, :language, :ordernumber,
41
41
  :amount, :currency, :continueurl, :cancelurl, :callbackurl,
42
- :autocapture, :cardtypelock, :description, :ipaddress, :testmode
42
+ :autocapture, :cardtypelock, :description, :ipaddress, :testmode,
43
+ :deadline, :cardhash
43
44
  ]
44
45
 
45
46
  mapping :protocol, 'protocol'
@@ -48,7 +49,7 @@ module ActiveMerchant #:nodoc:
48
49
  mapping :language, 'language'
49
50
  mapping :amount, 'amount'
50
51
  mapping :currency, 'currency'
51
-
52
+
52
53
  mapping :return_url, 'continueurl'
53
54
  mapping :cancel_return_url, 'cancelurl'
54
55
  mapping :notify_url, 'callbackurl'
@@ -59,6 +60,8 @@ module ActiveMerchant #:nodoc:
59
60
  mapping :description, 'description'
60
61
  mapping :ipaddress, 'ipaddress'
61
62
  mapping :testmode, 'testmode'
63
+ mapping :deadline, 'deadline'
64
+ mapping :cardhash, 'cardhash'
62
65
 
63
66
  mapping :customer, ''
64
67
  mapping :billing_address, {}
@@ -7,7 +7,7 @@ module ActiveMerchant #:nodoc:
7
7
  class Notification < ActiveMerchant::Billing::Integrations::Notification
8
8
  def complete?
9
9
  status == '000'
10
- end
10
+ end
11
11
 
12
12
  def item_id
13
13
  params['ordernumber']
@@ -18,7 +18,10 @@ module ActiveMerchant #:nodoc:
18
18
  end
19
19
 
20
20
  def received_at
21
- Time.parse("20#{params['time']}")
21
+ time = params['time']
22
+ # If time only contains 12 integers then it's pre v5 format
23
+ time = "20#{params['time']}" if /[0-9]{12}/.match(params['time'])
24
+ Time.parse(time)
22
25
  end
23
26
 
24
27
  def gross
@@ -29,10 +32,6 @@ module ActiveMerchant #:nodoc:
29
32
  params['amount'].to_i
30
33
  end
31
34
 
32
- def test?
33
- params['testmode'] == 'Yes'
34
- end
35
-
36
35
  def status
37
36
  params['qpstat']
38
37
  end
@@ -40,9 +39,9 @@ module ActiveMerchant #:nodoc:
40
39
  def currency
41
40
  params['currency']
42
41
  end
43
-
42
+
44
43
  # Provide access to raw fields from quickpay
45
- %w(msgtype ordernumber state chstat chstatmsg qpstat qpstatmsg merchant merchantemail cardtype cardnumber).each do |attr|
44
+ %w(msgtype ordernumber state chstat chstatmsg qpstat qpstatmsg merchant merchantemail cardtype cardnumber splitpayment fraudprobability fraudremarks fraudreport fee).each do |attr|
46
45
  define_method(attr) do
47
46
  params[attr]
48
47
  end
@@ -50,21 +49,22 @@ module ActiveMerchant #:nodoc:
50
49
 
51
50
  MD5_CHECK_FIELDS = [
52
51
  :msgtype, :ordernumber, :amount, :currency, :time, :state,
53
- :chstat, :chstatmsg, :qpstat, :qpstatmsg, :merchant, :merchantemail,
54
- :transaction, :cardtype, :cardnumber, :testmode
52
+ :qpstat, :qpstatmsg, :chstat, :chstatmsg, :merchant, :merchantemail,
53
+ :transaction, :cardtype, :cardnumber, :splitpayment, :fraudprobability,
54
+ :fraudremarks, :fraudreport, :fee
55
55
  ]
56
56
 
57
57
  def generate_md5string
58
- MD5_CHECK_FIELDS.map { |key| params[key.to_s] } * "" + @options[:credential2]
58
+ MD5_CHECK_FIELDS.map { |key| params[key.to_s] } * "" + @options[:credential2].to_s
59
59
  end
60
-
60
+
61
61
  def generate_md5check
62
62
  Digest::MD5.hexdigest(generate_md5string)
63
63
  end
64
-
64
+
65
65
  # Quickpay doesn't do acknowledgements of callback notifications
66
66
  # Instead it uses and MD5 hash of all parameters
67
- def acknowledge
67
+ def acknowledge
68
68
  generate_md5check == params['md5check']
69
69
  end
70
70
  end
@@ -64,8 +64,8 @@ module ActiveMerchant #:nodoc:
64
64
 
65
65
  fields['FailureURL'] ||= fields['SuccessURL']
66
66
 
67
- fields['BillingPostCode'] ||= "0000" if fields['BillingCountry'] == "IE"
68
- fields['DeliveryPostCode'] ||= "0000" if fields['DeliveryCountry'] == "IE"
67
+ fields['BillingPostCode'] ||= "0000"
68
+ fields['DeliveryPostCode'] ||= "0000"
69
69
 
70
70
  crypt_skip = ['Vendor', 'EncryptKey', 'SendEmail']
71
71
  crypt_skip << 'BillingState' unless fields['BillingCountry'] == 'US'
@@ -1,3 +1,3 @@
1
1
  module ActiveMerchant
2
- VERSION = "1.29.1"
2
+ VERSION = "1.30.0"
3
3
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemerchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.29.1
5
4
  prerelease:
5
+ version: 1.30.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Tobias Luetke
@@ -37,129 +37,184 @@ cert_chain:
37
37
  Z1BvU1BxN25rK3MyRlFVQko5VVpGSzFsZ016aG8vNGZaZ3pKd2J1K2NPOFNO
38
38
  dWFMUy9iagpoUGFTVHlWVTB5Q1Nudz09Ci0tLS0tRU5EIENFUlRJRklDQVRF
39
39
  LS0tLS0K
40
- date: 2012-12-05 00:00:00.000000000 Z
40
+ date: 2013-02-13 00:00:00.000000000 Z
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
43
- name: activesupport
44
- requirement: &70335632813660 !ruby/object:Gem::Requirement
45
- none: false
43
+ version_requirements: !ruby/object:Gem::Requirement
46
44
  requirements:
47
45
  - - ! '>='
48
46
  - !ruby/object:Gem::Version
49
47
  version: 2.3.14
48
+ none: false
49
+ name: activesupport
50
50
  type: :runtime
51
51
  prerelease: false
52
- version_requirements: *70335632813660
53
- - !ruby/object:Gem::Dependency
54
- name: i18n
55
- requirement: &70335632813220 !ruby/object:Gem::Requirement
52
+ requirement: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: 2.3.14
56
57
  none: false
58
+ - !ruby/object:Gem::Dependency
59
+ version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
61
  - - ! '>='
59
62
  - !ruby/object:Gem::Version
60
63
  version: '0'
64
+ none: false
65
+ name: i18n
61
66
  type: :runtime
62
67
  prerelease: false
63
- version_requirements: *70335632813220
64
- - !ruby/object:Gem::Dependency
65
- name: money
66
- requirement: &70335632812700 !ruby/object:Gem::Requirement
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
67
73
  none: false
74
+ - !ruby/object:Gem::Dependency
75
+ version_requirements: !ruby/object:Gem::Requirement
68
76
  requirements:
69
77
  - - ! '>='
70
78
  - !ruby/object:Gem::Version
71
79
  version: '0'
80
+ none: false
81
+ name: money
72
82
  type: :runtime
73
83
  prerelease: false
74
- version_requirements: *70335632812700
75
- - !ruby/object:Gem::Dependency
76
- name: builder
77
- requirement: &70335632812180 !ruby/object:Gem::Requirement
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
78
89
  none: false
90
+ - !ruby/object:Gem::Dependency
91
+ version_requirements: !ruby/object:Gem::Requirement
79
92
  requirements:
80
93
  - - ! '>='
81
94
  - !ruby/object:Gem::Version
82
95
  version: 2.0.0
96
+ none: false
97
+ name: builder
83
98
  type: :runtime
84
99
  prerelease: false
85
- version_requirements: *70335632812180
86
- - !ruby/object:Gem::Dependency
87
- name: json
88
- requirement: &70335632811640 !ruby/object:Gem::Requirement
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: 2.0.0
89
105
  none: false
106
+ - !ruby/object:Gem::Dependency
107
+ version_requirements: !ruby/object:Gem::Requirement
90
108
  requirements:
91
109
  - - ! '>='
92
110
  - !ruby/object:Gem::Version
93
111
  version: 1.5.1
112
+ none: false
113
+ name: json
94
114
  type: :runtime
95
115
  prerelease: false
96
- version_requirements: *70335632811640
97
- - !ruby/object:Gem::Dependency
98
- name: active_utils
99
- requirement: &70335632811140 !ruby/object:Gem::Requirement
116
+ requirement: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: 1.5.1
100
121
  none: false
122
+ - !ruby/object:Gem::Dependency
123
+ version_requirements: !ruby/object:Gem::Requirement
101
124
  requirements:
102
125
  - - ! '>='
103
126
  - !ruby/object:Gem::Version
104
127
  version: 1.0.2
128
+ none: false
129
+ name: active_utils
105
130
  type: :runtime
106
131
  prerelease: false
107
- version_requirements: *70335632811140
108
- - !ruby/object:Gem::Dependency
109
- name: nokogiri
110
- requirement: &70335632810740 !ruby/object:Gem::Requirement
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: 1.0.2
111
137
  none: false
138
+ - !ruby/object:Gem::Dependency
139
+ version_requirements: !ruby/object:Gem::Requirement
112
140
  requirements:
113
141
  - - ! '>='
114
142
  - !ruby/object:Gem::Version
115
143
  version: '0'
144
+ none: false
145
+ name: nokogiri
116
146
  type: :runtime
117
147
  prerelease: false
118
- version_requirements: *70335632810740
119
- - !ruby/object:Gem::Dependency
120
- name: rake
121
- requirement: &70335632810240 !ruby/object:Gem::Requirement
148
+ requirement: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
122
153
  none: false
154
+ - !ruby/object:Gem::Dependency
155
+ version_requirements: !ruby/object:Gem::Requirement
123
156
  requirements:
124
157
  - - ! '>='
125
158
  - !ruby/object:Gem::Version
126
159
  version: '0'
160
+ none: false
161
+ name: rake
127
162
  type: :development
128
163
  prerelease: false
129
- version_requirements: *70335632810240
130
- - !ruby/object:Gem::Dependency
131
- name: mocha
132
- requirement: &70335632809700 !ruby/object:Gem::Requirement
164
+ requirement: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
133
169
  none: false
170
+ - !ruby/object:Gem::Dependency
171
+ version_requirements: !ruby/object:Gem::Requirement
134
172
  requirements:
135
173
  - - ~>
136
174
  - !ruby/object:Gem::Version
137
175
  version: 0.11.3
176
+ none: false
177
+ name: mocha
138
178
  type: :development
139
179
  prerelease: false
140
- version_requirements: *70335632809700
141
- - !ruby/object:Gem::Dependency
142
- name: rails
143
- requirement: &70335632809180 !ruby/object:Gem::Requirement
180
+ requirement: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ~>
183
+ - !ruby/object:Gem::Version
184
+ version: 0.11.3
144
185
  none: false
186
+ - !ruby/object:Gem::Dependency
187
+ version_requirements: !ruby/object:Gem::Requirement
145
188
  requirements:
146
189
  - - ! '>='
147
190
  - !ruby/object:Gem::Version
148
191
  version: 2.3.14
192
+ none: false
193
+ name: rails
149
194
  type: :development
150
195
  prerelease: false
151
- version_requirements: *70335632809180
152
- - !ruby/object:Gem::Dependency
153
- name: thor
154
- requirement: &70335632808760 !ruby/object:Gem::Requirement
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
200
+ version: 2.3.14
155
201
  none: false
202
+ - !ruby/object:Gem::Dependency
203
+ version_requirements: !ruby/object:Gem::Requirement
156
204
  requirements:
157
205
  - - ! '>='
158
206
  - !ruby/object:Gem::Version
159
207
  version: '0'
208
+ none: false
209
+ name: thor
160
210
  type: :development
161
211
  prerelease: false
162
- version_requirements: *70335632808760
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ! '>='
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ none: false
163
218
  description: Active Merchant is a simple payment abstraction library used in and sponsored
164
219
  by Shopify. It is written by Tobias Luetke, Cody Fauser, and contributors. The aim
165
220
  of the project is to feel natural to Ruby users and to abstract as many parts as
@@ -213,6 +268,7 @@ files:
213
268
  - lib/active_merchant/billing/gateways/fat_zebra.rb
214
269
  - lib/active_merchant/billing/gateways/federated_canada.rb
215
270
  - lib/active_merchant/billing/gateways/first_pay.rb
271
+ - lib/active_merchant/billing/gateways/firstdata_e4.rb
216
272
  - lib/active_merchant/billing/gateways/garanti.rb
217
273
  - lib/active_merchant/billing/gateways/hdfc.rb
218
274
  - lib/active_merchant/billing/gateways/ideal/ideal_base.rb
@@ -228,6 +284,7 @@ files:
228
284
  - lib/active_merchant/billing/gateways/litle.rb
229
285
  - lib/active_merchant/billing/gateways/merchant_e_solutions.rb
230
286
  - lib/active_merchant/billing/gateways/merchant_ware.rb
287
+ - lib/active_merchant/billing/gateways/merchant_warrior.rb
231
288
  - lib/active_merchant/billing/gateways/mercury.rb
232
289
  - lib/active_merchant/billing/gateways/metrics_global.rb
233
290
  - lib/active_merchant/billing/gateways/migs/migs_codes.rb
@@ -240,6 +297,7 @@ files:
240
297
  - lib/active_merchant/billing/gateways/net_registry.rb
241
298
  - lib/active_merchant/billing/gateways/netaxept.rb
242
299
  - lib/active_merchant/billing/gateways/netbilling.rb
300
+ - lib/active_merchant/billing/gateways/netpay.rb
243
301
  - lib/active_merchant/billing/gateways/nmi.rb
244
302
  - lib/active_merchant/billing/gateways/ogone.rb
245
303
  - lib/active_merchant/billing/gateways/optimal_payment.rb
@@ -268,6 +326,7 @@ files:
268
326
  - lib/active_merchant/billing/gateways/paypal_express_common.rb
269
327
  - lib/active_merchant/billing/gateways/paystation.rb
270
328
  - lib/active_merchant/billing/gateways/payway.rb
329
+ - lib/active_merchant/billing/gateways/pin.rb
271
330
  - lib/active_merchant/billing/gateways/plugnpay.rb
272
331
  - lib/active_merchant/billing/gateways/psigate.rb
273
332
  - lib/active_merchant/billing/gateways/psl_card.rb
@@ -289,6 +348,7 @@ files:
289
348
  - lib/active_merchant/billing/gateways/secure_pay_tech.rb
290
349
  - lib/active_merchant/billing/gateways/skip_jack.rb
291
350
  - lib/active_merchant/billing/gateways/smart_ps.rb
351
+ - lib/active_merchant/billing/gateways/spreedly_core.rb
292
352
  - lib/active_merchant/billing/gateways/stripe.rb
293
353
  - lib/active_merchant/billing/gateways/trans_first.rb
294
354
  - lib/active_merchant/billing/gateways/transax.rb
@@ -452,20 +512,20 @@ rdoc_options: []
452
512
  require_paths:
453
513
  - lib
454
514
  required_ruby_version: !ruby/object:Gem::Requirement
455
- none: false
456
515
  requirements:
457
516
  - - ! '>='
458
517
  - !ruby/object:Gem::Version
459
518
  version: '0'
460
- required_rubygems_version: !ruby/object:Gem::Requirement
461
519
  none: false
520
+ required_rubygems_version: !ruby/object:Gem::Requirement
462
521
  requirements:
463
522
  - - ! '>='
464
523
  - !ruby/object:Gem::Version
465
524
  version: '0'
525
+ none: false
466
526
  requirements: []
467
527
  rubyforge_project: activemerchant
468
- rubygems_version: 1.8.11
528
+ rubygems_version: 1.8.23
469
529
  signing_key:
470
530
  specification_version: 3
471
531
  summary: Framework and tools for dealing with credit card transactions.
metadata.gz.sig CHANGED
Binary file