agms 0.1.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.
- checksums.yaml +15 -0
- data/.travis.yml +3 -0
- data/Gemfile +4 -0
- data/README.md +51 -0
- data/Rakefile +40 -0
- data/agms.gemspec +29 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/example/hpp.rb +18 -0
- data/example/invoicing.rb +23 -0
- data/example/recurring.rb +23 -0
- data/example/report.rb +16 -0
- data/example/safe.rb +17 -0
- data/example/transaction.rb +17 -0
- data/init.yml +9 -0
- data/lib/agms.rb +59 -0
- data/lib/agms/agms.rb +109 -0
- data/lib/agms/configuration.rb +71 -0
- data/lib/agms/connect.rb +176 -0
- data/lib/agms/error/agms_error.rb +9 -0
- data/lib/agms/error/authentication_error.rb +7 -0
- data/lib/agms/error/authorization_error.rb +7 -0
- data/lib/agms/error/client_error_error.rb +7 -0
- data/lib/agms/error/configuation_error.rb +7 -0
- data/lib/agms/error/down_for_maintenance_error.rb +7 -0
- data/lib/agms/error/forged_query_String_error.rb +7 -0
- data/lib/agms/error/invalid_parameter_error.rb +7 -0
- data/lib/agms/error/invalid_request_error.rb +7 -0
- data/lib/agms/error/invalid_signature_error.rb +7 -0
- data/lib/agms/error/not_found_error.rb +7 -0
- data/lib/agms/error/request_validation_error.rb +7 -0
- data/lib/agms/error/response_error.rb +7 -0
- data/lib/agms/error/server_error_error.rb +7 -0
- data/lib/agms/error/ssl_certificate_error.rb +7 -0
- data/lib/agms/error/unexpected_error.rb +7 -0
- data/lib/agms/error/upgrade_required_error.rb +7 -0
- data/lib/agms/hpp.rb +65 -0
- data/lib/agms/invoicing.rb +63 -0
- data/lib/agms/recurring.rb +76 -0
- data/lib/agms/report.rb +53 -0
- data/lib/agms/request/hpp_request.rb +181 -0
- data/lib/agms/request/invoicing_request.rb +8 -0
- data/lib/agms/request/recurring_request.rb +115 -0
- data/lib/agms/request/report_request.rb +106 -0
- data/lib/agms/request/request.rb +455 -0
- data/lib/agms/request/safe_request.rb +211 -0
- data/lib/agms/request/transaction_request.rb +217 -0
- data/lib/agms/response/hpp_response.rb +39 -0
- data/lib/agms/response/invoicing_response.rb +10 -0
- data/lib/agms/response/recurring_response.rb +28 -0
- data/lib/agms/response/report_response.rb +141 -0
- data/lib/agms/response/response.rb +48 -0
- data/lib/agms/response/safe_response.rb +51 -0
- data/lib/agms/response/transaction_response.rb +50 -0
- data/lib/agms/safe.rb +66 -0
- data/lib/agms/transaction.rb +37 -0
- data/lib/agms/version.rb +3 -0
- metadata +156 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
module Agms
|
2
|
+
class Invoicing < Agms
|
3
|
+
# A class representing AGMS Invoicing objects.
|
4
|
+
|
5
|
+
alias AgmsResetParameters resetParameters
|
6
|
+
alias AgmsSetParameter setParameter
|
7
|
+
alias AgmsDoConnect doConnect
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
super()
|
11
|
+
@api_url = 'https://gateway.agms.com/roxapi/AGMS_BillPay.asmx'
|
12
|
+
@requestObject = 'InvoicingRequest'
|
13
|
+
@responseObject = 'InvoicingResponse'
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Object]
|
17
|
+
def customer(params)
|
18
|
+
@op = 'RetrieveCustomerIDList'
|
19
|
+
AgmsResetParameters()
|
20
|
+
params.each do |param, config|
|
21
|
+
AgmsSetParameter(param, config)
|
22
|
+
end
|
23
|
+
# self.execute()
|
24
|
+
# return @response.toArray()
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [Object]
|
28
|
+
def invoice(params)
|
29
|
+
@op = 'RetrieveInvoices'
|
30
|
+
AgmsResetParameters()
|
31
|
+
params.each do |param, config|
|
32
|
+
AgmsSetParameter(param, config)
|
33
|
+
end
|
34
|
+
# self.execute()
|
35
|
+
# return @response.toArray()
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Object]
|
39
|
+
def submit(params)
|
40
|
+
@op = 'SubmitInvoice'
|
41
|
+
AgmsResetParameters()
|
42
|
+
params.each do |param, config|
|
43
|
+
AgmsSetParameter(param, config)
|
44
|
+
end
|
45
|
+
# self.execute()
|
46
|
+
# return @response.toArray()
|
47
|
+
end
|
48
|
+
|
49
|
+
protected
|
50
|
+
def execute
|
51
|
+
if self.op == 'RetrieveCustomerIDList'
|
52
|
+
AgmsDoConnect('RetrieveCustomerIDList', @responseObject)
|
53
|
+
elsif self.op == 'RetrieveInvoices'
|
54
|
+
AgmsDoConnect('RetrieveInvoices', @responseObject)
|
55
|
+
elsif self.op == 'SubmitInvoice'
|
56
|
+
AgmsDoConnect('SubmitInvoice', @responseObject)
|
57
|
+
else
|
58
|
+
raise InvalidRequestError, "Invalid request to Transaction API #{@op}"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module Agms
|
2
|
+
class Recurring < Agms
|
3
|
+
# A class representing AGMS Recurring objects.
|
4
|
+
|
5
|
+
alias AgmsResetParameters resetParameters
|
6
|
+
alias AgmsSetParameter setParameter
|
7
|
+
alias AgmsDoConnect doConnect
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
super()
|
11
|
+
@api_url = 'https://gateway.agms.com/roxapi/AGMS_Recurring.asmx'
|
12
|
+
@requestObject = 'RecurringRequest'
|
13
|
+
@responseObject = 'RecurringResponse'
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [Object]
|
17
|
+
def add(params)
|
18
|
+
@op = 'RecurringAdd'
|
19
|
+
AgmsResetParameters()
|
20
|
+
params.each do |param, config|
|
21
|
+
AgmsSetParameter(param, config)
|
22
|
+
end
|
23
|
+
self.execute()
|
24
|
+
return @response.toArray()
|
25
|
+
end
|
26
|
+
|
27
|
+
# @return [Object]
|
28
|
+
def update(params)
|
29
|
+
@op = 'RecurringUpdate'
|
30
|
+
AgmsResetParameters()
|
31
|
+
params.each do |param, config|
|
32
|
+
AgmsSetParameter(param, config)
|
33
|
+
end
|
34
|
+
self.execute()
|
35
|
+
return @response.toArray()
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [Object]
|
39
|
+
def delete(params)
|
40
|
+
@op = 'RecurringDelete'
|
41
|
+
AgmsResetParameters()
|
42
|
+
params.each do |param, config|
|
43
|
+
AgmsSetParameter(param, config)
|
44
|
+
end
|
45
|
+
self.execute()
|
46
|
+
return @response.toArray()
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [Object]
|
50
|
+
def get(params)
|
51
|
+
@op = 'RetrieveRecurringID'
|
52
|
+
AgmsResetParameters()
|
53
|
+
params.each do |param, config|
|
54
|
+
AgmsSetParameter(param, config)
|
55
|
+
end
|
56
|
+
self.execute()
|
57
|
+
return @response.toArray()
|
58
|
+
end
|
59
|
+
|
60
|
+
protected
|
61
|
+
def execute
|
62
|
+
if @op == 'RecurringAdd'
|
63
|
+
AgmsDoConnect('RecurringAdd', @responseObject)
|
64
|
+
elsif @op == 'RecurringUpdate'
|
65
|
+
AgmsDoConnect('RecurringUpdate', @responseObject)
|
66
|
+
elsif @op == 'RecurringDelete'
|
67
|
+
AgmsDoConnect('RecurringDelete', @responseObject)
|
68
|
+
elsif @op == 'RetrieveRecurringID'
|
69
|
+
AgmsDoConnect('RetrieveRecurringID', @responseObject)
|
70
|
+
else
|
71
|
+
raise InvalidRequestError, "Invalid request to Transaction API #{@op}"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
data/lib/agms/report.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
module Agms
|
2
|
+
class Report < Agms
|
3
|
+
# A class representing AGMS Report objects.
|
4
|
+
|
5
|
+
alias AgmsResetParameters resetParameters
|
6
|
+
alias AgmsSetParameter setParameter
|
7
|
+
alias AgmsDoConnect doConnect
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
super()
|
11
|
+
@trans_api_url = 'https://gateway.agms.com/roxapi/agms.asmx'
|
12
|
+
@safe_api_url = 'https://gateway.agms.com/roxapi/AGMS_SAFE_API.asmx'
|
13
|
+
@requestObject = 'ReportRequest'
|
14
|
+
@responseObject = 'ReportResponse'
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Object]
|
18
|
+
def listTransactions(params)
|
19
|
+
@op = 'TransactionAPI'
|
20
|
+
AgmsResetParameters()
|
21
|
+
params.each do |param, config|
|
22
|
+
AgmsSetParameter(param, config)
|
23
|
+
end
|
24
|
+
self.execute()
|
25
|
+
return @response.toArray()
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [Object]
|
29
|
+
def listSAFEs(params)
|
30
|
+
@op = 'QuerySAFE'
|
31
|
+
AgmsResetParameters()
|
32
|
+
params.each do |param, config|
|
33
|
+
AgmsSetParameter(param, config)
|
34
|
+
end
|
35
|
+
self.execute()
|
36
|
+
return @response.toArray()
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
def execute
|
41
|
+
if @op == 'TransactionAPI'
|
42
|
+
@api_url = @trans_api_url
|
43
|
+
AgmsDoConnect('TransactionAPI', @responseObject)
|
44
|
+
elsif @op == 'QuerySAFE'
|
45
|
+
@api_url = @safe_api_url
|
46
|
+
AgmsDoConnect('QuerySAFE', @responseObject)
|
47
|
+
else
|
48
|
+
raise InvalidRequestError, "Invalid request to Transaction API #{@op}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
module Agms
|
2
|
+
class HPPRequest < Request
|
3
|
+
# A class representing AGMS Transaction Request objects.
|
4
|
+
|
5
|
+
alias AgmsAutoValidate autoValidate
|
6
|
+
|
7
|
+
def initialize(op)
|
8
|
+
super(op)
|
9
|
+
@fields = {
|
10
|
+
:TransactionType => {:setting => '', :value => ''},
|
11
|
+
:Amount => {:setting => '', :value => ''},
|
12
|
+
:TipAmount => {:setting => '', :value => ''},
|
13
|
+
:Tax => {:setting => '', :value => ''},
|
14
|
+
:Shipping => {:setting => '', :value => ''},
|
15
|
+
:OrderDescription => {:setting => '', :value => ''},
|
16
|
+
:OrderID => {:setting => '', :value => ''},
|
17
|
+
:ClerkID => {:setting => '', :value => ''},
|
18
|
+
:PONumber => {:setting => '', :value => ''},
|
19
|
+
:RetURL => {:setting => '', :value => ''},
|
20
|
+
:ACHEnabled => {:setting => '', :value => ''},
|
21
|
+
:SAFE_ID => {:setting => '', :value => ''},
|
22
|
+
:Donation => {:setting => '', :value => ''},
|
23
|
+
:UsageCount => {:setting => '', :value => ''},
|
24
|
+
:Internal => {:setting => '', :value => ''},
|
25
|
+
:FirstName => {:setting => '', :value => ''},
|
26
|
+
:LastName => {:setting => '', :value => ''},
|
27
|
+
:Company => {:setting => '', :value => ''},
|
28
|
+
:Address1 => {:setting => '', :value => ''},
|
29
|
+
:Address2 => {:setting => '', :value => ''},
|
30
|
+
:City => {:setting => '', :value => ''},
|
31
|
+
:State => {:setting => '', :value => ''},
|
32
|
+
:Zip => {:setting => '', :value => ''},
|
33
|
+
:Country => {:setting => '', :value => ''},
|
34
|
+
:Phone => {:setting => '', :value => ''},
|
35
|
+
:Fax => {:setting => '', :value => ''},
|
36
|
+
:EMail => {:setting => '', :value => ''},
|
37
|
+
:Website => {:setting => '', :value => ''},
|
38
|
+
:ShippingFirstName => {:setting => '', :value => ''},
|
39
|
+
:ShippingLastName => {:setting => '', :value => ''},
|
40
|
+
:ShippingCompany => {:setting => '', :value => ''},
|
41
|
+
:ShippingAddress1 => {:setting => '', :value => ''},
|
42
|
+
:ShippingAddress2 => {:setting => '', :value => ''},
|
43
|
+
:ShippingCity => {:setting => '', :value => ''},
|
44
|
+
:ShippingState => {:setting => '', :value => ''},
|
45
|
+
:ShippingZip => {:setting => '', :value => ''},
|
46
|
+
:ShippingCountry => {:setting => '', :value => ''},
|
47
|
+
:ShippingEmail => {:setting => '', :value => ''},
|
48
|
+
:ShippingPhone => {:setting => '', :value => ''},
|
49
|
+
:ShippingFax => {:setting => '', :value => ''},
|
50
|
+
:ProcessorID => {:setting => '', :value => ''},
|
51
|
+
:TransactionID => {:setting => '', :value => ''},
|
52
|
+
:Tracking_Number => {:setting => '', :value => ''},
|
53
|
+
:Shipping_Carrier => {:setting => '', :value => ''},
|
54
|
+
:IPAddress => {:setting => '', :value => ''},
|
55
|
+
:Custom_Field_1 => {:setting => '', :value => ''},
|
56
|
+
:Custom_Field_2 => {:setting => '', :value => ''},
|
57
|
+
:Custom_Field_3 => {:setting => '', :value => ''},
|
58
|
+
:Custom_Field_4 => {:setting => '', :value => ''},
|
59
|
+
:Custom_Field_5 => {:setting => '', :value => ''},
|
60
|
+
:Custom_Field_6 => {:setting => '', :value => ''},
|
61
|
+
:Custom_Field_7 => {:setting => '', :value => ''},
|
62
|
+
:Custom_Field_8 => {:setting => '', :value => ''},
|
63
|
+
:Custom_Field_9 => {:setting => '', :value => ''},
|
64
|
+
:Custom_Field_10 => {:setting => '', :value => ''},
|
65
|
+
:HPPFormat => {:setting => '', :value => ''},
|
66
|
+
:StartDate => {:setting => '', :value => ''},
|
67
|
+
:EndDate => {:setting => '', :value => ''},
|
68
|
+
:StartTime => {:setting => '', :value => ''},
|
69
|
+
:EndTime => {:setting => '', :value => ''},
|
70
|
+
:SuppressAutoSAFE => {:setting => '', :value => ''}
|
71
|
+
}
|
72
|
+
|
73
|
+
@optionable = %w('FirstName', 'LastName', 'Company', 'Address1', 'Address2',
|
74
|
+
'City', 'State', 'Zip', 'Country', 'Phone', 'Fax',
|
75
|
+
'EMail', 'Website', 'Tax', 'Shipping', 'OrderID',
|
76
|
+
'PONumber', 'ShippingFirstName', 'ShippingLastName', 'ShippingCompany', 'ShippingAddress1',
|
77
|
+
'ShippingAddress2', 'ShippingCity', 'ShippingState', 'ShippingZip', 'ShippingCountry',
|
78
|
+
'ShippingEmail', 'ShippingPhone', 'ShippingFax', 'ShippingTrackingNumber', 'ShippingCarrier',
|
79
|
+
'Custom_Field_1', 'Custom_Field_2', 'Custom_Field_3', 'Custom_Field_4', 'Custom_Field_5',
|
80
|
+
'Custom_Field_6', 'Custom_Field_7', 'Custom_Field_8', 'Custom_Field_9', 'Custom_Field_10')
|
81
|
+
|
82
|
+
@numeric = %w(Amount Tax Shipping ProcessorID TransactionID CheckABA CheckAccount CCNumber CCExpDate)
|
83
|
+
|
84
|
+
@enums = {
|
85
|
+
:TransactionType => %w(sale auth safe\ only capture void refund update adjustment),
|
86
|
+
:Shipping_Carrier => %w(ups fedex dhl usps UPS Fedex DHL USPS),
|
87
|
+
:HPPFormat => %w(1 2)
|
88
|
+
}
|
89
|
+
@boolean = %w(Donation AutoSAFE SuppressAutoSAFE)
|
90
|
+
|
91
|
+
@date = %w(StartDate EndDate)
|
92
|
+
|
93
|
+
@digit_2 = %w(State ShippingState)
|
94
|
+
|
95
|
+
@amount = %w(Amount TipAmount Tax Shipping)
|
96
|
+
|
97
|
+
@required = %w(TransactionType)
|
98
|
+
|
99
|
+
# Override mapping with api-specific field maps
|
100
|
+
@mapping[:shipping_tracking_number] = :Tracking_Number
|
101
|
+
@mapping[:shipping_carrier] = :Shipping_Carrier
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
def validate
|
106
|
+
@required = Array.new
|
107
|
+
|
108
|
+
# All sales and auth require an amount unless donation
|
109
|
+
if ( ( @fields[:Donation][:value] != '' or
|
110
|
+
@fields[:Donation][:value] != false ) and
|
111
|
+
(@fields[:TransactionType][:value] == 'sale' or
|
112
|
+
@fields[:TransactionType][:value] == 'auth') )
|
113
|
+
@required.push(:Amount)
|
114
|
+
end
|
115
|
+
|
116
|
+
error_array = AgmsAutoValidate();
|
117
|
+
|
118
|
+
errors = error_array['errors'];
|
119
|
+
messages = error_array['messages'];
|
120
|
+
|
121
|
+
# ExpDate MMYY
|
122
|
+
if ( @fields.has_key?(:CCExpDate) and
|
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]) ) )
|
126
|
+
errors += 1
|
127
|
+
messages.push('CCExpDate (credit card expiration date) must be MMYY.')
|
128
|
+
end
|
129
|
+
|
130
|
+
# CCNumber length
|
131
|
+
if ( @fields.has_key?(:CCNumber) and
|
132
|
+
@fields[:CCNumber][:value] != '' and
|
133
|
+
@fields[:CCNumber][:value].length != 16 and
|
134
|
+
@fields[:CCNumber][:value].length != 15 )
|
135
|
+
errors += 1
|
136
|
+
messages.push('CCNumber (credit card number) must be 15-16 digits long.')
|
137
|
+
end
|
138
|
+
|
139
|
+
# ABA length
|
140
|
+
if ( @fields.has_key?(:CheckABA) and
|
141
|
+
@fields[:CheckABA][:value] != '' and
|
142
|
+
@fields[:CheckABA][:value].length != 9)
|
143
|
+
errors += 1
|
144
|
+
messages.push('CheckABA (routing number) must be 9 digits long.')
|
145
|
+
end
|
146
|
+
|
147
|
+
@validate_errors = errors;
|
148
|
+
@validate_messages = messages;
|
149
|
+
|
150
|
+
if errors == 0
|
151
|
+
return {'errors' => errors, 'messages' => messages}
|
152
|
+
else
|
153
|
+
raise RequestValidationError, "Request validation failed with #{messages.join(' ')}."
|
154
|
+
end
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
def getFields
|
159
|
+
fields = getFieldArray
|
160
|
+
if fields.has_key?(:AutoSAFE)
|
161
|
+
if fields[:AutoSAFE] == true
|
162
|
+
fields[:AutoSAFE] = 1
|
163
|
+
else
|
164
|
+
fields[:AutoSAFE] = 0
|
165
|
+
end
|
166
|
+
end
|
167
|
+
if fields.has_key?(:SuppressAutoSAFE)
|
168
|
+
if fields[:SuppressAutoSAFE] == true
|
169
|
+
fields[:SuppressAutoSAFE] = 1
|
170
|
+
else
|
171
|
+
fields[:SuppressAutoSAFE] = 0
|
172
|
+
end
|
173
|
+
end
|
174
|
+
return fields
|
175
|
+
end
|
176
|
+
|
177
|
+
def getParams(request)
|
178
|
+
return {:objparameters => request}
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
module Agms
|
2
|
+
class RecurringRequest < Request
|
3
|
+
# A class representing AGMS Recurring Request objects.
|
4
|
+
|
5
|
+
alias AgmsAutoValidate autoValidate
|
6
|
+
|
7
|
+
def initialize(op)
|
8
|
+
super(op)
|
9
|
+
@fields1 = {
|
10
|
+
:RecurringID => {:setting => '', :value => ''},
|
11
|
+
:MerchantID => {:setting => '', :value => ''},
|
12
|
+
:PaymentType => {:setting => '', :value => 'creditcard'},
|
13
|
+
:InitialAmount => {:setting => '', :value => ''},
|
14
|
+
:RecurringAmount => {:setting => '', :value => ''},
|
15
|
+
:CCNumber => {:setting => '', :value => ''},
|
16
|
+
:CCExpDate => {:setting => '', :value => ''},
|
17
|
+
:CVV => {:setting => '', :value => ''},
|
18
|
+
:CheckName => {:setting => '', :value => ''},
|
19
|
+
:CheckABA => {:setting => '', :value => ''},
|
20
|
+
:CheckAccount => {:setting => '', :value => ''},
|
21
|
+
:AccountHolderType => {:setting => '', :value => ''},
|
22
|
+
:AccountType => {:setting => '', :value => ''},
|
23
|
+
:SecCode => {:setting => '', :value => ''},
|
24
|
+
:FirstName => {:setting => '', :value => ''},
|
25
|
+
:LastName => {:setting => '', :value => ''},
|
26
|
+
:Company => {:setting => '', :value => ''},
|
27
|
+
:Address1 => {:setting => '', :value => ''},
|
28
|
+
:Address2 => {:setting => '', :value => ''},
|
29
|
+
:City => {:setting => '', :value => ''},
|
30
|
+
:State => {:setting => '', :value => ''},
|
31
|
+
:Zip => {:setting => '', :value => ''},
|
32
|
+
:Country => {:setting => '', :value => ''},
|
33
|
+
:Phone => {:setting => '', :value => ''},
|
34
|
+
:Fax => {:setting => '', :value => ''},
|
35
|
+
:EMail => {:setting => '', :value => ''},
|
36
|
+
:Website => {:setting => '', :value => ''},
|
37
|
+
:Custom_Field_1 => {:setting => '', :value => ''},
|
38
|
+
:Custom_Field_2 => {:setting => '', :value => ''},
|
39
|
+
:Custom_Field_3 => {:setting => '', :value => ''},
|
40
|
+
:Custom_Field_4 => {:setting => '', :value => ''},
|
41
|
+
:Custom_Field_5 => {:setting => '', :value => ''},
|
42
|
+
:Custom_Field_6 => {:setting => '', :value => ''},
|
43
|
+
:Custom_Field_7 => {:setting => '', :value => ''},
|
44
|
+
:Custom_Field_8 => {:setting => '', :value => ''},
|
45
|
+
:Custom_Field_9 => {:setting => '', :value => ''},
|
46
|
+
:Custom_Field_10 => {:setting => '', :value => ''},
|
47
|
+
:StartDate => {:setting => '', :value => ''},
|
48
|
+
:Frequency => {:setting => '', :value => ''},
|
49
|
+
:Quantity => {:setting => '', :value => ''},
|
50
|
+
:NumberOfOccurrences => {:setting => '', :value => ''},
|
51
|
+
:EndDate => {:setting => '', :value => ''},
|
52
|
+
:NumberOfRetries => {:setting => '', :value => ''}
|
53
|
+
}
|
54
|
+
|
55
|
+
@numeric = %w(InitialAmount RecurringAmount Quantity NumberOfOccurrences NumberOfRetries CCNumber CCExpDate CheckABA CheckAccount)
|
56
|
+
|
57
|
+
@enums = {
|
58
|
+
:PaymentType => %w(creditcard check),
|
59
|
+
:SecCode => %w(PPD WEB TEL CCD),
|
60
|
+
:AccountHolderType => %w(business personal),
|
61
|
+
:AccountType => %w(checking savings),
|
62
|
+
:Frequency => %w(days weeks months)
|
63
|
+
}
|
64
|
+
|
65
|
+
@date = %w(StartDate EndDate)
|
66
|
+
|
67
|
+
@digit_2 = %w(State)
|
68
|
+
|
69
|
+
@amount = %w(Amount TipAmount Tax Shipping)
|
70
|
+
|
71
|
+
if @op == 'RecurringAdd'
|
72
|
+
@fields = @fields1
|
73
|
+
else
|
74
|
+
raise InvalidRequestError, "Invalid op #{@op} in Request."
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
def validate
|
80
|
+
@required = Array.new
|
81
|
+
|
82
|
+
if @fields[:Frequency][:value] == ''
|
83
|
+
@required.push(:Frequency)
|
84
|
+
end
|
85
|
+
|
86
|
+
# If no transaction type, require a Safe Action
|
87
|
+
if @fields[:NumberOfRetries][:value] == ''
|
88
|
+
@required.push(:NumberOfRetries)
|
89
|
+
end
|
90
|
+
|
91
|
+
error_array = AgmsAutoValidate();
|
92
|
+
|
93
|
+
errors = error_array['errors'];
|
94
|
+
messages = error_array['messages'];
|
95
|
+
|
96
|
+
@validate_errors = errors;
|
97
|
+
@validate_messages = messages;
|
98
|
+
|
99
|
+
if errors == 0
|
100
|
+
return {'errors' => errors, 'messages' => messages}
|
101
|
+
else
|
102
|
+
raise RequestValidationError, "Request validation failed with #{messages.join(' ')}."
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def getFields
|
108
|
+
return getFieldArray
|
109
|
+
end
|
110
|
+
|
111
|
+
def getParams(request)
|
112
|
+
return {:vRecurringParams => request}
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|