activemerchant 1.44.1 → 1.45.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 (58) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -3
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG +48 -0
  5. data/CONTRIBUTORS +12 -0
  6. data/README.md +15 -5
  7. data/lib/active_merchant/billing.rb +2 -0
  8. data/lib/active_merchant/billing/apple_pay_payment_token.rb +22 -0
  9. data/lib/active_merchant/billing/gateway.rb +36 -4
  10. data/lib/active_merchant/billing/gateways/adyen.rb +6 -2
  11. data/lib/active_merchant/billing/gateways/authorize_net.rb +332 -255
  12. data/lib/active_merchant/billing/gateways/bank_frick.rb +225 -0
  13. data/lib/active_merchant/billing/gateways/bogus.rb +9 -9
  14. data/lib/active_merchant/billing/gateways/borgun.rb +0 -1
  15. data/lib/active_merchant/billing/gateways/braintree_blue.rb +8 -0
  16. data/lib/active_merchant/billing/gateways/cashnet.rb +17 -10
  17. data/lib/active_merchant/billing/gateways/checkout.rb +213 -0
  18. data/lib/active_merchant/billing/gateways/conekta.rb +1 -1
  19. data/lib/active_merchant/billing/gateways/cyber_source.rb +1 -1
  20. data/lib/active_merchant/billing/gateways/elavon.rb +3 -3
  21. data/lib/active_merchant/billing/gateways/eway_rapid.rb +114 -13
  22. data/lib/active_merchant/billing/gateways/finansbank.rb +1 -1
  23. data/lib/active_merchant/billing/gateways/global_transport.rb +183 -0
  24. data/lib/active_merchant/billing/gateways/hps.rb +27 -20
  25. data/lib/active_merchant/billing/gateways/iats_payments.rb +68 -35
  26. data/lib/active_merchant/billing/gateways/litle.rb +36 -1
  27. data/lib/active_merchant/billing/gateways/merchant_one.rb +0 -1
  28. data/lib/active_merchant/billing/gateways/merchant_ware.rb +8 -4
  29. data/lib/active_merchant/billing/gateways/mercury.rb +17 -10
  30. data/lib/active_merchant/billing/gateways/moneris.rb +11 -6
  31. data/lib/active_merchant/billing/gateways/moneris_us.rb +126 -33
  32. data/lib/active_merchant/billing/gateways/money_movers.rb +0 -1
  33. data/lib/active_merchant/billing/gateways/net_registry.rb +6 -1
  34. data/lib/active_merchant/billing/gateways/network_merchants.rb +5 -5
  35. data/lib/active_merchant/billing/gateways/nmi.rb +241 -5
  36. data/lib/active_merchant/billing/gateways/openpay.rb +1 -0
  37. data/lib/active_merchant/billing/gateways/optimal_payment.rb +6 -1
  38. data/lib/active_merchant/billing/gateways/orbital.rb +6 -4
  39. data/lib/active_merchant/billing/gateways/pay_junction.rb +9 -5
  40. data/lib/active_merchant/billing/gateways/payex.rb +19 -9
  41. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +2 -2
  42. data/lib/active_merchant/billing/gateways/paypal/paypal_express_response.rb +4 -0
  43. data/lib/active_merchant/billing/gateways/payscout.rb +0 -2
  44. data/lib/active_merchant/billing/gateways/pin.rb +1 -1
  45. data/lib/active_merchant/billing/gateways/psigate.rb +1 -2
  46. data/lib/active_merchant/billing/gateways/redsys.rb +37 -40
  47. data/lib/active_merchant/billing/gateways/secure_pay.rb +181 -9
  48. data/lib/active_merchant/billing/gateways/stripe.rb +106 -31
  49. data/lib/active_merchant/billing/gateways/tns.rb +227 -0
  50. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +38 -10
  51. data/lib/active_merchant/billing/gateways/webpay.rb +14 -0
  52. data/lib/active_merchant/billing/payment_token.rb +21 -0
  53. data/lib/active_merchant/billing/response.rb +2 -1
  54. data/lib/active_merchant/country.rb +6 -1
  55. data/lib/active_merchant/version.rb +1 -1
  56. metadata +8 -3
  57. metadata.gz.sig +0 -0
  58. data/lib/active_merchant/billing/gateways/samurai.rb +0 -130
@@ -60,6 +60,20 @@ module ActiveMerchant #:nodoc:
60
60
  end
61
61
  end
62
62
 
63
+ def update(customer_id, creditcard, options = {})
64
+ post = {}
65
+ add_creditcard(post, creditcard, options)
66
+ commit(:post, "customers/#{CGI.escape(customer_id)}", post, options)
67
+ end
68
+
69
+ private
70
+
71
+ def create_post_for_auth_or_purchase(money, creditcard, options)
72
+ stripe_post = super
73
+ stripe_post[:description] ||= stripe_post.delete(:metadata).try(:[], :email)
74
+ stripe_post
75
+ end
76
+
63
77
  def json_error(raw_response)
64
78
  msg = 'Invalid response received from the WebPay API. Please contact support@webpay.jp if you continue to receive this message.'
65
79
  msg += " (The raw response returned by the API was #{raw_response.inspect})"
@@ -0,0 +1,21 @@
1
+ module ActiveMerchant #:nodoc:
2
+ module Billing #:nodoc:
3
+ # Base class representation of cryptographic payment data tokens that may be used for EMV-style transactions
4
+ # like Apple Pay. Payment data may be transmitted via any data type, and may also be padded
5
+ # with metadata specific to the cryptographer. This metadata should be parsed and interpreted in concrete
6
+ # implementations of your given cryptographer. Like credit cards, you must also return a string representing
7
+ # the token's type, like 'apple_pay' or 'stripe' should your target payment gateway process these tokens.
8
+ class PaymentToken
9
+ attr_reader :payment_data, :type
10
+
11
+ def initialize(payment_data, options = {})
12
+ @payment_data = payment_data
13
+ @metadata = options.with_indifferent_access
14
+ end
15
+
16
+ def type
17
+ raise NotImplementedError
18
+ end
19
+ end
20
+ end
21
+ end
@@ -4,7 +4,7 @@ module ActiveMerchant #:nodoc:
4
4
  end
5
5
 
6
6
  class Response
7
- attr_reader :params, :message, :test, :authorization, :avs_result, :cvv_result
7
+ attr_reader :params, :message, :test, :authorization, :avs_result, :cvv_result, :error_code
8
8
 
9
9
  def success?
10
10
  @success
@@ -23,6 +23,7 @@ module ActiveMerchant #:nodoc:
23
23
  @test = options[:test] || false
24
24
  @authorization = options[:authorization]
25
25
  @fraud_review = options[:fraud_review]
26
+ @error_code = options[:error_code]
26
27
 
27
28
  @avs_result = if options[:avs_result].kind_of?(AVSResult)
28
29
  options[:avs_result].to_hash
@@ -47,8 +47,13 @@ module ActiveMerchant #:nodoc:
47
47
  end
48
48
 
49
49
  def ==(other)
50
- (@name == other.name)
50
+ if other.class == ActiveMerchant::Country
51
+ (@name == other.name)
52
+ else
53
+ super
54
+ end
51
55
  end
56
+
52
57
  alias eql? ==
53
58
 
54
59
  def hash
@@ -1,3 +1,3 @@
1
1
  module ActiveMerchant
2
- VERSION = "1.44.1"
2
+ VERSION = "1.45.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activemerchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.44.1
4
+ version: 1.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Luetke
@@ -30,7 +30,7 @@ cert_chain:
30
30
  fl3hbtVFTqbOlwL9vy1fudXcolIE/ZTcxQ+er07ZFZdKCXayR9PPs64heamfn0fp
31
31
  TConQSX2BnZdhIEYW+cKzEC/bLc=
32
32
  -----END CERTIFICATE-----
33
- date: 2014-08-29 00:00:00.000000000 Z
33
+ date: 2014-12-02 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: activesupport
@@ -214,6 +214,7 @@ files:
214
214
  - README.md
215
215
  - lib/active_merchant.rb
216
216
  - lib/active_merchant/billing.rb
217
+ - lib/active_merchant/billing/apple_pay_payment_token.rb
217
218
  - lib/active_merchant/billing/avs_result.rb
218
219
  - lib/active_merchant/billing/base.rb
219
220
  - lib/active_merchant/billing/check.rb
@@ -230,6 +231,7 @@ files:
230
231
  - lib/active_merchant/billing/gateways/authorize_net_arb.rb
231
232
  - lib/active_merchant/billing/gateways/authorize_net_cim.rb
232
233
  - lib/active_merchant/billing/gateways/balanced.rb
234
+ - lib/active_merchant/billing/gateways/bank_frick.rb
233
235
  - lib/active_merchant/billing/gateways/banwire.rb
234
236
  - lib/active_merchant/billing/gateways/barclays_epdq.rb
235
237
  - lib/active_merchant/billing/gateways/barclays_epdq_extra_plus.rb
@@ -251,6 +253,7 @@ files:
251
253
  - lib/active_merchant/billing/gateways/cc5.rb
252
254
  - lib/active_merchant/billing/gateways/cecabank.rb
253
255
  - lib/active_merchant/billing/gateways/certo_direct.rb
256
+ - lib/active_merchant/billing/gateways/checkout.rb
254
257
  - lib/active_merchant/billing/gateways/commercegate.rb
255
258
  - lib/active_merchant/billing/gateways/conekta.rb
256
259
  - lib/active_merchant/billing/gateways/cyber_source.rb
@@ -270,6 +273,7 @@ files:
270
273
  - lib/active_merchant/billing/gateways/first_pay.rb
271
274
  - lib/active_merchant/billing/gateways/firstdata_e4.rb
272
275
  - lib/active_merchant/billing/gateways/garanti.rb
276
+ - lib/active_merchant/billing/gateways/global_transport.rb
273
277
  - lib/active_merchant/billing/gateways/hdfc.rb
274
278
  - lib/active_merchant/billing/gateways/hps.rb
275
279
  - lib/active_merchant/billing/gateways/iats_payments.rb
@@ -354,7 +358,6 @@ files:
354
358
  - lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb
355
359
  - lib/active_merchant/billing/gateways/sage_pay.rb
356
360
  - lib/active_merchant/billing/gateways/sallie_mae.rb
357
- - lib/active_merchant/billing/gateways/samurai.rb
358
361
  - lib/active_merchant/billing/gateways/secure_net.rb
359
362
  - lib/active_merchant/billing/gateways/secure_pay.rb
360
363
  - lib/active_merchant/billing/gateways/secure_pay_au.rb
@@ -365,6 +368,7 @@ files:
365
368
  - lib/active_merchant/billing/gateways/spreedly_core.rb
366
369
  - lib/active_merchant/billing/gateways/stripe.rb
367
370
  - lib/active_merchant/billing/gateways/swipe_checkout.rb
371
+ - lib/active_merchant/billing/gateways/tns.rb
368
372
  - lib/active_merchant/billing/gateways/trans_first.rb
369
373
  - lib/active_merchant/billing/gateways/transax.rb
370
374
  - lib/active_merchant/billing/gateways/transnational.rb
@@ -381,6 +385,7 @@ files:
381
385
  - lib/active_merchant/billing/gateways/worldpay.rb
382
386
  - lib/active_merchant/billing/gateways/worldpay_us.rb
383
387
  - lib/active_merchant/billing/model.rb
388
+ - lib/active_merchant/billing/payment_token.rb
384
389
  - lib/active_merchant/billing/rails.rb
385
390
  - lib/active_merchant/billing/response.rb
386
391
  - lib/active_merchant/country.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,130 +0,0 @@
