braintree 2.83.0 → 2.84.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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/address.rb +12 -12
  3. data/lib/braintree/address/country_names.rb +4 -1
  4. data/lib/braintree/address_gateway.rb +10 -0
  5. data/lib/braintree/client_token.rb +2 -2
  6. data/lib/braintree/client_token_gateway.rb +2 -0
  7. data/lib/braintree/credit_card.rb +20 -20
  8. data/lib/braintree/credit_card_gateway.rb +18 -0
  9. data/lib/braintree/credit_card_verification.rb +2 -2
  10. data/lib/braintree/customer.rb +18 -18
  11. data/lib/braintree/customer_gateway.rb +14 -2
  12. data/lib/braintree/dispute.rb +12 -12
  13. data/lib/braintree/dispute/history_event.rb +2 -0
  14. data/lib/braintree/dispute_search.rb +3 -0
  15. data/lib/braintree/document_upload.rb +6 -2
  16. data/lib/braintree/document_upload_gateway.rb +6 -0
  17. data/lib/braintree/ideal_payment.rb +3 -3
  18. data/lib/braintree/ideal_payment_gateway.rb +0 -1
  19. data/lib/braintree/merchant_account.rb +14 -6
  20. data/lib/braintree/merchant_account_gateway.rb +10 -0
  21. data/lib/braintree/payment_method.rb +20 -12
  22. data/lib/braintree/payment_method_gateway.rb +10 -0
  23. data/lib/braintree/payment_method_nonce.rb +8 -4
  24. data/lib/braintree/payment_method_nonce_gateway.rb +6 -0
  25. data/lib/braintree/settlement_batch_summary_gateway.rb +2 -0
  26. data/lib/braintree/subscription.rb +18 -14
  27. data/lib/braintree/subscription_gateway.rb +18 -0
  28. data/lib/braintree/transaction.rb +54 -54
  29. data/lib/braintree/transaction_gateway.rb +44 -1
  30. data/lib/braintree/transparent_redirect.rb +12 -12
  31. data/lib/braintree/us_bank_account.rb +5 -5
  32. data/lib/braintree/us_bank_account_gateway.rb +0 -1
  33. data/lib/braintree/version.rb +1 -1
  34. data/lib/braintree/webhook_notification.rb +4 -4
  35. data/lib/braintree/webhook_testing.rb +2 -2
  36. data/spec/httpsd.pid +1 -0
  37. data/spec/integration/braintree/client_api/spec_helper.rb +0 -15
  38. data/spec/integration/braintree/customer_spec.rb +73 -0
  39. data/spec/integration/braintree/dispute_search_spec.rb +69 -0
  40. data/spec/integration/braintree/document_upload_spec.rb +13 -0
  41. data/spec/integration/braintree/merchant_account_spec.rb +22 -0
  42. data/spec/integration/braintree/payment_method_nonce_spec.rb +29 -0
  43. data/spec/integration/braintree/payment_method_spec.rb +63 -93
  44. data/spec/integration/braintree/subscription_spec.rb +13 -0
  45. data/spec/integration/braintree/transaction_search_spec.rb +0 -41
  46. data/spec/integration/braintree/transaction_spec.rb +12 -1
  47. data/spec/unit/braintree/dispute_search_spec.rb +3 -0
  48. data/spec/unit/braintree/transaction_spec.rb +0 -1
  49. metadata +4 -3
@@ -2,6 +2,7 @@ module Braintree
2
2
  class DisputeSearch < AdvancedSearch # :nodoc:
