braintree 2.83.0 → 2.84.0

Sign up to get free protection for your applications and to get access to all the features.
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: