authorizenet_blaq 1.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/lib/app/helpers/authorize_net_helper.rb +24 -0
  3. data/lib/authorize_net/addresses/address.rb +29 -0
  4. data/lib/authorize_net/addresses/shipping_address.rb +26 -0
  5. data/lib/authorize_net/aim/response.rb +131 -0
  6. data/lib/authorize_net/aim/transaction.rb +190 -0
  7. data/lib/authorize_net/api/api_transaction.rb +123 -0
  8. data/lib/authorize_net/api/constants.yml +1 -0
  9. data/lib/authorize_net/api/schema.rb +4985 -0
  10. data/lib/authorize_net/api/transaction.rb +258 -0
  11. data/lib/authorize_net/arb/fields.rb +24 -0
  12. data/lib/authorize_net/arb/paging.rb +33 -0
  13. data/lib/authorize_net/arb/response.rb +34 -0
  14. data/lib/authorize_net/arb/sorting.rb +43 -0
  15. data/lib/authorize_net/arb/subscription.rb +72 -0
  16. data/lib/authorize_net/arb/subscription_detail.rb +14 -0
  17. data/lib/authorize_net/arb/subscription_list_response.rb +43 -0
  18. data/lib/authorize_net/arb/transaction.rb +177 -0
  19. data/lib/authorize_net/authorize_net.rb +154 -0
  20. data/lib/authorize_net/cim/customer_profile.rb +19 -0
  21. data/lib/authorize_net/cim/payment_profile.rb +37 -0
  22. data/lib/authorize_net/cim/response.rb +116 -0
  23. data/lib/authorize_net/cim/transaction.rb +727 -0
  24. data/lib/authorize_net/customer.rb +27 -0
  25. data/lib/authorize_net/email_receipt.rb +24 -0
  26. data/lib/authorize_net/fields.rb +779 -0
  27. data/lib/authorize_net/key_value_response.rb +117 -0
  28. data/lib/authorize_net/key_value_transaction.rb +291 -0
  29. data/lib/authorize_net/line_item.rb +25 -0
  30. data/lib/authorize_net/order.rb +42 -0
  31. data/lib/authorize_net/payment_methods/credit_card.rb +62 -0
  32. data/lib/authorize_net/payment_methods/echeck.rb +72 -0
  33. data/lib/authorize_net/reporting/batch.rb +19 -0
  34. data/lib/authorize_net/reporting/batch_statistics.rb +19 -0
  35. data/lib/authorize_net/reporting/fds_filter.rb +11 -0
  36. data/lib/authorize_net/reporting/response.rb +163 -0
  37. data/lib/authorize_net/reporting/returned_item.rb +46 -0
  38. data/lib/authorize_net/reporting/transaction.rb +133 -0
  39. data/lib/authorize_net/reporting/transaction_details.rb +25 -0
  40. data/lib/authorize_net/response.rb +27 -0
  41. data/lib/authorize_net/sim/hosted_payment_form.rb +38 -0
  42. data/lib/authorize_net/sim/hosted_receipt_page.rb +37 -0
  43. data/lib/authorize_net/sim/response.rb +142 -0
  44. data/lib/authorize_net/sim/transaction.rb +138 -0
  45. data/lib/authorize_net/transaction.rb +66 -0
  46. data/lib/authorize_net/xml_response.rb +172 -0
  47. data/lib/authorize_net/xml_transaction.rb +298 -0
  48. data/lib/authorize_net.rb +107 -0
  49. data/lib/authorizenet_blaq.rb +4 -0
  50. data/lib/generators/authorize_net/direct_post/direct_post_generator.rb +53 -0
  51. data/lib/generators/authorize_net/direct_post/templates/README-AuthorizeNet +49 -0
  52. data/lib/generators/authorize_net/direct_post/templates/config.yml.erb +8 -0
  53. data/lib/generators/authorize_net/direct_post/templates/config.yml.rails3.erb +8 -0
  54. data/lib/generators/authorize_net/direct_post/templates/controller.rb.erb +31 -0
  55. data/lib/generators/authorize_net/direct_post/templates/initializer.rb +4 -0
  56. data/lib/generators/authorize_net/direct_post/templates/layout.erb +18 -0
  57. data/lib/generators/authorize_net/direct_post/templates/payment.erb +10 -0
  58. data/lib/generators/authorize_net/direct_post/templates/payment.rails3.erb +10 -0
  59. data/lib/generators/authorize_net/direct_post/templates/receipt.erb +1 -0
  60. data/lib/generators/authorize_net/direct_post/templates/relay_response.erb +1 -0
  61. data/lib/generators/authorize_net/sim/sim_generator.rb +47 -0
  62. data/lib/generators/authorize_net/sim/templates/README-AuthorizeNet +52 -0
  63. data/lib/generators/authorize_net/sim/templates/config.yml.erb +8 -0
  64. data/lib/generators/authorize_net/sim/templates/config.yml.rails3.erb +8 -0
  65. data/lib/generators/authorize_net/sim/templates/controller.rb.erb +21 -0
  66. data/lib/generators/authorize_net/sim/templates/initializer.rb +4 -0
  67. data/lib/generators/authorize_net/sim/templates/layout.erb +18 -0
  68. data/lib/generators/authorize_net/sim/templates/payment.erb +6 -0
  69. data/lib/generators/authorize_net/sim/templates/payment.rails3.erb +6 -0
  70. data/lib/generators/authorize_net/sim/templates/thank_you.erb +1 -0
  71. data/lib/generators/generator_extensions.rb +75 -0
  72. metadata +196 -0
@@ -0,0 +1,258 @@
1
+ module AuthorizeNet::API
2
+ class Transaction < ApiTransaction
3
+ attr_accessor :access_token
4
+ attr_accessor :options_OAuth
5
+
6
+ def initialize(api_login_id = nil, api_transaction_key = nil, options = {})
7
+ super
8
+ end
9
+
10
+ # This request enables you to create a transaction, and optional customer profile.
11
+ # NOTE: Tokenized transactions (e.g. Apple Pay), or PayPal should not be used to
12
+ # create payment profiles.
13
+ #
14
+ # See spec/api_spec.rb for usage examples
15
+ def create_transaction(request)
16
+ make_request(request,CreateTransactionResponse,Type::API_CREATE_TRANSACTION)
17
+ end
18
+
19
+ # This request enables you to create a recurring billing subscription
20
+ #
21
+ # See spec/api_spec.rb for usage examples
22
+ def create_subscription(request)
23
+ make_request(request,ARBCreateSubscriptionResponse,Type::API_CREATE_SUBSCRIPTION)
24
+ end
25
+
26
+ # This request enables you to update a recurring billing subscription
27
+ #
28
+ # See spec/api_spec.rb for usage examples
29
+ def update_subscription(request)
30
+ make_request(request,ARBUpdateSubscriptionResponse,Type::API_UPDATE_SUBSCRIPTION)
31
+ end
32
+
33
+ # This request enables you to cancel a recurring billing subscription
34
+ #
35
+ # See spec/api_spec.rb for usage examples
36
+ def cancel_subscription(request)
37
+ make_request(request,ARBCancelSubscriptionResponse,Type::API_CANCEL_SUBSCRIPTION)
38
+ end
39
+
40
+ # This request enables you to get a recurring billing subscription status
41
+ #
42
+ # See spec/api_spec.rb for usage examples
43
+ def get_subscription_status(request)
44
+ make_request(request,ARBGetSubscriptionStatusResponse,Type::API_GET_SUBSCRIPTION_STATUS)
45
+ end
46
+
47
+ # This request enables you to get a list of all recurring billing subscriptions
48
+ #
49
+ # See spec/api_spec.rb for usage examples
50
+ def get_subscription_list(request)
51
+ make_request(request,ARBGetSubscriptionListResponse,Type::API_GET_SUBSCRIPTION_LIST)
52
+ end
53
+
54
+ # This request enables you to create a customer profile
55
+ #
56
+ # See spec/api_spec.rb for usage examples
57
+ def create_customer_profile(request)
58
+ make_request(request,CreateCustomerProfileResponse,Type::API_CREATE_CUSTOMER_PROFILE)
59
+ end
60
+
61
+ # This request enables you to retrieve a customer profile
62
+ #
63
+ # See spec/api_spec.rb for usage examples
64
+ def get_customer_profile(request)
65
+ make_request(request,GetCustomerProfileResponse,Type::API_GET_CUSTOMER_PROFILE)
66
+ end
67
+
68
+
69
+ # This request enables you to retrieve all customer profile ids
70
+ #
71
+ # See spec/api_spec.rb for usage examples
72
+ def get_customer_profile_ids(request)
73
+ make_request(request,GetCustomerProfileIdsResponse,Type::API_GET_CUSTOMER_PROFILE_IDS)
74
+ end
75
+
76
+ # This request enables you to update a customer profile
77
+ #
78
+ # See spec/api_spec.rb for usage examples
79
+ def update_customer_profile(request)
80
+ make_request(request,UpdateCustomerProfileResponse,Type::API_UPDATE_CUSTOMER_PROFILE)
81
+ end
82
+
83
+ # This request enables you to delete a customer profile
84
+ #
85
+ # See spec/api_spec.rb for usage examples
86
+ def delete_customer_profile(request)
87
+ make_request(request,DeleteCustomerProfileResponse,Type::API_DELETE_CUSTOMER_PROFILE)
88
+ end
89
+
90
+ # This request enables you to create a customer payment profile
91
+ #
92
+ # See spec/api_spec.rb for usage examples
93
+ def create_customer_payment_profile(request)
94
+ make_request(request,CreateCustomerPaymentProfileResponse,Type::API_CREATE_CUSTOMER_PAYMENT_PROFILE)
95
+ end
96
+
97
+ # This request enables you to retrieve a customer payment profile
98
+ #
99
+ # See spec/api_spec.rb for usage examples
100
+ def get_customer_payment_profile(request)
101
+ make_request(request,GetCustomerPaymentProfileResponse,Type::API_GET_CUSTOMER_PAYMENT_PROFILE)
102
+ end
103
+
104
+ # This request enables you to update a customer payment profile
105
+ #
106
+ # See spec/api_spec.rb for usage examples
107
+ def update_customer_payment_profile(request)
108
+ make_request(request,UpdateCustomerPaymentProfileResponse,Type::API_UPDATE_CUSTOMER_PAYMENT_PROFILE)
109
+ end
110
+
111
+ # This request enables you to delete a customer payment profile
112
+ #
113
+ # See spec/api_spec.rb for usage examples
114
+ def delete_customer_payment_profile(request)
115
+ make_request(request,DeleteCustomerPaymentProfileResponse,Type::API_DELETE_CUSTOMER_PAYMENT_PROFILE)
116
+ end
117
+
118
+ # This request enables you to create a customer shipping profile
119
+ #
120
+ # See spec/api_spec.rb for usage examples
121
+ def create_customer_shipping_profile(request)
122
+ make_request(request,CreateCustomerShippingAddressResponse,Type::API_CREATE_CUSTOMER_SHIPPING_PROFILE)
123
+ end
124
+
125
+ # This request enables you to retrieve a customer shipping profile
126
+ #
127
+ # See spec/api_spec.rb for usage examples
128
+ def get_customer_shipping_profile(request)
129
+ make_request(request,GetCustomerShippingAddressResponse,Type::API_GET_CUSTOMER_SHIPPING_PROFILE)
130
+ end
131
+
132
+ # This request enables you to update a customer shipping profile
133
+ #
134
+ # See spec/api_spec.rb for usage examples
135
+ def update_customer_shipping_profile(request)
136
+ make_request(request,UpdateCustomerShippingAddressResponse,Type::API_UPDATE_CUSTOMER_SHIPPING_PROFILE)
137
+ end
138
+
139
+ # This request enables you to delete a customer shipping profile
140
+ #
141
+ # See spec/api_spec.rb for usage examples
142
+ def delete_customer_shipping_profile(request)
143
+ make_request(request,DeleteCustomerShippingAddressResponse,Type::API_DELETE_CUSTOMER_SHIPPING_PROFILE)
144
+ end
145
+
146
+
147
+ # This request enables you to create a customer profile, payment profile,
148
+ # and shipping profile from an existing successful transaction.
149
+ # NOTE: Tokenized transactions (e.g. Apple Pay), or PayPal should not be used to
150
+ # create payment profiles.
151
+ #
152
+ # See spec/api_spec.rb for usage examples
153
+ def create_customer_profile_from_transaction(request)
154
+ make_request(request,CreateProfileResponse,Type::API_CREATE_CUSTOMER_PROFILE_FROM_TRANSACTION)
155
+ end
156
+
157
+ # This request enables you to decrypt a payment data blob.
158
+ #
159
+ # See spec/api_spec.rb for usage examples
160
+ def decrypt_payment_data(request)
161
+ make_request(request,DecryptPaymentDataResponse,Type::API_DECRYPT_PAYMENT_DATA)
162
+ end
163
+
164
+ # This request enables confirm authentication values
165
+ #
166
+ # See spec/api_spec.rb for usage examples
167
+ def authenticate_test_request(request)
168
+ make_request(request,AuthenticateTestResponse,Type::API_AUTHENTICATE_TEST_REQUEST)
169
+ end
170
+
171
+ # This request enables you to get batch statistics details
172
+ #
173
+ # See spec/api_spec.rb for usage examples
174
+ def get_batch_statistics(request)
175
+ make_request(request,GetBatchStatisticsResponse,Type::API_GET_BATCH_STATISTICS)
176
+ end
177
+
178
+ # This request enables you to get batch transaction details
179
+ #
180
+ # See spec/api_spec.rb for usage examples
181
+ def get_transaction_details(request)
182
+ make_request(request,GetTransactionDetailsResponse,Type::API_GET_TRANSACTION_DETAILS)
183
+ end
184
+
185
+ # This request enables you to get batch settled transaction details
186
+ #
187
+ # See spec/api_spec.rb for usage examples
188
+ def get_settled_batch_list(request)
189
+ make_request(request,GetSettledBatchListResponse,Type::API_GET_SETTLED_BATCH_LIST)
190
+ end
191
+
192
+ # This request enables you to get batch unsettled transaction details
193
+ #
194
+ # See spec/api_spec.rb for usage examples
195
+ def get_unsettled_transaction_list(request)
196
+ make_request(request,GetUnsettledTransactionListResponse,Type::API_GET_UNSETTLED_TRANSACTION_LIST)
197
+ end
198
+
199
+ # This request enables confirm authentication values
200
+ #
201
+ # See spec/api_spec.rb for usage examples
202
+ def get_hosted_profile_page(request)
203
+ make_request(request,GetHostedProfilePageResponse,Type::API_GET_HOSTED_PROFILE_PAGE)
204
+ end
205
+
206
+ # This request enables you to update split tender group
207
+ #
208
+ # See spec/api_spec.rb for usage examples
209
+ def update_split_tender_group(request)
210
+ make_request(request,UpdateSplitTenderGroupResponse,Type::API_UPDATE_SPLIT_TENDER_GROUP)
211
+ end
212
+
213
+ # This request enables you to get customer payment profile list
214
+ #
215
+ # See spec/api_spec.rb for usage examples
216
+ def get_customer_payment_profile_list(request)
217
+ make_request(request,GetCustomerPaymentProfileListResponse,Type::API_GET_CUSTOMER_PAYMENT_PROFILE_LIST)
218
+ end
219
+
220
+ # This request enables you to get ARB Subscription
221
+ #
222
+ # See spec/api_spec.rb for usage examples
223
+ def arb_get_subscription_request(request)
224
+ make_request(request,ARBGetSubscriptionResponse,Type::API_ARB_GET_SUBSCRIPTION_REQUEST)
225
+ end
226
+
227
+ # This request enables you to get transaction list
228
+ #
229
+ # See spec/api_spec.rb for usage examples
230
+ def get_transaction_list(request)
231
+ make_request(request,GetTransactionListResponse,Type::API_GET_TRANSACTION_LIST)
232
+ end
233
+
234
+ # This request enables you to validate customer payment profile
235
+ #
236
+ # See spec/api_spec.rb for usage examples
237
+ def validate_customer_payment_profile(request)
238
+ make_request(request,ValidateCustomerPaymentProfileResponse,Type::API_VALIDATE_CUSTOMER_PAYMENT_PROFILE)
239
+ end
240
+
241
+ def get_merchant_details(request)
242
+ make_request(request,GetMerchantDetailsResponse,Type::API_GET_MERCHANT_DETAILS)
243
+ end
244
+
245
+ def get_hosted_payment_page(request)
246
+ make_request(request,GetHostedPaymentPageResponse,Type::API_GET_HOSTED_PAYMENT_PAGE)
247
+ end
248
+
249
+ def update_held_transaction(request)
250
+ make_request(request,UpdateHeldTransactionResponse,Type::API_UDPATE_HELD_TRANSACTION)
251
+ end
252
+
253
+ def get_transaction_list_for_customer(request)
254
+ make_request(request,GetTransactionListResponse,Type::API_GET_TRANSACTION_LIST_FOR_CUSTOMER)
255
+ end
256
+
257
+ end
258
+ end
@@ -0,0 +1,24 @@
1
+ module AuthorizeNet::ARB
2
+ module Fields
3
+ EntityDescription = Struct.new(:node_structure, :entity_class, :arg_mapping)
4
+
5
+ SUBSCRIPTION_DETAIL_ENTITY_DESCRIPTION = EntityDescription.new(
6
+ [
7
+ {:id => :id},
8
+ {:name => :name},
9
+ {:status => :status},
10
+ {:createTimeStampUTC => :create_time_stamp_utc},
11
+ {:firstName => :first_name},
12
+ {:lastName => :last_name},
13
+ {:totalOccurrences => :total_occurrences},
14
+ {:pastOccurrences => :past_occurrences},
15
+ {:paymentMethod => :payment_method},
16
+ {:accountNumber => :account_number},
17
+ {:invoice => :invoice},
18
+ {:amount => :amount},
19
+ {:currencyId => :currency_id}
20
+ ],
21
+ AuthorizeNet::ARB::SubscriptionDetail
22
+ )
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ module AuthorizeNet::ARB
2
+
3
+ class Paging
4
+
5
+ # Models Paging
6
+ include AuthorizeNet::Model
7
+
8
+ attr_accessor :offset,:limit
9
+
10
+ # Initializes Paging object.
11
+ #
12
+ # Typical usage:
13
+ # paging = AuthorizeNet::ARB::Paging.new(1,1000)
14
+ #
15
+ # Valid values for offset: 1 to 100000
16
+ # Valid values for limit: 1 to 1000
17
+ #
18
+ def initialize(offset,limit)
19
+ @offset = offset
20
+ @limit = limit
21
+ end
22
+
23
+ def to_hash
24
+ hash = {
25
+ :offset => @offset,
26
+ :limit => @limit
27
+ }
28
+ hash.delete_if {|k, v| v.nil?}
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,34 @@
1
+ module AuthorizeNet::ARB
2
+
3
+ # The ARB response class.
4
+ class Response < AuthorizeNet::XmlResponse
5
+
6
+ # Constructs a new response object from a +raw_response. You don't typically
7
+ # construct this object yourself, as AuthorizeNet::ARB::Transaction will
8
+ # build one for you when it makes the request to the gateway.
9
+ def initialize(raw_response, transaction)
10
+ super
11
+ unless connection_failure?
12
+ begin
13
+ @subscription_id = node_content_unless_nil(@root.at_css('subscriptionId'))
14
+ @subscription_status = node_content_unless_nil(@root.at_css('Status'))
15
+ rescue
16
+ @raw_response = $!
17
+ end
18
+ end
19
+ end
20
+
21
+ # Returns the subscriptionId from the response if there is one. Otherwise returns nil.
22
+ def subscription_id
23
+ @subscription_id
24
+ end
25
+
26
+ # Returns the status of the Subscription from the response if there is one. Otherwise returns nil. This value
27
+ # is only returned in response to a get_status transaction.
28
+ def subscription_status
29
+ @subscription_status
30
+ end
31
+
32
+ end
33
+
34
+ end
@@ -0,0 +1,43 @@
1
+ module AuthorizeNet::ARB
2
+
3
+ class Sorting
4
+
5
+ # Models Sorting
6
+ include AuthorizeNet::Model
7
+
8
+ attr_accessor :order_by, :order_descending
9
+
10
+ # Initializes Sorting object.
11
+ #
12
+ # Typical usage:
13
+ # sorting = AuthorizeNet::ARB::Sorting.new('name',true)
14
+ #
15
+ # Valid values for order_by values of the AuthorizeNet::ARB::Sorting:
16
+ # id
17
+ # name
18
+ # status
19
+ # createTimeStampUTC
20
+ # lastName
21
+ # firstName
22
+ # accountNumber
23
+ # amount
24
+ # pastOccurrences
25
+ #
26
+ # Valid values for order_descending: true, false, 1, 0
27
+ #
28
+ def initialize(order_by, order_descending)
29
+ @order_by = order_by
30
+ @order_descending = order_descending
31
+ end
32
+
33
+ def to_hash
34
+ hash = {
35
+ :order_by => @order_by,
36
+ :order_descending => @order_descending
37
+ }
38
+ hash.delete_if {|k, v| v.nil?}
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -0,0 +1,72 @@
1
+ module AuthorizeNet::ARB
2
+
3
+ # Models an ARB subscription.
4
+ class Subscription
5
+
6
+ # Use this constant for the value of total_occurrences to get a subscription with no end.
7
+ UNLIMITED_OCCURRENCES = 9999
8
+
9
+ # Constants for the various interval units supported by the ARB API.
10
+ module IntervalUnits
11
+ MONTH = 'months'
12
+ DAY = 'days'
13
+ end
14
+
15
+ # Constants for the various statuses a subscription can have. These are returned by the get_status call.
16
+ module Status
17
+ ACTIVE = 'active'
18
+ EXPIRED = 'expired'
19
+ SUSPENDED = 'suspended'
20
+ CANCELED = 'canceled'
21
+ TERMINATED = 'terminated'
22
+ end
23
+
24
+ include AuthorizeNet::Model
25
+
26
+ attr_accessor :name, :length, :unit, :start_date, :total_occurrences, :trial_occurrences, :amount, :trial_amount, :invoice_number, :description, :subscription_id, :credit_card, :billing_address, :shipping_address, :customer
27
+
28
+ # Override the total_occurrences setter to provide support for :unlimited shortcut.
29
+ def total_occurrences=(new_total_occurrences) #:nodoc:
30
+ if new_total_occurrences == :unlimited
31
+ @total_occurrences = UNLIMITED_OCCURRENCES
32
+ else
33
+ @total_occurrences = new_total_occurrences
34
+ end
35
+ end
36
+
37
+ # Override the unit setter to provide support for :day, :days, :month, :months shortcut. Do not document this method in rdoc.
38
+ def unit=(new_unit) #:nodoc:
39
+ case new_unit
40
+ when :day, :days
41
+ @unit = IntervalUnits::DAY
42
+ when :month, :months
43
+ @unit = IntervalUnits::MONTH
44
+ else
45
+ @unit = new_unit
46
+ end
47
+ end
48
+
49
+ def to_hash
50
+ hash = {
51
+ :subscription_name => @name,
52
+ :subscription_length => @length,
53
+ :subscription_unit => @unit,
54
+ :subscription_start_date => @start_date,
55
+ :subscription_total_occurrences => @total_occurrences,
56
+ :subscription_trial_occurrences => @trial_occurrences,
57
+ :subscription_amount => @amount,
58
+ :subscription_trial_amount => @trial_amount,
59
+ :invoice_num => @invoice_number,
60
+ :description => @description,
61
+ :subscription_id => @subscription_id
62
+ }
63
+ hash.merge!(@credit_card.to_hash) unless @credit_card.nil?
64
+ hash.merge!(@billing_address.to_hash) unless @billing_address.nil?
65
+ hash.merge!(@shipping_address.to_hash) unless @shipping_address.nil?
66
+ hash.merge!(@customer.to_hash) unless @customer.nil?
67
+ hash.delete_if {|k, v| v.nil?}
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,14 @@
1
+ module AuthorizeNet::ARB
2
+
3
+ # Models Subscription Detail.
4
+ class SubscriptionDetail
5
+
6
+ include AuthorizeNet::Model
7
+
8
+ attr_accessor :id, :name, :status, :create_time_stamp_utc, :first_name,
9
+ :last_name, :total_occurrences, :past_occurrences,
10
+ :payment_method, :account_number, :invoice, :amount, :currency_id
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,43 @@
1
+ module AuthorizeNet::ARB
2
+
3
+ class SubscriptionListResponse < AuthorizeNet::XmlResponse
4
+ # Constructs a new response object from a +raw_response. You don't typically
5
+ # construct this object yourself, as AuthorizeNet::ARB::Transaction will
6
+ # build one for you when it makes the request to the gateway.
7
+ def initialize(raw_response, transaction)
8
+ super
9
+ unless connection_failure?
10
+ begin
11
+ @subscription_details = @root.at_css('subscriptionDetails')
12
+ @subscription_detail = @root.at_css('subscriptionDetail')
13
+ @total_num_in_resultset = node_content_unless_nil(@root.at_css('totalNumInResultSet'))
14
+
15
+ rescue
16
+ @raw_response = $!
17
+ end
18
+ end
19
+ end
20
+
21
+ # Returns total number of subscriptions matching the search criteria
22
+ def total_num_in_resultset
23
+ @total_num_in_resultset
24
+ end
25
+
26
+ # Returns an Array of SubscriptionDetail objects built from the entities returned in the response. Returns nil if no subscriptions were returned.
27
+ def subscription_details
28
+ unless @subscription_details.nil?
29
+ subscription_details = []
30
+ @subscription_details.element_children.each do |child|
31
+ unless child.nil?
32
+ subscription_detail = build_entity(child, Fields::SUBSCRIPTION_DETAIL_ENTITY_DESCRIPTION)
33
+
34
+ subscription_details <<= subscription_detail
35
+ end
36
+ end
37
+ return subscription_details unless subscription_details.length == 0
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ end