tanga_activemerchant 1.38.0 → 1.38.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3ab6a8d9d49c77311453407ef270a10bb8313d9b
4
- data.tar.gz: 01608713fb3859a523da6b70314d17ce8cd37054
3
+ metadata.gz: fb9423c2510b5d1c7e259ec8cadc6644c1b61cf2
4
+ data.tar.gz: 8b8a78a47a4aeb31d64abf377350f97d53325f2a
5
5
  SHA512:
6
- metadata.gz: ae137800501f261490d1a296e135910fc1482e5813c488a2975bc571f37aed5655ee526e4377315397805f8567aa17cfde644cfa0aa2ca5dd29637f8f74b2579
7
- data.tar.gz: e0bf6e3b03429fc1874423f27ed69c4ec89207be0aec0d9c2eb0eea7801fe05b2ed6308b6f66009acd05a6bbc26a6318f7db8c0e1d7d528f0a3e904012749c27
6
+ metadata.gz: 26d7227ca192aeb6ebb6375e253c846e48b542a29251dd381f11659263d309935f1b86a2ce50c113d811d09f8699574edfad445a3705e3af8d3004eb319d2f16
7
+ data.tar.gz: f75c7c08857c02caba3c0f2c4edf06420cd648203038948460a6d03c7f508c1819f874277eec6eb4c8c3e664ce71e299c9957eddeffb9360fe318ba080b47556
@@ -2,9 +2,9 @@ module ActiveMerchant #:nodoc:
2
2
  module Billing #:nodoc:
3
3
  # Convenience methods that can be included into a custom Credit Card object, such as an ActiveRecord based Credit Card object.
4
4
  module CreditCardMethods
5
- CARD_COMPANIES = {
5
+ CARD_COMPANIES = {
6
6
  'visa' => /^4\d{12}(\d{3})?$/,
7
- 'master' => /^(5[1-5]\d{4}|677189)\d{10}$/,
7
+ 'master' => /^(5[1-5]\d{4}|677189|222[1-9]\d{2}|22[3-9]\d{3}|2[3-6]\d{4}|27[01]\d{3}|2720\d{2})\d{10}$/,
8
8
  'discover' => /^(6011|65\d{2}|64[4-9]\d)\d{12}|(62\d{14})$/,
9
9
  'american_express' => /^3[47]\d{13}$/,
10
10
  'diners_club' => /^3(0[0-5]|[68]\d)\d{11}$/,
@@ -16,69 +16,69 @@ module ActiveMerchant #:nodoc:
16
16
  'forbrugsforeningen' => /^600722\d{10}$/,
17
17
  'laser' => /^(6304|6706|6709|6771(?!89))\d{8}(\d{4}|\d{6,7})?$/
18
18
  }
19
-
19
+
20
20
  def self.included(base)
21
21
  base.extend(ClassMethods)
22
22
  end
23
-
23
+
24
24
  def valid_month?(month)
25
25
  (1..12).include?(month.to_i)
26
26
  end
27
-
27
+
28
28
  def valid_expiry_year?(year)
29
29
  (Time.now.year..Time.now.year + 20).include?(year.to_i)
30
30
  end
31
-
31
+
32
32
  def valid_start_year?(year)
33
33
  year.to_s =~ /^\d{4}$/ && year.to_i > 1987
34
34
  end
35
-
35
+
36
36
  def valid_issue_number?(number)
37
37
  number.to_s =~ /^\d{1,2}$/
38
38
  end
39
-
39
+
40
40
  module ClassMethods
41
- # Returns true if it validates. Optionally, you can pass a card brand as an argument and
41
+ # Returns true if it validates. Optionally, you can pass a card brand as an argument and
42
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
46
46
  # - http://www.beachnet.com/~hstiles/cardtype.html
47
47
  def valid_number?(number)
48
- valid_test_mode_card_number?(number) ||
49
- valid_card_number_length?(number) &&
48
+ valid_test_mode_card_number?(number) ||
49
+ valid_card_number_length?(number) &&
50
50
  valid_checksum?(number)
51
51
  end
52
-
52
+
53
53
  # Regular expressions for the known card companies.
54
- #
55
- # References:
56
- # - http://en.wikipedia.org/wiki/Credit_card_number
57
- # - http://www.barclaycardbusiness.co.uk/information_zone/processing/bin_rules.html
54
+ #
55
+ # References:
56
+ # - http://en.wikipedia.org/wiki/Credit_card_number
57
+ # - http://www.barclaycardbusiness.co.uk/information_zone/processing/bin_rules.html
58
58
  def card_companies
59
59
  CARD_COMPANIES
60
60
  end
61
-
61
+
62
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
- # TODO Refactor this method. We basically need to tighten up the Maestro Regexp.
66
- #
67
- # Right now the Maestro regexp overlaps with the MasterCard regexp (IIRC). If we can tighten
68
- # things up, we can boil this whole thing down to something like...
69
- #
65
+ # TODO Refactor this method. We basically need to tighten up the Maestro Regexp.
66
+ #
67
+ # Right now the Maestro regexp overlaps with the MasterCard regexp (IIRC). If we can tighten
68
+ # things up, we can boil this whole thing down to something like...
69
+ #
70
70
  # def brand?(number)
71
71
  # return 'visa' if valid_test_mode_card_number?(number)
72
72
  # card_companies.find([nil]) { |brand, regexp| number =~ regexp }.first.dup
73
73
  # end
74
- #
74
+ #
75
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|
79
- return company.dup if number =~ pattern
79
+ return company.dup if number =~ pattern
80
80
  end
81
-
81
+
82
82
  return 'maestro' if number =~ card_companies['maestro']
83
83
 
84
84
  return nil
@@ -88,19 +88,19 @@ module ActiveMerchant #:nodoc:
88
88
  deprecated "CreditCard#type? is deprecated and will be removed from a future release of ActiveMerchant. Please use CreditCard#brand? instead."
89
89
  brand?(number)
90
90
  end
91
-
91
+
92
92
  def first_digits(number)
93
- number.to_s.slice(0,6)
93
+ number.to_s.slice(0,6)
94
94
  end
95
-
96
- def last_digits(number)
97
- number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
95
+
96
+ def last_digits(number)
97
+ number.to_s.length <= 4 ? number : number.to_s.slice(-4..-1)
98
98
  end
99
-
99
+
100
100
  def mask(number)
101
101
  "XXXX-XXXX-XXXX-#{last_digits(number)}"
102
102
  end
103
-
103
+
104
104
  # Checks to see if the calculated brand matches the specified brand
105
105
  def matching_brand?(number, brand)
106
106
  brand?(number) == brand
@@ -114,19 +114,19 @@ module ActiveMerchant #:nodoc:
114
114
  def deprecated(message)
115
115
  warn(Kernel.caller[1] + message)
116
116
  end
117
-
117
+
118
118
  private
119
-
119
+
120
120
  def valid_card_number_length?(number) #:nodoc:
121
121
  number.to_s.length >= 12
122
122
  end
123
-
123
+
124
124
  def valid_test_mode_card_number?(number) #:nodoc:
125
- ActiveMerchant::Billing::Base.test? &&
125
+ ActiveMerchant::Billing::Base.test? &&
126
126
  %w[1 2 3 success failure error].include?(number.to_s)
127
127
  end
128
-
129
- # Checks the validity of a card number by use of the the Luhn Algorithm.
128
+
129
+ # Checks the validity of a card number by use of the the Luhn Algorithm.
130
130
  # Please see http://en.wikipedia.org/wiki/Luhn_algorithm for details.
131
131
  def valid_checksum?(number) #:nodoc:
132
132
  sum = 0
@@ -134,7 +134,7 @@ module ActiveMerchant #:nodoc:
134
134
  weight = number[-1 * (i + 2), 1].to_i * (2 - (i % 2))
135
135
  sum += (weight < 10) ? weight : weight - 9
136
136
  end
137
-
137
+
138
138
  (number[-1,1].to_i == (10 - sum % 10) % 10)
139
139
  end
140
140
  end
@@ -101,7 +101,7 @@ module ActiveMerchant #:nodoc:
101
101
 
102
102
  # The application making the calls to the gateway
103
103
  # Useful for things like the PayPal build notation (BN) id fields
104
- superclass_delegating_accessor :application_id
104
+ class_attribute :application_id, instance_writer: false
105
105
  self.application_id = 'ActiveMerchant'
106
106
 
107
107
  attr_reader :options
@@ -29,10 +29,10 @@ module ActiveMerchant #:nodoc:
29
29
  class_attribute :arb_test_url, :arb_live_url
30
30
 
31
31
  self.test_url = "https://test.authorize.net/gateway/transact.dll"
32
- self.live_url = "https://secure.authorize.net/gateway/transact.dll"
32
+ self.live_url = "https://secure2.authorize.net/gateway/transact.dll"
33
33
 
34
34
  self.arb_test_url = 'https://apitest.authorize.net/xml/v1/request.api'
35
- self.arb_live_url = 'https://api.authorize.net/xml/v1/request.api'
35
+ self.arb_live_url = 'https://api2.authorize.net/xml/v1/request.api'
36
36
 
37
37
  class_attribute :duplicate_window
38
38
 
@@ -28,7 +28,7 @@ module ActiveMerchant #:nodoc:
28
28
  # 5. Click Submit
29
29
  class AuthorizeNetCimGateway < Gateway
30
30
  self.test_url = 'https://apitest.authorize.net/xml/v1/request.api'
31
- self.live_url = 'https://api.authorize.net/xml/v1/request.api'
31
+ self.live_url = 'https://api2.authorize.net/xml/v1/request.api'
32
32
 
33
33
  AUTHORIZE_NET_CIM_NAMESPACE = 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'
34
34
 
@@ -841,7 +841,14 @@ module ActiveMerchant #:nodoc:
841
841
 
842
842
  response_params = parse(action, xml)
843
843
 
844
- message = response_params['messages']['message']['text']
844
+ message = nil
845
+ begin
846
+ message = Array.wrap(response_params['messages']['message']).first['text']
847
+ rescue TypeError => e
848
+ TangaServices.logger.error(service: 'authnet', alert_tanga_devs: true, authnet_response: xml.to_s, exception: e.message)
849
+ raise
850
+ end
851
+
845
852
  test_mode = test? || message =~ /Test Mode/
846
853
  success = response_params['messages']['result_code'] == 'Ok'
847
854
  response_params['direct_response'] = parse_direct_response(response_params['direct_response']) if response_params['direct_response']
@@ -1,3 +1,3 @@
1
1
  module ActiveMerchant
2
- VERSION = "1.38.0"
2
+ VERSION = "1.38.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tanga_activemerchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.38.0
4
+ version: 1.38.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Luetke
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - gem-public_cert.pem
12
- date: 2015-05-28 00:00:00.000000000 Z
12
+ date: 2017-06-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -510,7 +510,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
510
510
  version: '0'
511
511
  requirements: []
512
512
  rubyforge_project: activemerchant
513
- rubygems_version: 2.4.5
513
+ rubygems_version: 2.4.5.1
514
514
  signing_key:
515
515
  specification_version: 4
516
516
  summary: Framework and tools for dealing with credit card transactions.