1
- module ActiveMerchant #:nodoc:
2
- module Billing #:nodoc:
3
- class SamuraiGateway < Gateway
4
-
5
- self.homepage_url = 'https://samurai.feefighters.com'
6
- self.display_name = 'Samurai'
7
- self.supported_countries = ['US']
8
- self.supported_cardtypes = [:visa, :master, :american_express, :discover, :jcb, :diners_club]
9
- self.default_currency = 'USD'
10
- self.money_format = :dollars
11
-
12
- def initialize(options = {})
13
- begin
14
- require 'samurai'
15
- rescue LoadError
16
- raise "Could not load the samurai gem (>= 0.2.25). Use `gem install samurai` to install it."
17
- end
18
-
19
- requires!(options, :login, :password, :processor_token)
20
- Samurai.options = {
21
- :merchant_key => options[:login],
22
- :merchant_password => options[:password],
23
- :processor_token => options[:processor_token]
24
- }
25
-
26
- super
27
- end
28
-
29
- def authorize(money, credit_card_or_vault_id, options = {})
30
- token = payment_method_token(credit_card_or_vault_id, options)
31
- return token if token.is_a?(Response)
32
-
33
- authorize = Samurai::Processor.authorize(token, amount(money), processor_options(options))
34
- handle_result(authorize)
35
- rescue ActiveResource::ServerError => e
36
- Response.new(false, e.message, {}, test: test?)
37
- end
38
-
39
- def purchase(money, credit_card_or_vault_id, options = {})
40
- token = payment_method_token(credit_card_or_vault_id, options)
41
- return token if token.is_a?(Response)
42
-
43
- purchase = Samurai::Processor.purchase(token, amount(money), processor_options(options))
44
- handle_result(purchase)
45
- rescue ActiveResource::ServerError => e
46
- Response.new(false, e.message, {}, test: test?)
47
- end
48
-
49
- def capture(money, authorization_id, options = {})
50
- transaction = Samurai::Transaction.find(authorization_id)
51
- handle_result(transaction.capture(amount(money)))
52
- rescue ActiveResource::ServerError => e
53
- Response.new(false, e.message, {}, test: test?)
54
- end
55
-
56
- def refund(money, transaction_id, options = {})
57
- transaction = Samurai::Transaction.find(transaction_id)
58
- handle_result(transaction.credit(amount(money)))
59
- rescue ActiveResource::ServerError => e
60
- Response.new(false, e.message, {}, test: test?)
61
- end
62
-
63
- def void(transaction_id, options = {})
64
- transaction = Samurai::Transaction.find(transaction_id)
65
- handle_result(transaction.void)
66
- rescue ActiveResource::ServerError => e
67
- Response.new(false, e.message, {}, test: test?)
68
- end
69
-
70
- def store(creditcard, options = {})
71
- address = options[:billing_address] || options[:address] || {}
72
-
73
- result = Samurai::PaymentMethod.create({
74
- :card_number => creditcard.number,
75
- :expiry_month => creditcard.month.to_s.rjust(2, "0"),
76
- :expiry_year => creditcard.year.to_s,
77
- :cvv => creditcard.verification_value,
78
- :first_name => creditcard.first_name,
79
- :last_name => creditcard.last_name,
80
- :address_1 => address[:address1],
81
- :address_2 => address[:address2],
82
- :city => address[:city],
83
- :zip => address[:zip],
84
- :sandbox => test?
85
- })
86
- result.retain if options[:retain] && result.is_sensitive_data_valid && result.payment_method_token
87
-
88
- Response.new(result.is_sensitive_data_valid,
89
- message_from_result(result),
90
- { :payment_method_token => result.is_sensitive_data_valid && result.payment_method_token })
91
- rescue ActiveResource::ServerError => e
92
- Response.new(false, e.message, {}, test: test?)
93
- end
94
-
95
- private
96
-
97
- def payment_method_token(credit_card_or_vault_id, options)
98
- return credit_card_or_vault_id if credit_card_or_vault_id.is_a?(String)
99
- store_result = store(credit_card_or_vault_id, options)
100
- store_result.success? ? store_result.params["payment_method_token"] : store_result
101
- end
102
-
103
- def handle_result(result)
104
- response_params, response_options = {}, {}
105
- if result.success?
106
- response_options[:test] = test?
107
- response_options[:authorization] = result.reference_id
108
- response_params[:reference_id] = result.reference_id
109
- response_params[:transaction_token] = result.transaction_token
110
- response_params[:payment_method_token] = result.payment_method.payment_method_token
111
- end
112
-
113
- response_options[:avs_result] = { :code => result.processor_response && result.processor_response.avs_result_code }
114
- response_options[:cvv_result] = result.processor_response && result.processor_response.cvv_result_code
115
-
116
- message = message_from_result(result)
117
- Response.new(result.success?, message, response_params, response_options)
118
- end
119
-
120
- def message_from_result(result)
121
- return "OK" if result.success?
122
- result.errors.map {|_, messages| messages }.join(" ")
123
- end
124
-
125
- def processor_options(options)
126
- options.slice(:billing_reference, :customer_reference, :custom, :descriptor)
127
- end
128
- end
129
- end
130
- end