3
3
  text_fields(
4
4
  :case_number,
5
+ :customer_id,
5
6
  :id,
6
7
  :reference_number,
7
8
  :transaction_id
@@ -23,6 +24,8 @@ module Braintree
23
24
  range_fields(
24
25
  :amount_disputed,
25
26
  :amount_won,
27
+ :disbursement_date,
28
+ :effective_date,
26
29
  :received_date,
27
30
  :reply_by_date
28
31
  )
@@ -15,8 +15,12 @@ module Braintree
15
15
  attr_reader :name
16
16
  attr_reader :size
17
17
 
18
- def self.create(attributes)
19
- Configuration.gateway.document_upload.create(attributes)
18
+ def self.create(*args)
19
+ Configuration.gateway.document_upload.create(*args)
20
+ end
21
+
22
+ def self.create!(*args)
23
+ Configuration.gateway.document_upload.create!(*args)
20
24
  end
21
25
 
22
26
  def initialize(attributes) # :nodoc:
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class DocumentUploadGateway # :nodoc:
3
+ include BaseModule
4
+
3
5
  def initialize(gateway)
4
6
  @gateway = gateway
5
7
  @config = gateway.config
@@ -11,6 +13,10 @@ module Braintree
11
13
  _do_create "/document_uploads", {"document_upload[kind]" => attributes[:kind]}, attributes[:file]
12
14
  end
13
15
 
16
+ def create!(*args)
17
+ return_object_or_raise(:document_upload) { create(*args) }
18
+ end
19
+
14
20
  def self._create_signature # :nodoc:
15
21
  [
16
22
  :kind,
@@ -28,10 +28,10 @@ module Braintree
28
28
 
29
29
  def self.sale(ideal_payment_id, transaction_attributes)
30
30
  Configuration.gateway.transaction.sale(transaction_attributes.merge(
31
- :payment_method_nonce => ideal_payment_id,
32
- :options => { :submit_for_settlement => true }
33
- )
31
+ :payment_method_nonce => ideal_payment_id,
32
+ :options => { :submit_for_settlement => true }
34
33
  )
34
+ )
35
35
  end
36
36
 
37
37
  def self.sale!(ideal_payment_id, transaction_attributes)
@@ -13,6 +13,5 @@ module Braintree
13
13
  rescue NotFoundError
14
14
  raise NotFoundError, "ideal payment with ideal_payment_id #{ideal_payment_id.inspect} not found"
15
15
  end
16
-
17
16
  end
18
17
  end
@@ -29,16 +29,24 @@ module Braintree
29
29
 
30
30
  alias_method :default?, :default
31
31
 
32
- def self.create(attributes)
33
- Configuration.gateway.merchant_account.create(attributes)
32
+ def self.create(*args)
33
+ Configuration.gateway.merchant_account.create(*args)
34
34
  end
35
35
 
36
- def self.find(attributes)
37
- Configuration.gateway.merchant_account.find(attributes)
36
+ def self.create!(*args)
37
+ Configuration.gateway.merchant_account.create!(*args)
38
38
  end
39
39
 
40
- def self.update(id, attributes)
41
- Configuration.gateway.merchant_account.update(id, attributes)
40
+ def self.find(*args)
41
+ Configuration.gateway.merchant_account.find(*args)
42
+ end
43
+
44
+ def self.update(*args)
45
+ Configuration.gateway.merchant_account.update(*args)
46
+ end
47
+
48
+ def self.update!(*args)
49
+ Configuration.gateway.merchant_account.update!(*args)
42
50
  end
43
51
 
44
52
  def initialize(gateway, attributes) # :nodoc
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class MerchantAccountGateway # :nodoc:
3
+ include BaseModule
4
+
3
5
  def initialize(gateway)
4
6
  @gateway = gateway
5
7
  @config = gateway.config
@@ -24,6 +26,10 @@ module Braintree
24
26
  _do_create "/merchant_accounts/create_via_api", :merchant_account => attributes
25
27
  end
26
28
 
29
+ def create!(*args)
30
+ return_object_or_raise(:merchant_account) { create(*args) }
31
+ end
32
+
27
33
  def find(merchant_account_id)
28
34
  raise ArgumentError if merchant_account_id.nil? || merchant_account_id.to_s.strip == ""
29
35
  response = @config.http.get("#{@config.base_merchant_path}/merchant_accounts/#{merchant_account_id}")
@@ -37,6 +43,10 @@ module Braintree
37
43
  _do_update "/merchant_accounts/#{merchant_account_id}/update_via_api", :merchant_account => attributes
38
44
  end
39
45
 
46
+ def update!(*args)
47
+ return_object_or_raise(:merchant_account) { update(*args) }
48
+ end
49
+
40
50
  def create_for_currency(params)
41
51
  _create_for_currency(params)
42
52
  end
@@ -2,28 +2,36 @@ module Braintree
2
2
  class PaymentMethod
3
3
  include BaseModule
4
4
 
5
- def self.create(attributes)
6
- Configuration.gateway.payment_method.create(attributes)
5
+ def self.create(*args)
6
+ Configuration.gateway.payment_method.create(*args)
7
7
  end
8
8
 
9
- def self.find(token)
10
- Configuration.gateway.payment_method.find(token)
9
+ def self.create!(*args)
10
+ Configuration.gateway.payment_method.create!(*args)
11
11
  end
12
12
 
13
- def self.update(token, attributes)
14
- Configuration.gateway.payment_method.update(token, attributes)
13
+ def self.find(*args)
14
+ Configuration.gateway.payment_method.find(*args)
15
15
  end
16
16
 
17
- def self.delete(token, options = {})
18
- Configuration.gateway.payment_method.delete(token, options)
17
+ def self.update(*args)
18
+ Configuration.gateway.payment_method.update(*args)
19
19
  end
20
20
 
21
- def self.grant(token, options = {})
22
- Configuration.gateway.payment_method.grant(token, options)
21
+ def self.update!(*args)
22
+ Configuration.gateway.payment_method.update!(*args)
23
23
  end
24
24
 
25
- def self.revoke(token)
26
- Configuration.gateway.payment_method.revoke(token)
25
+ def self.delete(*args)
26
+ Configuration.gateway.payment_method.delete(*args)
27
+ end
28
+
29
+ def self.grant(*args)
30
+ Configuration.gateway.payment_method.grant(*args)
31
+ end
32
+
33
+ def self.revoke(*args)
34
+ Configuration.gateway.payment_method.revoke(*args)
27
35
  end
28
36
  end
29
37
  end
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class PaymentMethodGateway # :nodoc:
3
+ include BaseModule
4
+
3
5
  def initialize(gateway)
4
6
  @gateway = gateway
5
7
  @config = gateway.config
@@ -11,6 +13,10 @@ module Braintree
11
13
  _do_create("/payment_methods", :payment_method => attributes)
12
14
  end
13
15
 
16
+ def create!(*args)
17
+ return_object_or_raise(:payment_method) { create(*args) }
18
+ end
19
+
14
20
  def _do_create(path, params=nil) # :nodoc:
15
21
  response = @config.http.post("#{@config.base_merchant_path}#{path}", params)
16
22
  if response[:credit_card]
@@ -86,6 +92,10 @@ module Braintree
86
92
  _do_update(:put, "/payment_methods/any/#{token}", :payment_method => attributes)
87
93
  end
88
94
 
95
+ def update!(*args)
96
+ return_object_or_raise(:payment_method) { update(*args) }
97
+ end
98
+
89
99
  def grant(token, options = {})
90
100
  raise ArgumentError if token.nil? || token.to_s.strip == ""
91
101
  if options.class == Hash
@@ -2,12 +2,16 @@ module Braintree
2
2
  class PaymentMethodNonce
3
3
  include BaseModule # :nodoc:
4
4
 
5
- def self.create(payment_method_token)
6
- Configuration.gateway.payment_method_nonce.create(payment_method_token)
5
+ def self.create(*args)
6
+ Configuration.gateway.payment_method_nonce.create(*args)
7
7
  end
8
8
 
9
- def self.find(payment_method_nonce)
10
- Configuration.gateway.payment_method_nonce.find(payment_method_nonce)
9
+ def self.create!(*args)
10
+ Configuration.gateway.payment_method_nonce.create!(*args)
11
+ end
12
+
13
+ def self.find(*args)
14
+ Configuration.gateway.payment_method_nonce.find(*args)
11
15
  end
12
16
 
13
17
  attr_reader :bin_data
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class PaymentMethodNonceGateway # :nodoc:
3
+ include BaseModule
4
+
3
5
  def initialize(gateway)
4
6
  @gateway = gateway
5
7
  @config = gateway.config
@@ -12,6 +14,10 @@ module Braintree
12
14
  SuccessfulResult.new(:payment_method_nonce => payment_method_nonce)
13
15
  end
14
16
 
17
+ def create!(*args)
18
+ return_object_or_raise(:payment_method_nonce) { create(*args) }
19
+ end
20
+
15
21
  def find(payment_method_nonce)
16
22
  response = @config.http.get("#{@config.base_merchant_path}/payment_method_nonces/#{payment_method_nonce}")
17
23
  payment_method_nonce = PaymentMethodNonce._new(@gateway, response.fetch(:payment_method_nonce))
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class SettlementBatchSummaryGateway # :nodoc
3
+ include BaseModule
4
+
3
5
  def initialize(gateway)
4
6
  @gateway = gateway
5
7
  @config = gateway.config
@@ -55,36 +55,40 @@ module Braintree
55
55
  attr_reader :trial_period
56
56
  attr_reader :updated_at
57
57
 
58
- def self.cancel(subscription_id)
59
- Configuration.gateway.subscription.cancel(subscription_id)
58
+ def self.cancel(*args)
59
+ Configuration.gateway.subscription.cancel(*args)
60
60
  end
61
61
 
62
- def self.create(attributes)
63
- Configuration.gateway.subscription.create(attributes)
62
+ def self.cancel!(*args)
63
+ Configuration.gateway.subscription.cancel!(*args)
64
64
  end
65
65
 
66
- def self.create!(attributes)
67
- return_object_or_raise(:subscription) { create(attributes) }
66
+ def self.create(*args)
67
+ Configuration.gateway.subscription.create(*args)
68
68
  end
69
69
 
70
- def self.find(id)
71
- Configuration.gateway.subscription.find(id)
70
+ def self.create!(*args)
71
+ Configuration.gateway.subscription.create!(*args)
72
72
  end
73
73
 
74
- def self.retry_charge(subscription_id, amount=nil, submit_for_settlement=false)
75
- Configuration.gateway.transaction.retry_subscription_charge(subscription_id, amount, submit_for_settlement)
74
+ def self.find(*args)
75
+ Configuration.gateway.subscription.find(*args)
76
+ end
77
+
78
+ def self.retry_charge(*args)
79
+ Configuration.gateway.subscription.retry_charge(*args)
76
80
  end
77
81
 
78
82
  def self.search(&block)
79
83
  Configuration.gateway.subscription.search(&block)
80
84
  end
81
85
 
82
- def self.update(subscription_id, attributes)
83
- Configuration.gateway.subscription.update(subscription_id, attributes)
86
+ def self.update(*args)
87
+ Configuration.gateway.subscription.update(*args)
84
88
  end
85
89
 
86
- def self.update!(subscription_id, attributes)
87
- return_object_or_raise(:subscription) { update(subscription_id, attributes) }
90
+ def self.update!(*args)
91
+ Configuration.gateway.subscription.update!(*args)
88
92
  end
89
93
 
90
94
  def initialize(gateway, attributes) # :nodoc:
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class SubscriptionGateway # :nodoc:
3
+ include BaseModule
4
+
3
5
  def initialize(gateway)
4
6
  @gateway = gateway
5
7
  @config = gateway.config
@@ -19,11 +21,19 @@ module Braintree
19
21
  raise NotFoundError, "subscription with id #{subscription_id.inspect} not found"
20
22
  end
21
23
 
24
+ def cancel!(*args)
25
+ return_object_or_raise(:subscription) { cancel(*args) }
26
+ end
27
+
22
28
  def create(attributes)
23
29
  Util.verify_keys(SubscriptionGateway._create_signature, attributes)
24
30
  _do_create "/subscriptions", :subscription => attributes
25
31
  end
26
32
 
33
+ def create!(*args)
34
+ return_object_or_raise(:subscription) { create(*args) }
35
+ end
36
+
27
37
  def find(id)
28
38
  raise ArgumentError if id.nil? || id.to_s.strip == ""
29
39
  response = @config.http.get("#{@config.base_merchant_path}/subscriptions/#{id}")
@@ -32,6 +42,10 @@ module Braintree
32
42
  raise NotFoundError, "subscription with id #{id.inspect} not found"
33
43
  end
34
44
 
45
+ def retry_charge(subscription_id, amount=nil, submit_for_settlement=false)
46
+ @gateway.transaction.retry_subscription_charge(subscription_id, amount, submit_for_settlement)
47
+ end
48
+
35
49
  def search(&block)
36
50
  search = SubscriptionSearch.new
37
51
  block.call(search) if block
@@ -52,6 +66,10 @@ module Braintree
52
66
  end
53
67
  end
54
68
 
69
+ def update!(*args)
70
+ return_object_or_raise(:subscription) { update(*args) }
71
+ end
72
+
55
73
  def self._create_signature # :nodoc:
56
74
  [
57
75
  :billing_day_of_month,
@@ -136,34 +136,34 @@ module Braintree
136
136
  attr_reader :visa_checkout_card_details
137
137
  attr_reader :voice_referral_number
138
138
 
139
- def self.create(attributes)
140
- Configuration.gateway.transaction.create(attributes)
139
+ def self.create(*args)
140
+ Configuration.gateway.transaction.create(*args)
141
141
  end
142
142
 
143
- def self.create!(attributes)
144
- return_object_or_raise(:transaction) { create(attributes) }
143
+ def self.create!(*args)
144
+ return_object_or_raise(:transaction) { create(*args) }
145
145
  end
146
146
 
147
- def self.cancel_release(transaction_id)
148
- Configuration.gateway.transaction.cancel_release(transaction_id)
147
+ def self.cancel_release(*args)
148
+ Configuration.gateway.transaction.cancel_release(*args)
149
149
  end
150
150
 
151
- def self.cancel_release!(transaction_id)
152
- return_object_or_raise(:transaction) { cancel_release(transaction_id) }
151
+ def self.cancel_release!(*args)
152
+ Configuration.gateway.transaction.cancel_release!(*args)
153
153
  end
154
154
 
155
- def self.clone_transaction(transaction_id, attributes)
156
- Configuration.gateway.transaction.clone_transaction(transaction_id, attributes)
155
+ def self.clone_transaction(*args)
156
+ Configuration.gateway.transaction.clone_transaction(*args)
157
157
  end
158
158
 
159
- def self.clone_transaction!(transaction_id, attributes)
160
- return_object_or_raise(:transaction) { clone_transaction(transaction_id, attributes) }
159
+ def self.clone_transaction!(*args)
160
+ Configuration.gateway.transaction.clone_transaction!(*args)
161
161
  end
162
162
 
163
163
  # Deprecated. Use Braintree::TransparentRedirect.confirm
164
- def self.create_from_transparent_redirect(query_string)
164
+ def self.create_from_transparent_redirect(*args)
165
165
  warn "[DEPRECATED] Transaction.create_from_transparent_redirect is deprecated. Please use TransparentRedirect.confirm"
166
- Configuration.gateway.transaction.create_from_transparent_redirect(query_string)
166
+ Configuration.gateway.transaction.create_from_transparent_redirect(*args)
167
167
  end
168
168
 
169
169
  # Deprecated. Use Braintree::TransparentRedirect.url
@@ -172,88 +172,88 @@ module Braintree
172
172
  Configuration.gateway.transaction.create_transaction_url
173
173
  end
174
174
 
175
- def self.credit(attributes)
176
- Configuration.gateway.transaction.credit(attributes)
175
+ def self.credit(*args)
176
+ Configuration.gateway.transaction.credit(*args)
177
177
  end
178
178
 
179
- def self.credit!(attributes)
180
- return_object_or_raise(:transaction) { credit(attributes) }
179
+ def self.credit!(*args)
180
+ Configuration.gateway.transaction.credit!(*args)
181
181
  end
182
182
 
183
- def self.find(id)
184
- Configuration.gateway.transaction.find(id)
183
+ def self.find(*args)
184
+ Configuration.gateway.transaction.find(*args)
185
185
  end
186
186
 
187
- def self.line_items(id)
188
- Configuration.gateway.transaction_line_item.find_all(id)
187
+ def self.line_items(*args)
188
+ Configuration.gateway.transaction_line_item.find_all(*args)
189
189
  end
190
190
 
191
- def self.hold_in_escrow(id)
192
- Configuration.gateway.transaction.hold_in_escrow(id)
191
+ def self.hold_in_escrow(*args)
192
+ Configuration.gateway.transaction.hold_in_escrow(*args)
193
193
  end
194
194
 
195
- def self.hold_in_escrow!(id)
196
- return_object_or_raise(:transaction) { hold_in_escrow(id) }
195
+ def self.hold_in_escrow!(*args)
196
+ Configuration.gateway.transaction.hold_in_escrow!(*args)
197
197
  end
198
198
 
199
- def self.refund(id, amount_or_options = nil)
200
- Configuration.gateway.transaction.refund(id, amount_or_options)
199
+ def self.refund(*args)
200
+ Configuration.gateway.transaction.refund(*args)
201
201
  end
202
202
 
203
- def self.refund!(id, amount_or_options = nil)
204
- return_object_or_raise(:transaction) { refund(id, amount_or_options) }
203
+ def self.refund!(*args)
204
+ Configuration.gateway.transaction.refund!(*args)
205
205
  end
206
206
 
207
- def self.sale(attributes)
208
- Configuration.gateway.transaction.sale(attributes)
207
+ def self.sale(*args)
208
+ Configuration.gateway.transaction.sale(*args)
209
209
  end
210
210
 
211
- def self.sale!(attributes)
212
- return_object_or_raise(:transaction) { sale(attributes) }
211
+ def self.sale!(*args)
212
+ Configuration.gateway.transaction.sale!(*args)
213
213
  end
214
214
 
215
215
  def self.search(&block)
216
216
  Configuration.gateway.transaction.search(&block)
217
217
  end
218
218
 
219
- def self.release_from_escrow(transaction_id)
220
- Configuration.gateway.transaction.release_from_escrow(transaction_id)
219
+ def self.release_from_escrow(*args)
220
+ Configuration.gateway.transaction.release_from_escrow(*args)
221
221
  end
222
222
 
223
- def self.release_from_escrow!(transaction_id)
224
- return_object_or_raise(:transaction) { release_from_escrow(transaction_id) }
223
+ def self.release_from_escrow!(*args)
224
+ Configuration.gateway.transaction.release_from_escrow!(*args)
225
225
  end
226
226
 
227
- def self.submit_for_settlement(transaction_id, amount = nil, options = {})
228
- Configuration.gateway.transaction.submit_for_settlement(transaction_id, amount, options)
227
+ def self.submit_for_settlement(*args)
228
+ Configuration.gateway.transaction.submit_for_settlement(*args)
229
229
  end
230
230
 
231
- def self.submit_for_settlement!(transaction_id, amount = nil, options = {})
232
- return_object_or_raise(:transaction) { submit_for_settlement(transaction_id, amount, options) }
231
+ def self.submit_for_settlement!(*args)
232
+ Configuration.gateway.transaction.submit_for_settlement!(*args)
233
233
  end
234
234
 
235
- def self.update_details(transaction_id, options = {})
236
- Configuration.gateway.transaction.update_details(transaction_id, options)
235
+ def self.update_details(*args)
236
+ Configuration.gateway.transaction.update_details(*args)
237
237
  end
238
238
 
239
- def self.update_details!(transaction_id, options = {})
240
- return_object_or_raise(:transaction) { update_details(transaction_id, options) }
239
+ def self.update_details!(*args)
240
+ return_object_or_raise(:transaction) { update_details(*args) }
241
241
  end
242
242
 
243
- def self.submit_for_partial_settlement(authorized_transaction_id, amount = nil, options = {})
244
- Configuration.gateway.transaction.submit_for_partial_settlement(authorized_transaction_id, amount, options)
243
+ def self.submit_for_partial_settlement(*args)
244
+ Configuration.gateway.transaction.submit_for_partial_settlement(*args)
245
245
  end
246
246
 
247
- def self.submit_for_partial_settlement!(authorized_transaction_id, amount = nil, options = {})
248
- return_object_or_raise(:transaction) { submit_for_partial_settlement(authorized_transaction_id, amount, options) }
247
+ def self.submit_for_partial_settlement!(*args)
248
+ Configuration.gateway.transaction.submit_for_partial_settlement!(*args)
249
249
  end
250
250
 
251
- def self.void(transaction_id)
252
- Configuration.gateway.transaction.void(transaction_id)
251
+ def self.void(*args)
252
+ Configuration.gateway.transaction.void(*args)
253
253
  end
254
254
 
255
- def self.void!(transaction_id)
256
- return_object_or_raise(:transaction) { void(transaction_id) }
255
+ def self.void!(*args)
256
+ Configuration.gateway.transaction.void!(*args)
257
257
  end
258
258
 
259
259
  def initialize(gateway, attributes) # :nodoc: