agms 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmFmZWIwODMwYjBjOTQ5MzFlOGI0ZmIwMzBiOGQ3YmZjN2M2YjYxNA==
4
+ ZjU0NzZkYTY1YzA1ZTgyNGViMTRmZTA2YmFlMWM0N2ZkYmRkZjg2YQ==
5
5
  data.tar.gz: !binary |-
6
- ZTgxYzkyZWExZDU2Y2U1NDI0OTA1Njg0OTcyYTEyOWViMjNmOTk0OA==
6
+ NTFiODVhZWI3NmYyNDUxODljZmM0YWM2YjRkNmRmM2IyMTk1NWU3Nw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OGNmMWRlNTU1MmZmYjFhOTQ3YjIzM2M1M2RiNDYxN2I4MTFlZjI0NGMxMTdj
10
- MWQ2NGNlYzUwNDc5OTZjNmUyMzA4ODYyYWE2Mjc3Zjg1NWFkM2FjYmZiOTI3
11
- YmFkNzE5MDMwZGIzZWQ4MmRhYjc0NzIzNThkMmVhOTQyMDdjMGE=
9
+ OWNiMzZiNGI2OWY2MTIxOGFhMmI5MmU3NzA0OTA3ZWNlZTRjOGNjM2FiY2Rl
10
+ YjEyZDQ3YjA0ODc0YTgzMjNjYTJmMTk3ODRlZTJhYzY1ZTg3M2M0OTk0ZGVk
11
+ YzUxYTU2ZjcwNGJmZDAwZTU0Njk1N2YyN2ZmNTIzMmJkZjM3NzA=
12
12
  data.tar.gz: !binary |-
13
- MjU2NWYxMmYwYjEyZDBhYzE1YjNlNWJhNmY1YjVmZDIzNjE4MzllNTExOTlj
14
- M2RiZDE4MzgwNTU3MzZhZGU0YWQ0ZmMzMDY4MGY0YTc3YWExNTdiZDZlNWMw
15
- MGViMmQxNGYyNTY0ZTk0ODFhZDczYTJjMjMxMzE1OGRhMTg0MGY=
13
+ MzdlNDA3MjI1YjdhZjAyN2MwN2ZmNDQwMjk4MzNjMGYxMzQ3YjVmZjQzMmYy
14
+ NjYzZDk4Zjg0NTQzZDUzZjQxYzc5OTQ5OWRjMzA5OGI1Yjk4Nzc0MDVmMDc5
15
+ YzIyMTVkMTQyZmRmN2RkZjVkYjE1M2JlYjQ1M2ZkOTliNzY1YzU=
data/README.md CHANGED
@@ -32,7 +32,7 @@ Support for Invoicing and Recurring are not yet completed.
32
32
  ## Documentation
33
33
 
34
34
  * [Official documentation](https://www.onlinepaymentprocessing.com/docs/ruby)
35
- * [Bug Tracker](http://github.com/agms/agms_ruby/issues)
35
+ * [Bug Tracker](http://github.com/agmscode/agms_ruby/issues)
36
36
 
37
37
  Examples can be found as part of this package in example /hpp.rb, example/invoicing.rb, example/recurring.rb, example_report.py, example/safe.rb, example/transaction.rb.
38
38
 
@@ -41,6 +41,9 @@ Examples can be found as part of this package in example /hpp.rb, example/invoic
41
41
 
42
42
  See the LICENSE file.
43
43
 
44
+ ## Development
45
+
46
+ Test cases can be run with: `bundle exec rake test`
44
47
 
45
48
  ## Contributing
46
49
 
@@ -52,10 +52,10 @@ module Agms
52
52
 
53
53
  def self.instantiate()
54
54
  return Configuration.new(
55
- gateway_username = Configuration.gateway_username,
56
- gateway_password = Configuration.gateway_password,
57
- gateway_account = Configuration.gateway_account,
58
- gateway_api_key = Configuration.gateway_api_key,
55
+ Configuration.gateway_username,
56
+ Configuration.gateway_password,
57
+ Configuration.gateway_account,
58
+ Configuration.gateway_api_key,
59
59
  )
60
60
  end
61
61
 
@@ -1,15 +1,17 @@
1
1
  module Agms
2
- class Connect
3
-
4
- def self.is_exception_status(status)
5
- if [200, 201, 422].include?(status)
2
+ class Connect
3
+
4
+ # @param integer status
5
+ # @return boolean
6
+ def self.is_exception_status(status)
7
+ if [200, 201, 422].include?(status)
6
8
  return true
7
9
  else
8
- return false
10
+ return false
9
11
  end
10
12
  end
11
13
 
12
- def self.raise_exception_for_status(status, message=nil)
14
+ def self.raise_exception_for_status(status, message=nil)
13
15
  case status.to_i
14
16
  when 401
15
17
  raise AuthenticationError
@@ -33,36 +35,36 @@ module Agms
33
35
  end
34
36
 
35
37
  def connect(url, request, request_method, response_object)
36
- headers = _buildHeaders(request_method)
38
+ headers = _buildHeaders(request_method)
37
39
  request_body = _buildRequest(request, request_method)
38
40
  response_body = post(url, headers, request_body)
39
41
  return _parseResponse(response_body, request_method)
40
- end
42
+ end
41
43
 
42
- def post(url, headers = nil, body = nil)
44
+ def post(url, headers = nil, body = nil)
43
45
  return _http_do(Net::HTTP::Post, url, headers, body)
44
46
  end
45
47
 
46
- def delete(url, headers = nil, body = nil)
47
- return _http_do(Net::HTTP::Delete, url, headers, body)
48
+ def delete(url, headers = nil, body = nil)
49
+ return _http_do(Net::HTTP::Delete, url, headers, body)
48
50
  end
49
51
 
50
52
  def get(url, headers = nil, body = nil)
51
- return _http_do Net::HTTP::Get, url, headers, body
53
+ return _http_do Net::HTTP::Get, url, headers, body
52
54
  end
53
55
 
54
56
  def put(url, headers = nil, body = nil)
55
- return _http_do Net::HTTP::Put, url, headers, body
57
+ return _http_do Net::HTTP::Put, url, headers, body
56
58
  end
57
59
 
58
60
  def _http_do(http_verb, url, headers = nil, body = nil)
59
61
  connection = Net::HTTP.new(Configuration.server, Configuration.port)
60
62
  connection.open_timeout = 60
61
63
  connection.read_timeout = 60
62
-
63
- connection.use_ssl = true
64
+
65
+ connection.use_ssl = true
64
66
  connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
65
-
67
+
66
68
  # connection.ca_file = @config.ca_file
67
69
  connection.verify_callback = proc { |preverify_ok, ssl_context| _verify_ssl_certificate(preverify_ok, ssl_context) }
68
70
 
@@ -72,12 +74,12 @@ module Agms
72
74
  end
73
75
 
74
76
  connection.start do |http|
75
- request = http_verb.new(url)
76
-
77
- if headers
78
- headers.each do |key, value|
79
- request[key] = value
80
- end
77
+ request = http_verb.new(url)
78
+
79
+ if headers
80
+ headers.each do |key, value|
81
+ request[key] = value
82
+ end
81
83
  end
82
84
  if body
83
85
  request.body = body
@@ -85,40 +87,40 @@ module Agms
85
87
 
86
88
  response = http.request(request)
87
89
  if response.code.to_i == 200 || response.code.to_i == 201 || response.code.to_i == 422
88
- return response.body
89
- else
90
- Connect.raise_exception_for_status(response.code)
91
- end
90
+ return response.body
91
+ else
92
+ Connect.raise_exception_for_status(response.code)
93
+ end
92
94
  end
93
95
  rescue OpenSSL::SSL::SSLError
94
96
  raise SSLCertificateError
95
97
  end
96
98
 
97
- # Build Header
98
- def _buildHeaders(request_method)
99
- return {
100
- 'Accept' => 'application/xml',
101
- 'Content-type' => 'text/xml; charset=utf-8',
102
- 'User-Agent' => '(Agms Ruby ' + Agms.getLibraryVersion() + ')',
103
- 'X-ApiVersion' => Agms.getAPIVersion(),
104
- 'SOAPAction' => 'https://gateway.agms.com/roxapi/' + request_method
105
- }
106
- end
107
-
108
- # Build Request
109
- def _buildRequest(request, request_method)
110
- header = '<soap:Envelope
99
+ # Build Header
100
+ def _buildHeaders(request_method)
101
+ return {
102
+ 'Accept' => 'application/xml',
103
+ 'Content-type' => 'text/xml; charset=utf-8',
104
+ 'User-Agent' => '(Agms Ruby ' + Agms.getLibraryVersion() + ')',
105
+ 'X-ApiVersion' => Agms.getAPIVersion(),
106
+ 'SOAPAction' => 'https://gateway.agms.com/roxapi/' + request_method
107
+ }
108
+ end
109
+
110
+ # Build Request
111
+ def _buildRequest(request, request_method)
112
+ header = '<soap:Envelope
111
113
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
112
114
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
113
115
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
114
116
  <soap:Body>'
115
-
116
- header_line = '<' + request_method + ' xmlns="https://gateway.agms.com/roxapi/">'
117
- body = _hashToXml(request)
118
- footer_line = '</' + request_method + '>'
119
- footer = '</soap:Body></soap:Envelope>'
120
- return header + header_line + body + footer_line + footer
121
- end
117
+
118
+ header_line = '<' + request_method + ' xmlns="https://gateway.agms.com/roxapi/">'
119
+ body = _hashToXml(request)
120
+ footer_line = '</' + request_method + '>'
121
+ footer = '</soap:Body></soap:Envelope>'
122
+ return header + header_line + body + footer_line + footer
123
+ end
122
124
 
123
125
  # Build xml from Hash
124
126
  def _hashToXml(request)
@@ -140,7 +142,7 @@ module Agms
140
142
  return data
141
143
  end
142
144
 
143
- def _verify_ssl_certificate(preverify_ok, ssl_context)
145
+ def _verify_ssl_certificate(preverify_ok, ssl_context)
144
146
  if preverify_ok != true || ssl_context.error != 0
145
147
  err_msg = "SSL Verification failed -- Preverify: #{preverify_ok}, Error: #{ssl_context.error_string} (#{ssl_context.error})"
146
148
  @config.logger.error err_msg
@@ -150,8 +152,8 @@ module Agms
150
152
  end
151
153
  end
152
154
 
153
- # Parse the response received from gateway
154
- def _parseResponse(xml, request_method)
155
+ # Parse the response received from gateway
156
+ def _parseResponse(xml, request_method)
155
157
  # Parse the response body
156
158
  doc = Nokogiri::XML(xml)
157
159
  # Remove the namespaces
@@ -167,10 +169,8 @@ module Agms
167
169
  response = node.children.text
168
170
  end
169
171
  end
170
-
171
172
  return response
172
- end
173
+ end
173
174
 
174
-
175
- end
175
+ end
176
176
  end
@@ -1,9 +1,10 @@
1
1
  module Agms
2
- class AgmsError < StandardError
3
- attr_accessor :object
4
- def initialize(message = nil, object = nil)
5
- super(message)
6
- self.object = object
7
- end
2
+ class AgmsError < StandardError
3
+ attr_accessor :object
4
+
5
+ def initialize(message = nil, object = nil)
6
+ super(message)
7
+ self.object = object
8
8
  end
9
+ end
9
10
  end
@@ -1,7 +1,7 @@
1
1
  module Agms
2
- class AuthenticationError < AgmsError
3
- def initialize(message, object)
4
- super(message, object)
5
- end
2
+ class AuthenticationError < AgmsError
3
+ def initialize(message, object)
4
+ super(message, object)
6
5
  end
6
+ end
7
7
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class AuthorizationError < AgmsError
2
+ class AuthorizationError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class ClientErrorError < AgmsError
2
+ class ClientErrorError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class ConfigurationError < AgmsError
2
+ class ConfigurationError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class DownForMaintenanceError < AgmsError
2
+ class DownForMaintenanceError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class ForgedQueryStringError < AgmsError
2
+ class ForgedQueryStringError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class InvalidParameterError < AgmsError
2
+ class InvalidParameterError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class InvalidRequestError < AgmsError
2
+ class InvalidRequestError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class InvalidSignatureError < AgmsError
2
+ class InvalidSignatureError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class NotFoundError < AgmsError
2
+ class NotFoundError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class RequestValidationError < AgmsError
2
+ class RequestValidationError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,7 +1,7 @@
1
1
  module Agms
2
- class ResponseError < AgmsError
3
- def initialize(message, object)
4
- super(message, object)
5
- end
2
+ class ResponseError < AgmsError
3
+ def initialize(message, object)
4
+ super(message, object)
6
5
  end
6
+ end
7
7
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class ServerErrorError < AgmsError
2
+ class ServerErrorError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class SSLCertificateError < AgmsError
2
+ class SSLCertificateError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class UnexpectedError < AgmsError
2
+ class UnexpectedError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -1,5 +1,5 @@
1
1
  module Agms
2
- class UpgradeRequiredError < AgmsError
2
+ class UpgradeRequiredError < AgmsError
3
3
  def initialize(message, object)
4
4
  super(message, object)
5
5
  end
@@ -106,10 +106,10 @@ module Agms
106
106
  @required = Array.new
107
107
 
108
108
  # All sales and auth require an amount unless donation
109
- if ( ( @fields[:Donation][:value] != '' or
110
- @fields[:Donation][:value] != false ) and
109
+ if ((@fields[:Donation][:value] != '' or
110
+ @fields[:Donation][:value] != false) and
111
111
  (@fields[:TransactionType][:value] == 'sale' or
112
- @fields[:TransactionType][:value] == 'auth') )
112
+ @fields[:TransactionType][:value] == 'auth'))
113
113
  @required.push(:Amount)
114
114
  end
115
115
 
@@ -119,25 +119,25 @@ module Agms
119
119
  messages = error_array['messages'];
120
120
 
121
121
  # ExpDate MMYY
122
- if ( @fields.has_key?(:CCExpDate) and
122
+ if (@fields.has_key?(:CCExpDate) and
123
123
  @fields[:CCExpDate][:value] != '' and
124
- ( @fields[:CCExpDate][:value].length != 4 or
125
- not /(0[1-9]|1[0-2])([0-9][0-9])/.match(@fields[:CCExpDate][:value]) ) )
124
+ (@fields[:CCExpDate][:value].length != 4 or
125
+ not /(0[1-9]|1[0-2])([0-9][0-9])/.match(@fields[:CCExpDate][:value])))
126
126
  errors += 1
127
127
  messages.push('CCExpDate (credit card expiration date) must be MMYY.')
128
128
  end
129
129
 
130
130
  # CCNumber length
131
- if ( @fields.has_key?(:CCNumber) and
132
- @fields[:CCNumber][:value] != '' and
131
+ if (@fields.has_key?(:CCNumber) and
132
+ @fields[:CCNumber][:value] != '' and
133
133
  @fields[:CCNumber][:value].length != 16 and
134
- @fields[:CCNumber][:value].length != 15 )
134
+ @fields[:CCNumber][:value].length != 15)
135
135
  errors += 1
136
136
  messages.push('CCNumber (credit card number) must be 15-16 digits long.')
137
137
  end
138
138
 
139
139
  # ABA length
140
- if ( @fields.has_key?(:CheckABA) and
140
+ if (@fields.has_key?(:CheckABA) and
141
141
  @fields[:CheckABA][:value] != '' and
142
142
  @fields[:CheckABA][:value].length != 9)
143
143
  errors += 1
@@ -156,7 +156,7 @@ module Agms
156
156
  end
157
157
 
158
158
  def getFields
159
- fields = getFieldArray
159
+ fields = getFieldArray
160
160
  if fields.has_key?(:AutoSAFE)
161
161
  if fields[:AutoSAFE] == true
162
162
  fields[:AutoSAFE] = 1
@@ -1,8 +1,8 @@
1
1
  module Agms
2
- class InvoicingRequest < Request
2
+ class InvoicingRequest < Request
3
3
 
4
4
  def initialize(op)
5
5
  super(op)
6
6
  end
7
- end
7
+ end
8
8
  end
@@ -1,26 +1,26 @@
1
1
  module Agms
2
- class Request
3
- def initialize(op)
4
- @op = op
5
- @validateErrors = 0
6
- @validateMessages = nil
7
- @fields = nil
8
- @required = nil
9
- @numeric = nil
10
- @optionable = nil
11
- @enums = nil
12
- @date = nil
13
- @time = nil
14
- @boolean = nil
15
- @digit_2 = nil
16
- @amount = nil
17
-
18
- @needs_account = nil
19
- @needs_key = nil
20
-
21
- @mapping_alias = nil
22
-
23
- @mapping = {
2
+ class Request
3
+ def initialize(op)
4
+ @op = op
5
+ @validateErrors = 0
6
+ @validateMessages = nil
7
+ @fields = nil
8
+ @required = nil
9
+ @numeric = nil
10
+ @optionable = nil
11
+ @enums = nil
12
+ @date = nil
13
+ @time = nil
14
+ @boolean = nil
15
+ @digit_2 = nil
16
+ @amount = nil
17
+
18
+ @needs_account = nil
19
+ @needs_key = nil
20
+
21
+ @mapping_alias = nil
22
+
23
+ @mapping = {
24
24
  :gateway_username => :GatewayUserName,
25
25
  :gateway_password => :GatewayPassword,
26
26
  :gateway_account => :AccountNumber,
@@ -128,17 +128,17 @@ module Agms
128
128
  :start_time => :StartTime,
129
129
  :end_time => :EndTime,
130
130
  :suppress_safe_option => :SupressAutoSAFE
131
- }
131
+ }
132
132
 
133
- @states = %w(AL AK AS AZ AR CA CO CT DE DC FM FL GA GU HI ID IL IN IA KS KY LA ME MH MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND MP OH OK OR PW PA PR RI SC SD TN TX UT VT VI VA WA WV WI WY AE AA AP)
134
- end
133
+ @states = %w(AL AK AS AZ AR CA CO CT DE DC FM FL GA GU HI ID IL IN IA KS KY LA ME MH MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND MP OH OK OR PW PA PR RI SC SD TN TX UT VT VI VA WA WV WI WY AE AA AP)
134
+ end
135
135
 
136
- def get(username, password, account, api_key)
137
- request_body = getFields()
138
- request_body[:GatewayUserName] = username
139
- request_body[:GatewayPassword] = password
136
+ def get(username, password, account, api_key)
137
+ request_body = getFields()
138
+ request_body[:GatewayUserName] = username
139
+ request_body[:GatewayPassword] = password
140
140
 
141
- # Adjust for a field name variation in the Reporting API
141
+ # Adjust for a field name variation in the Reporting API
142
142
  if @op == 'TransactionAPI' or @op == 'QuerySAFE'
143
143
  request_body.delete(:GatewayUserName)
144
144
  request_body[:GatewayUsername] = username
@@ -179,13 +179,13 @@ module Agms
179
179
  end
180
180
 
181
181
  # Check that it is a valid setting
182
- if ( parameter == :setting and
182
+ if (parameter == :setting and
183
183
  value != '' and
184
184
  value != 'required' and
185
185
  value != 'disabled' and
186
186
  value != 'visible' and
187
187
  value != 'excluded' and
188
- value != 'hidden' )
188
+ value != 'hidden')
189
189
  raise InvalidParameterError, "Invalid parameter #{parameter} for #{name}."
190
190
  end
191
191
 
@@ -220,7 +220,7 @@ module Agms
220
220
  messages = Array.new
221
221
 
222
222
  if @required
223
- @required.each do | field_name |
223
+ @required.each do |field_name|
224
224
  if @fields[field_name][:value] == ''
225
225
  errors +=1
226
226
  messages.push("Missing required field #{field_name}.")
@@ -230,11 +230,11 @@ module Agms
230
230
 
231
231
  # Validate enumerated types
232
232
  if @enums
233
- @enums.each do | field_name, valid_values |
233
+ @enums.each do |field_name, valid_values|
234
234
 
235
235
  if @fields.has_key?(field_name) and
236
236
  @fields[field_name][:value] != '' and
237
- not valid_values.include?@fields[field_name][:value]
237
+ not valid_values.include? @fields[field_name][:value]
238
238
  errors += 1
239
239
  messages.push("Invalid #{field_name}, value " + @fields[field_name][:value] + ', must be one of ' + valid_values.join(' ') + '.')
240
240
  end
@@ -243,7 +243,7 @@ module Agms
243
243
 
244
244
  # Validate numeric fields
245
245
  if @numeric
246
- @numeric.each do | field_name |
246
+ @numeric.each do |field_name|
247
247
  if @fields.has_key?(field_name) and
248
248
  @fields[field_name][:value] != '' and
249
249
  not isNumber(@fields[field_name][:value])
@@ -255,14 +255,14 @@ module Agms
255
255
 
256
256
  # Validate optionable fields
257
257
  if @optionable
258
- @optionable.each do | field_name |
259
- if ( @fields.has_key?(field_name) and
258
+ @optionable.each do |field_name|
259
+ if (@fields.has_key?(field_name) and
260
260
  @fields[field_name][:setting] != '' and
261
261
  @fields[field_name][:setting] != :required and
262
262
  @fields[field_name][:setting] != :disabled and
263
263
  @fields[field_name][:setting] != :visible and
264
264
  @fields[field_name][:setting] != :excluded and
265
- @fields[field_name][:setting] != :hidden )
265
+ @fields[field_name][:setting] != :hidden)
266
266
  errors += 1
267
267
  messages.push("Field #{field_name} has setting " + @fields[field_name][:value] + ', must be required, disabled, visible, hidden, or empty.')
268
268
  end
@@ -271,7 +271,7 @@ module Agms
271
271
 
272
272
  # Validate date fields
273
273
  if @date
274
- @date.each do | field_name |
274
+ @date.each do |field_name|
275
275
 
276
276
  if @fields.has_key?(field_name) and
277
277
  @fields[field_name][:value] != '' and
@@ -285,7 +285,7 @@ module Agms
285
285
 
286
286
  # Validate time fields
287
287
  if @time
288
- @time.each do | field_name |
288
+ @time.each do |field_name|
289
289
  if not @fields[field_name][:value] != '' and
290
290
  not /([01][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])/.match(@fields[field_name][:value])
291
291
  errors += 1
@@ -297,8 +297,8 @@ module Agms
297
297
 
298
298
  # Validate boolean fields
299
299
  if @boolean
300
- @boolean.each do | field_name |
301
- if ( @fields.has_key?(field_name) and
300
+ @boolean.each do |field_name|
301
+ if (@fields.has_key?(field_name) and
302
302
  not @fields[field_name][:value] != '' and
303
303
  not @fields[field_name][:value] != true and
304
304
  @fields[field_name][:value] != false and
@@ -313,10 +313,10 @@ module Agms
313
313
 
314
314
  # Validate state code fields
315
315
  if @digit_2
316
- @digit_2.each do | field_name |
316
+ @digit_2.each do |field_name|
317
317
  if @fields.has_key?(field_name) and
318
318
  @fields[field_name][:value] != '' and
319
- not @digit_2.has_key?@fields[field_name][:value]
319
+ not @digit_2.has_key? @fields[field_name][:value]
320
320
  errors += 1
321
321
  messages.push("Field #{field_name} has setting " + @fields[field_name][:value] + ', must be valid 2 digit US State code.')
322
322
  end
@@ -325,7 +325,7 @@ module Agms
325
325
 
326
326
  # Validate amount fields
327
327
  if @amount
328
- @amount.each do | field_name |
328
+ @amount.each do |field_name|
329
329
  if @fields.key?(field_name) and
330
330
  @fields[field_name][:value] != '' and
331
331
  @fields[field_name][:value] > Configuration.max_amount
@@ -352,10 +352,10 @@ module Agms
352
352
  validate()
353
353
 
354
354
  if @validateErrors > 0
355
- raise RequestValidationError , 'Request validation failed with ' + ' '.join(@validateMessages) + '.'
355
+ raise RequestValidationError, 'Request validation failed with ' + ' '.join(@validateMessages) + '.'
356
356
  end
357
357
 
358
- @fields.each do | field_name, settings |
358
+ @fields.each do |field_name, settings|
359
359
  if settings[:setting] == :required
360
360
  request[field_name] = ''
361
361
  request[field_name + '_Visible'] = true
@@ -107,16 +107,16 @@ module Agms
107
107
  end
108
108
 
109
109
  # All sales and auths require an amount
110
- if ( @fields[:TransactionType][:value] == 'sale' or
111
- @fields[:TransactionType][:value] == 'auth' )
110
+ if (@fields[:TransactionType][:value] == 'sale' or
111
+ @fields[:TransactionType][:value] == 'auth')
112
112
  @required.push(:Amount)
113
113
  end
114
114
 
115
115
  # Captures, refunds, voids, updates, adjustments need a Transaction ID
116
- if ( @fields[:TransactionType][:value] == 'capture' or
116
+ if (@fields[:TransactionType][:value] == 'capture' or
117
117
  @fields[:TransactionType][:value] == 'refund' or
118
118
  @fields[:TransactionType][:value] == 'void' or
119
- @fields[:TransactionType][:value] == 'adjustment' )
119
+ @fields[:TransactionType][:value] == 'adjustment')
120
120
  @required.push(:TransactionID)
121
121
  end
122
122
 
@@ -126,8 +126,8 @@ module Agms
126
126
  end
127
127
 
128
128
  # All safe updates and deletes require a safe id
129
- if ( @fields[:SAFE_Action][:value] == 'update' or
130
- @fields[:SAFE_Action][:value] == 'delete' )
129
+ if (@fields[:SAFE_Action][:value] == 'update' or
130
+ @fields[:SAFE_Action][:value] == 'delete')
131
131
  @required.push(:SAFE_ID)
132
132
  end
133
133
 
@@ -139,17 +139,17 @@ module Agms
139
139
  @required.push(:CheckName)
140
140
  @required.push(:CheckABA)
141
141
  @required.push(:CheckAccount)
142
- if ( @fields[:TransactionType][:value] == 'sale' or
143
- @fields[:TransactionType][:value] == 'auth' )
142
+ if (@fields[:TransactionType][:value] == 'sale' or
143
+ @fields[:TransactionType][:value] == 'auth')
144
144
  @required.push(:SecCode)
145
145
  end
146
146
  end
147
147
  else
148
148
  # Credit card transaction
149
149
  # If no SAFE ID and its a sale or auth
150
- if ( @fields[:SAFE_ID][:value] == '' and
151
- ( @fields[:TransactionType][:value] == 'sale' or
152
- @fields[:TransactionType][:value] == 'auth' ) )
150
+ if (@fields[:SAFE_ID][:value] == '' and
151
+ (@fields[:TransactionType][:value] == 'sale' or
152
+ @fields[:TransactionType][:value] == 'auth'))
153
153
  # If no Safe ID we need the card info
154
154
  # If no MagData then we need keyed info
155
155
  if @fields[:MagData][:value] == ''
@@ -167,23 +167,23 @@ module Agms
167
167
  messages = error_array['messages'];
168
168
 
169
169
  # ExpDate MMYY
170
- if ( @fields[:CCExpDate][:value] != '' and
171
- ( @fields[:CCExpDate][:value].length != 4 or
172
- not /(0[1-9]|1[0-2])([0-9][0-9])/.match(@fields[:CCExpDate][:value]) ) )
170
+ if (@fields[:CCExpDate][:value] != '' and
171
+ (@fields[:CCExpDate][:value].length != 4 or
172
+ not /(0[1-9]|1[0-2])([0-9][0-9])/.match(@fields[:CCExpDate][:value])))
173
173
  errors += 1
174
174
  messages.push('CCExpDate (credit card expiration date) must be MMYY.')
175
175
  end
176
176
 
177
177
  # CCNumber length
178
- if ( @fields[:CCNumber][:value] != '' and
178
+ if (@fields[:CCNumber][:value] != '' and
179
179
  @fields[:CCNumber][:value].length != 16 and
180
- @fields[:CCNumber][:value].length != 15 )
180
+ @fields[:CCNumber][:value].length != 15)
181
181
  errors += 1
182
182
  messages.push('CCNumber (credit card number) must be 15-16 digits long.')
183
183
  end
184
184
 
185
185
  # ABA length
186
- if ( @fields[:CheckABA][:value] != '' and
186
+ if (@fields[:CheckABA][:value] != '' and
187
187
  @fields[:CheckABA][:value].length != 9)
188
188
  errors += 1
189
189
  messages.push('CheckABA (routing number) must be 9 digits long.')
@@ -1,12 +1,12 @@
1
1
  module Agms
2
- class TransactionRequest < Request
3
- # A class representing AGMS Transaction Request objects.
2
+ class TransactionRequest < Request
3
+ # A class representing AGMS Transaction Request objects.
4
4
 
5
5
  alias AgmsAutoValidate autoValidate
6
6
 
7
7
  def initialize(op)
8
- super(op)
9
- @fields = {
8
+ super(op)
9
+ @fields = {
10
10
  :TransactionType => {:setting => '', :value => ''},
11
11
  :PaymentType => {:setting => '', :value => 'creditcard'},
12
12
  :Amount => {:setting => '', :value => ''}, # Required for sale or auth
@@ -79,14 +79,14 @@ module Agms
79
79
  @numeric = %w(Amount Tax Shipping ProcessorID TransactionID CheckABA CheckAccount CCNumber CCExpDate)
80
80
 
81
81
  @enums = {
82
- :TransactionType => %w(sale auth safe\ only capture void refund update adjustment),
83
- :SAFE_Action => %w(add_safe update_safe delete_safe),
84
- :PaymentType => %w(creditcard check),
85
- :SecCode => %w(PPD WEB TEL CCD),
86
- :AccountHolderType => %w(business personal),
87
- :AccountType => %w(checking savings),
88
- :MagHardware => %w(MAGTEK IDTECH),
89
- :Shipping_Carrier => %w(ups fedex dhl usps UPS Fedex DHL USPS),
82
+ :TransactionType => %w(sale auth safe\ only capture void refund update adjustment),
83
+ :SAFE_Action => %w(add_safe update_safe delete_safe),
84
+ :PaymentType => %w(creditcard check),
85
+ :SecCode => %w(PPD WEB TEL CCD),
86
+ :AccountHolderType => %w(business personal),
87
+ :AccountType => %w(checking savings),
88
+ :MagHardware => %w(MAGTEK IDTECH),
89
+ :Shipping_Carrier => %w(ups fedex dhl usps UPS Fedex DHL USPS),
90
90
  }
91
91
 
92
92
  @digit_2 = %w(State ShippingState)
@@ -97,74 +97,74 @@ module Agms
97
97
  @mapping[:shipping_tracking_number] = :Tracking_Number
98
98
  @mapping[:shipping_carrier] = :Shipping_Carrier
99
99
 
100
- end
100
+ end
101
101
 
102
- def validate
103
- @required = Array.new
102
+ def validate
103
+ @required = Array.new
104
104
 
105
105
  # Unless this is a safe action only request, require a transaction type
106
106
  if @fields[:SAFE_Action][:value] == ''
107
- @required.push(:TransactionType)
107
+ @required.push(:TransactionType)
108
108
  end
109
109
 
110
110
  # If no transaction type, require a Safe Action
111
111
  if @fields[:TransactionType][:value] == ''
112
- @required.push(:SAFE_Action)
112
+ @required.push(:SAFE_Action)
113
113
  end
114
114
 
115
115
  # All sales and auths require an amount
116
- if ( @fields[:TransactionType][:value] == 'sale' or
117
- @fields[:TransactionType][:value] == 'auth' )
118
- @required.push(:Amount)
116
+ if (@fields[:TransactionType][:value] == 'sale' or
117
+ @fields[:TransactionType][:value] == 'auth')
118
+ @required.push(:Amount)
119
119
  end
120
120
 
121
121
  # Captures, refunds, voids, updates, adjustments need a Transaction ID
122
- if ( @fields[:TransactionType][:value] == 'capture' or
122
+ if (@fields[:TransactionType][:value] == 'capture' or
123
123
  @fields[:TransactionType][:value] == 'refund' or
124
124
  @fields[:TransactionType][:value] == 'void' or
125
- @fields[:TransactionType][:value] == 'adjustment' )
126
- @required.push(:TransactionID)
125
+ @fields[:TransactionType][:value] == 'adjustment')
126
+ @required.push(:TransactionID)
127
127
  end
128
128
 
129
129
  # Require TipAmount for Tip Adjustment transactions
130
130
  if @fields[:TransactionType][:value] == 'adjustment'
131
- @required.push(:TipAmount)
131
+ @required.push(:TipAmount)
132
132
  end
133
133
 
134
134
  # All safe updates and deletes require a safe id
135
- if ( @fields[:SAFE_Action][:value] == 'update' or
136
- @fields[:SAFE_Action][:value] == 'delete' )
137
- @required.push(:SAFE_ID)
135
+ if (@fields[:SAFE_Action][:value] == 'update' or
136
+ @fields[:SAFE_Action][:value] == 'delete')
137
+ @required.push(:SAFE_ID)
138
138
  end
139
139
 
140
140
 
141
141
  if @fields[:PaymentType][:value] == 'check'
142
- # Cheque transaction
143
- if @fields[:SAFE_ID][:value] == ''
144
- # If no Safe ID we need all the check info
145
- @required.push(:CheckName)
146
- @required.push(:CheckABA)
147
- @required.push(:CheckAccount)
148
- if ( @fields[:TransactionType][:value] == 'sale' or
149
- @fields[:TransactionType][:value] == 'auth' )
150
- @required.push(:SecCode)
151
- end
142
+ # Cheque transaction
143
+ if @fields[:SAFE_ID][:value] == ''
144
+ # If no Safe ID we need all the check info
145
+ @required.push(:CheckName)
146
+ @required.push(:CheckABA)
147
+ @required.push(:CheckAccount)
148
+ if (@fields[:TransactionType][:value] == 'sale' or
149
+ @fields[:TransactionType][:value] == 'auth')
150
+ @required.push(:SecCode)
152
151
  end
152
+ end
153
153
  else
154
- # Credit card transaction
155
- # If no SAFE ID and its a sale or auth
156
- if ( @fields[:SAFE_ID][:value] == '' and
157
- ( @fields[:TransactionType][:value] == 'sale' or
158
- @fields[:TransactionType][:value] == 'auth' ) )
159
- # If no Safe ID we need the card info
160
- # If no MagData then we need keyed info
161
- if @fields[:MagData][:value] == ''
162
- @required.push(:CCNumber)
163
- @required.push(:CCExpDate)
164
- else
165
- @required.push(:MagHardware)
166
- end
154
+ # Credit card transaction
155
+ # If no SAFE ID and its a sale or auth
156
+ if (@fields[:SAFE_ID][:value] == '' and
157
+ (@fields[:TransactionType][:value] == 'sale' or
158
+ @fields[:TransactionType][:value] == 'auth'))
159
+ # If no Safe ID we need the card info
160
+ # If no MagData then we need keyed info
161
+ if @fields[:MagData][:value] == ''
162
+ @required.push(:CCNumber)
163
+ @required.push(:CCExpDate)
164
+ else
165
+ @required.push(:MagHardware)
167
166
  end
167
+ end
168
168
  end
169
169
 
170
170
  error_array = AgmsAutoValidate();
@@ -172,23 +172,23 @@ module Agms
172
172
  messages = error_array['messages'];
173
173
 
174
174
  # ExpDate MMYY
175
- if ( @fields[:CCExpDate][:value] != '' and
176
- ( @fields[:CCExpDate][:value].length != 4 or
177
- not /(0[1-9]|1[0-2])([0-9][0-9])/.match(@fields[:CCExpDate][:value]) ) )
178
- errors += 1
179
- messages.push('CCExpDate (credit card expiration date) must be MMYY.')
175
+ if (@fields[:CCExpDate][:value] != '' and
176
+ (@fields[:CCExpDate][:value].length != 4 or
177
+ not /(0[1-9]|1[0-2])([0-9][0-9])/.match(@fields[:CCExpDate][:value])))
178
+ errors += 1
179
+ messages.push('CCExpDate (credit card expiration date) must be MMYY.')
180
180
  end
181
181
 
182
182
  # CCNumber length
183
- if ( @fields[:CCNumber][:value] != '' and
183
+ if (@fields[:CCNumber][:value] != '' and
184
184
  @fields[:CCNumber][:value].length != 16 and
185
- @fields[:CCNumber][:value].length != 15 )
186
- errors += 1
187
- messages.push('CCNumber (credit card number) must be 15-16 digits long.')
185
+ @fields[:CCNumber][:value].length != 15)
186
+ errors += 1
187
+ messages.push('CCNumber (credit card number) must be 15-16 digits long.')
188
188
  end
189
189
 
190
190
  # ABA length
191
- if ( @fields[:CheckABA][:value] != '' and
191
+ if (@fields[:CheckABA][:value] != '' and
192
192
  @fields[:CheckABA][:value].length != 9)
193
193
  errors += 1
194
194
  messages.push('CheckABA (routing number) must be 9 digits long.')
@@ -203,15 +203,15 @@ module Agms
203
203
  print "Request validation failed with #{messages.join(' ')}"
204
204
  raise RequestValidationError, "Request validation failed with #{messages.join(' ')}."
205
205
  end
206
-
207
- end
208
206
 
209
- def getFields
210
- return getFieldArray
211
- end
207
+ end
212
208
 
213
- def getParams(request)
214
- return {:objparameters => request}
215
- end
216
- end
209
+ def getFields
210
+ return getFieldArray
211
+ end
212
+
213
+ def getParams(request)
214
+ return {:objparameters => request}
215
+ end
216
+ end
217
217
  end
@@ -1,29 +1,29 @@
1
1
  module Agms
2
2
  class Transaction < Agms
3
- # A class representing AGMS Transaction objects.
4
-
5
- alias AgmsResetParameters resetParameters
6
- alias AgmsSetParameter setParameter
7
- alias AgmsDoConnect doConnect
3
+ # A class representing AGMS Transaction objects.
8
4
 
9
- def initialize
10
- super()
5
+ alias AgmsResetParameters resetParameters
6
+ alias AgmsSetParameter setParameter
7
+ alias AgmsDoConnect doConnect
8
+
9
+ def initialize
10
+ super()
11
11
  @api_url = 'https://gateway.agms.com/roxapi/agms.asmx'
12
12
  @requestObject = 'TransactionRequest'
13
13
  @responseObject = 'TransactionResponse'
14
- end
14
+ end
15
15
 
16
16
  def process(params)
17
17
  @op = 'ProcessTransaction'
18
18
  AgmsResetParameters()
19
19
  params.each do |param, config|
20
- AgmsSetParameter(param, config)
21
- end
22
- self.execute()
23
- return @response.toArray()
24
- end
20
+ AgmsSetParameter(param, config)
21
+ end
22
+ self.execute()
23
+ return @response.toArray()
24
+ end
25
25
 
26
- protected
26
+ protected
27
27
  def execute
28
28
  if @op == 'ProcessTransaction'
29
29
  AgmsDoConnect('ProcessTransaction', @responseObject)
@@ -32,5 +32,5 @@ module Agms
32
32
  end
33
33
  end
34
34
 
35
- end
35
+ end
36
36
  end
@@ -1,3 +1,3 @@
1
1
  module Agms
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maanas Royy