braintree 3.1.0 → 4.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.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/braintree.gemspec +3 -3
  3. data/lib/braintree.rb +8 -1
  4. data/lib/braintree/account_updater_daily_report.rb +1 -1
  5. data/lib/braintree/address.rb +2 -1
  6. data/lib/braintree/apple_pay.rb +1 -1
  7. data/lib/braintree/apple_pay_card.rb +1 -1
  8. data/lib/braintree/apple_pay_options.rb +1 -1
  9. data/lib/braintree/authorization_adjustment.rb +1 -1
  10. data/lib/braintree/client_token.rb +1 -1
  11. data/lib/braintree/configuration.rb +11 -11
  12. data/lib/braintree/connected_merchant_paypal_status_changed.rb +1 -1
  13. data/lib/braintree/connected_merchant_status_transitioned.rb +1 -1
  14. data/lib/braintree/credit_card.rb +2 -2
  15. data/lib/braintree/credit_card_gateway.rb +14 -4
  16. data/lib/braintree/credit_card_verification.rb +5 -5
  17. data/lib/braintree/credit_card_verification_search.rb +1 -1
  18. data/lib/braintree/customer.rb +6 -4
  19. data/lib/braintree/customer_gateway.rb +2 -0
  20. data/lib/braintree/customer_search.rb +1 -1
  21. data/lib/braintree/disbursement.rb +1 -1
  22. data/lib/braintree/dispute.rb +15 -1
  23. data/lib/braintree/dispute/paypal_message.rb +15 -0
  24. data/lib/braintree/dispute_gateway.rb +2 -2
  25. data/lib/braintree/dispute_search.rb +3 -2
  26. data/lib/braintree/document_upload.rb +1 -1
  27. data/lib/braintree/error_codes.rb +12 -4
  28. data/lib/braintree/google_pay_card.rb +1 -1
  29. data/lib/braintree/granted_payment_instrument_update.rb +1 -1
  30. data/lib/braintree/graphql_client.rb +7 -7
  31. data/lib/braintree/http.rb +3 -3
  32. data/lib/braintree/local_payment_completed.rb +1 -1
  33. data/lib/braintree/local_payment_reversed.rb +19 -0
  34. data/lib/braintree/merchant.rb +1 -1
  35. data/lib/braintree/merchant_account.rb +1 -1
  36. data/lib/braintree/merchant_account_gateway.rb +1 -1
  37. data/lib/braintree/merchant_gateway.rb +1 -1
  38. data/lib/braintree/modification.rb +1 -1
  39. data/lib/braintree/oauth_credentials.rb +1 -1
  40. data/lib/braintree/oauth_gateway.rb +5 -5
  41. data/lib/braintree/payment_instrument_type.rb +10 -10
  42. data/lib/braintree/payment_method_gateway.rb +11 -8
  43. data/lib/braintree/payment_method_nonce.rb +1 -1
  44. data/lib/braintree/payment_method_nonce_details.rb +37 -0
  45. data/lib/braintree/payment_method_nonce_details_payer_info.rb +32 -0
  46. data/lib/braintree/payment_method_nonce_gateway.rb +1 -1
  47. data/lib/braintree/plan.rb +1 -1
  48. data/lib/braintree/processor_response_types.rb +3 -3
  49. data/lib/braintree/resource_collection.rb +8 -3
  50. data/lib/braintree/revoked_payment_method_metadata.rb +1 -1
  51. data/lib/braintree/risk_data.rb +3 -1
  52. data/lib/braintree/samsung_pay_card.rb +1 -1
  53. data/lib/braintree/settlement_batch_summary.rb +2 -2
  54. data/lib/braintree/subscription.rb +6 -6
  55. data/lib/braintree/test/credit_card.rb +1 -0
  56. data/lib/braintree/three_d_secure_info.rb +22 -12
  57. data/lib/braintree/transaction.rb +40 -24
  58. data/lib/braintree/transaction/installment.rb +28 -0
  59. data/lib/braintree/transaction/installment/adjustment.rb +33 -0
  60. data/lib/braintree/transaction_gateway.rb +27 -6
  61. data/lib/braintree/transaction_line_item.rb +1 -1
  62. data/lib/braintree/transaction_search.rb +3 -1
  63. data/lib/braintree/unknown_payment_method.rb +1 -1
  64. data/lib/braintree/us_bank_account.rb +3 -3
  65. data/lib/braintree/us_bank_account_verification.rb +1 -1
  66. data/lib/braintree/us_bank_account_verification_gateway.rb +1 -1
  67. data/lib/braintree/util.rb +4 -4
  68. data/lib/braintree/venmo_account.rb +1 -1
  69. data/lib/braintree/version.rb +1 -1
  70. data/lib/braintree/visa_checkout_card.rb +2 -2
  71. data/lib/braintree/webhook_notification.rb +30 -20
  72. data/lib/braintree/webhook_notification_gateway.rb +5 -5
  73. data/lib/braintree/webhook_testing_gateway.rb +30 -0
  74. data/lib/braintree/xml/generator.rb +5 -4
  75. data/lib/braintree/xml/libxml.rb +0 -1
  76. data/lib/braintree/xml/parser.rb +22 -12
  77. data/lib/braintree/xml/rexml.rb +70 -0
  78. data/spec/integration/braintree/add_on_spec.rb +1 -1
  79. data/spec/integration/braintree/address_spec.rb +28 -24
  80. data/spec/integration/braintree/advanced_search_spec.rb +45 -45
  81. data/spec/integration/braintree/apple_pay_spec.rb +3 -3
  82. data/spec/integration/braintree/braintree_gateway_spec.rb +2 -1
  83. data/spec/integration/braintree/client_api/client_token_spec.rb +14 -14
  84. data/spec/integration/braintree/client_api/spec_helper.rb +5 -5
  85. data/spec/integration/braintree/credit_card_spec.rb +213 -122
  86. data/spec/integration/braintree/credit_card_verification_search_spec.rb +2 -2
  87. data/spec/integration/braintree/credit_card_verification_spec.rb +1 -1
  88. data/spec/integration/braintree/customer_search_spec.rb +8 -8
  89. data/spec/integration/braintree/customer_spec.rb +433 -149
  90. data/spec/integration/braintree/dispute_search_spec.rb +28 -3
  91. data/spec/integration/braintree/dispute_spec.rb +6 -6
  92. data/spec/integration/braintree/error_codes_spec.rb +1 -1
  93. data/spec/integration/braintree/http_spec.rb +2 -2
  94. data/spec/integration/braintree/merchant_account_spec.rb +25 -26
  95. data/spec/integration/braintree/merchant_spec.rb +14 -14
  96. data/spec/integration/braintree/oauth_spec.rb +11 -11
  97. data/spec/integration/braintree/payment_method_nonce_spec.rb +26 -35
  98. data/spec/integration/braintree/payment_method_spec.rb +430 -149
  99. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +17 -13
  100. data/spec/integration/braintree/paypal_account_spec.rb +28 -28
  101. data/spec/integration/braintree/samsung_pay_card_spec.rb +9 -9
  102. data/spec/integration/braintree/settlement_batch_summary_spec.rb +8 -8
  103. data/spec/integration/braintree/subscription_spec.rb +133 -133
  104. data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
  105. data/spec/integration/braintree/test_transaction_spec.rb +10 -10
  106. data/spec/integration/braintree/transaction_search_spec.rb +93 -67
  107. data/spec/integration/braintree/transaction_spec.rb +752 -383
  108. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -26
  109. data/spec/integration/braintree/us_bank_account_spec.rb +6 -6
  110. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +7 -7
  111. data/spec/integration/braintree/us_bank_account_verification_spec.rb +8 -8
  112. data/spec/integration/braintree/visa_checkout_card_spec.rb +5 -5
  113. data/spec/integration/spec_helper.rb +9 -3
  114. data/spec/oauth_test_helper.rb +1 -1
  115. data/spec/script/httpsd.rb +6 -6
  116. data/spec/spec_helper.rb +6 -3
  117. data/spec/unit/braintree/address_spec.rb +1 -1
  118. data/spec/unit/braintree/apple_pay_card_spec.rb +1 -1
  119. data/spec/unit/braintree/client_token_spec.rb +2 -2
  120. data/spec/unit/braintree/configuration_spec.rb +42 -42
  121. data/spec/unit/braintree/credit_card_spec.rb +13 -13
  122. data/spec/unit/braintree/credit_card_verification_search_spec.rb +1 -1
  123. data/spec/unit/braintree/credit_card_verification_spec.rb +8 -4
  124. data/spec/unit/braintree/customer_spec.rb +21 -10
  125. data/spec/unit/braintree/disbursement_spec.rb +7 -7
  126. data/spec/unit/braintree/dispute_search_spec.rb +1 -0
  127. data/spec/unit/braintree/dispute_spec.rb +34 -9
  128. data/spec/unit/braintree/error_result_spec.rb +5 -5
  129. data/spec/unit/braintree/errors_spec.rb +8 -8
  130. data/spec/unit/braintree/http_spec.rb +5 -5
  131. data/spec/unit/braintree/merchant_account_spec.rb +1 -1
  132. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +31 -0
  133. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +43 -0
  134. data/spec/unit/braintree/payment_method_spec.rb +1 -1
  135. data/spec/unit/braintree/paypal_account_spec.rb +2 -2
  136. data/spec/unit/braintree/resource_collection_spec.rb +30 -1
  137. data/spec/unit/braintree/risk_data_spec.rb +9 -5
  138. data/spec/unit/braintree/subscription_search_spec.rb +1 -1
  139. data/spec/unit/braintree/successful_result_spec.rb +1 -1
  140. data/spec/unit/braintree/three_d_secure_info_spec.rb +32 -14
  141. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +3 -3
  142. data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
  143. data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
  144. data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
  145. data/spec/unit/braintree/transaction/paypal_details_spec.rb +1 -1
  146. data/spec/unit/braintree/transaction_search_spec.rb +12 -12
  147. data/spec/unit/braintree/transaction_spec.rb +25 -17
  148. data/spec/unit/braintree/util_spec.rb +18 -18
  149. data/spec/unit/braintree/validation_error_collection_spec.rb +36 -36
  150. data/spec/unit/braintree/webhook_notification_spec.rb +88 -56
  151. data/spec/unit/braintree/xml/rexml_spec.rb +51 -0
  152. data/spec/unit/braintree/xml_spec.rb +31 -31
  153. metadata +18 -8
  154. data/lib/braintree/settlement_batch.rb +0 -0
@@ -24,7 +24,7 @@ describe Braintree::Transaction do
24
24
  :country_code_alpha2 => "BT",
25
25
  :country_code_alpha3 => "BTN",
26
26
  :country_code_numeric => "064"
27
- }
27
+ },
28
28
  )
29
29
  result.success?.should == true
30
30
 
@@ -34,7 +34,7 @@ describe Braintree::Transaction do
34
34
  :channel => "MyShoppingCartProvider",
35
35
  :options => {
36
36
  :submit_for_settlement => false
37
- }
37
+ },
38
38
  )
39
39
  clone_result.success?.should == true
40
40
 
@@ -67,7 +67,7 @@ describe Braintree::Transaction do
67
67
  :credit_card => {
68
68
  :number => "5105105105105100",
69
69
  :expiration_date => "05/2012"
70
- }
70
+ },
71
71
  )
72
72
 
73
73
  result.success?.should be(true)
@@ -84,7 +84,7 @@ describe Braintree::Transaction do
84
84
  :credit_card => {
85
85
  :number => Braintree::Test::CreditCardNumbers::Visa,
86
86
  :expiration_date => "05/2009"
87
- }
87
+ },
88
88
  )
89
89
  result = Braintree::Transaction.clone_transaction(transaction.id, :amount => "112.44")
90
90
  result.success?.should be(false)
@@ -100,7 +100,7 @@ describe Braintree::Transaction do
100
100
  :credit_card => {
101
101
  :number => Braintree::Test::CreditCardNumbers::Visa,
102
102
  :expiration_date => "05/2009"
103
- }
103
+ },
104
104
  )
105
105
  clone_transaction = Braintree::Transaction.clone_transaction!(transaction.id, :amount => "112.44", :options => {:submit_for_settlement => false})
106
106
  clone_transaction.id.should_not == transaction.id
@@ -112,7 +112,7 @@ describe Braintree::Transaction do
112
112
  :credit_card => {
113
113
  :number => Braintree::Test::CreditCardNumbers::Visa,
114
114
  :expiration_date => "05/2009"
115
- }
115
+ },
116
116
  )
117
117
  expect do
118
118
  clone_transaction = Braintree::Transaction.clone_transaction!(transaction.id, :amount => "im not a number")
@@ -123,26 +123,28 @@ describe Braintree::Transaction do
123
123
 
124
124
  describe "self.create" do
125
125
  describe "risk data" do
126
- it "returns decision, device_data_captured and id" do
127
- with_advanced_fraud_integration_merchant do
126
+ it "returns decision, device_data_captured, id, transaction_risk_score, and decision_reasons" do
127
+ with_fraud_protection_enterprise_merchant do
128
128
  result = Braintree::Transaction.create(
129
129
  :type => "sale",
130
130
  :amount => 1_00,
131
131
  :credit_card => {
132
132
  :number => Braintree::Test::CreditCardNumbers::CardTypeIndicators::Prepaid,
133
133
  :expiration_date => "05/2009"
134
- }
134
+ },
135
135
  )
136
136
  result.transaction.risk_data.should be_a(Braintree::RiskData)
137
- result.transaction.risk_data.should respond_to(:id)
138
- result.transaction.risk_data.should respond_to(:decision)
139
- result.transaction.risk_data.should respond_to(:device_data_captured)
140
- result.transaction.risk_data.should respond_to(:fraud_service_provider)
137
+ result.transaction.risk_data.id.should_not be_nil
138
+ result.transaction.risk_data.decision.should_not be_nil
139
+ result.transaction.risk_data.decision_reasons.should_not be_nil
140
+ expect(result.transaction.risk_data).to respond_to(:device_data_captured)
141
+ expect(result.transaction.risk_data).to respond_to(:fraud_service_provider)
142
+ expect(result.transaction.risk_data).to respond_to(:transaction_risk_score)
141
143
  end
142
144
  end
143
145
 
144
146
  it "handles validation errors for invalid risk data attributes" do
145
- with_advanced_fraud_integration_merchant do
147
+ with_advanced_fraud_kount_integration_merchant do
146
148
  result = Braintree::Transaction.create(
147
149
  :type => "sale",
148
150
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -156,10 +158,9 @@ describe Braintree::Transaction do
156
158
  :customer_ip => "192.168.0.1",
157
159
  :customer_location_zip => "not-a-$#phone",
158
160
  :customer_tenure => "20#{"0" * 500}"
159
- }
161
+ },
160
162
  )
161
163
  result.success?.should == false
162
- result.errors.for(:transaction).for(:risk_data).on(:customer_browser).map { |e| e.code }.should include Braintree::ErrorCodes::RiskData::CustomerBrowserIsTooLong
163
164
  result.errors.for(:transaction).for(:risk_data).on(:customer_device_id).map { |e| e.code }.should include Braintree::ErrorCodes::RiskData::CustomerDeviceIdIsTooLong
164
165
  result.errors.for(:transaction).for(:risk_data).on(:customer_location_zip).map { |e| e.code }.should include Braintree::ErrorCodes::RiskData::CustomerLocationZipInvalidCharacters
165
166
  result.errors.for(:transaction).for(:risk_data).on(:customer_tenure).map { |e| e.code }.should include Braintree::ErrorCodes::RiskData::CustomerTenureIsTooLong
@@ -175,13 +176,49 @@ describe Braintree::Transaction do
175
176
  :credit_card => {
176
177
  :number => Braintree::Test::CreditCardNumbers::CardTypeIndicators::Prepaid,
177
178
  :expiration_date => "05/2009"
178
- }
179
+ },
179
180
  )
180
181
  result.transaction.credit_card_details.prepaid.should == Braintree::CreditCard::Prepaid::Yes
181
182
  result.transaction.payment_instrument_type.should == Braintree::PaymentInstrumentType::CreditCard
182
183
  end
183
184
  end
184
185
 
186
+ describe "sca_exemption" do
187
+ context "with a valid request" do
188
+ it "succeeds" do
189
+ requested_exemption = "low_value"
190
+ result = Braintree::Transaction.create(
191
+ :type => "sale",
192
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
193
+ :credit_card => {
194
+ :number => Braintree::Test::CreditCardNumbers::VisaCountryOfIssuanceIE,
195
+ :expiration_date => "05/2009"
196
+ },
197
+ :sca_exemption => requested_exemption,
198
+ )
199
+ expect(result).to be_success
200
+ expect(result.transaction.sca_exemption_requested).to eq(requested_exemption)
201
+ end
202
+ end
203
+
204
+ context "with an invalid request" do
205
+ it "returns an error" do
206
+ result = Braintree::Transaction.create(
207
+ :type => "sale",
208
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
209
+ :credit_card => {
210
+ :number => Braintree::Test::CreditCardNumbers::Visa,
211
+ :expiration_date => "05/2009"
212
+ },
213
+ :sca_exemption => "invalid_sca_exemption_value",
214
+ )
215
+ sca_exemption_invalid = Braintree::ErrorCodes::Transaction::ScaExemptionInvalid
216
+ expect(result).not_to be_success
217
+ expect(result.errors.for(:transaction).map(&:code)).to eq([sca_exemption_invalid])
218
+ end
219
+ end
220
+ end
221
+
185
222
  describe "industry data" do
186
223
  context "for lodging" do
187
224
  it "accepts valid industry data" do
@@ -215,7 +252,7 @@ describe Braintree::Transaction do
215
252
  },
216
253
  ],
217
254
  }
218
- }
255
+ },
219
256
  )
220
257
  result.success?.should be(true)
221
258
  end
@@ -242,15 +279,15 @@ describe Braintree::Transaction do
242
279
  },
243
280
  ],
244
281
  }
245
- }
282
+ },
246
283
  )
247
284
  result.success?.should be(false)
248
285
  invalid_folio = Braintree::ErrorCodes::Transaction::Industry::Lodging::FolioNumberIsInvalid
249
286
  check_out_date_must_follow_check_in_date = Braintree::ErrorCodes::Transaction::Industry::Lodging::CheckOutDateMustFollowCheckInDate
250
287
  room_rate_format_is_invalid = Braintree::ErrorCodes::Transaction::Industry::Lodging::RoomRateFormatIsInvalid
251
288
  invalid_additional_charge_kind = Braintree::ErrorCodes::Transaction::Industry::AdditionalCharge::KindIsInvalid
252
- result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should include *[invalid_folio, check_out_date_must_follow_check_in_date, room_rate_format_is_invalid]
253
- result.errors.for(:transaction).for(:industry).for(:additional_charges).for(:index_0).on(:kind).map { |e| e.code }.sort.should include *[invalid_additional_charge_kind]
289
+ result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should include(*[invalid_folio, check_out_date_must_follow_check_in_date, room_rate_format_is_invalid])
290
+ result.errors.for(:transaction).for(:industry).for(:additional_charges).for(:index_0).on(:kind).map { |e| e.code }.sort.should include(*[invalid_additional_charge_kind])
254
291
  end
255
292
  end
256
293
 
@@ -272,7 +309,7 @@ describe Braintree::Transaction do
272
309
  :lodging_check_out_date => "2014-07-07",
273
310
  :lodging_name => "Royal Caribbean",
274
311
  }
275
- }
312
+ },
276
313
  )
277
314
  result.success?.should be(true)
278
315
  end
@@ -290,7 +327,7 @@ describe Braintree::Transaction do
290
327
  :data => {
291
328
  :lodging_name => "Royal Caribbean"
292
329
  }
293
- }
330
+ },
294
331
  )
295
332
  result.success?.should be(false)
296
333
  result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should == [Braintree::ErrorCodes::Transaction::Industry::TravelCruise::TravelPackageIsInvalid]
@@ -364,7 +401,7 @@ describe Braintree::Transaction do
364
401
  }
365
402
  ]
366
403
  }
367
- }
404
+ },
368
405
  )
369
406
  result.success?.should be(true)
370
407
  end
@@ -388,7 +425,7 @@ describe Braintree::Transaction do
388
425
  }
389
426
  ]
390
427
  }
391
- }
428
+ },
392
429
  )
393
430
  result.success?.should be(false)
394
431
  result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should == [Braintree::ErrorCodes::Transaction::Industry::TravelFlight::FareAmountCannotBeNegative]
@@ -407,7 +444,7 @@ describe Braintree::Transaction do
407
444
  :number => Braintree::Test::CreditCardNumbers::Elo,
408
445
  :cvv => "737",
409
446
  :expiration_date => "10/2020"
410
- }
447
+ },
411
448
  )
412
449
  result.success?.should == true
413
450
  result.transaction.id.should =~ /^\w{6,}$/
@@ -429,7 +466,7 @@ describe Braintree::Transaction do
429
466
  :credit_card => {
430
467
  :number => Braintree::Test::CreditCardNumbers::Visa,
431
468
  :expiration_date => "05/2009"
432
- }
469
+ },
433
470
  )
434
471
  result.success?.should == true
435
472
  result.transaction.id.should =~ /^\w{6,}$/
@@ -455,7 +492,7 @@ describe Braintree::Transaction do
455
492
  :credit_card => {
456
493
  :number => Braintree::Test::CreditCardNumbers::Visa,
457
494
  :expiration_date => "05/2009"
458
- }
495
+ },
459
496
  )
460
497
  expect(result.success?).to eq(true)
461
498
  expect(result.transaction.type).to eq("sale")
@@ -477,7 +514,7 @@ describe Braintree::Transaction do
477
514
  oauth_gateway = Braintree::Gateway.new(
478
515
  :client_id => "client_id$#{Braintree::Configuration.environment}$integration_client_id",
479
516
  :client_secret => "client_secret$#{Braintree::Configuration.environment}$integration_client_secret",
480
- :logger => Logger.new("/dev/null")
517
+ :logger => Logger.new("/dev/null"),
481
518
  )
482
519
  access_token = Braintree::OAuthTestHelper.create_token(oauth_gateway, {
483
520
  :merchant_public_id => "integration_merchant_id",
@@ -486,7 +523,7 @@ describe Braintree::Transaction do
486
523
 
487
524
  gateway = Braintree::Gateway.new(
488
525
  :access_token => access_token,
489
- :logger => Logger.new("/dev/null")
526
+ :logger => Logger.new("/dev/null"),
490
527
  )
491
528
 
492
529
  result = gateway.transaction.create(
@@ -495,7 +532,7 @@ describe Braintree::Transaction do
495
532
  :credit_card => {
496
533
  :number => Braintree::Test::CreditCardNumbers::Visa,
497
534
  :expiration_date => "05/2009"
498
- }
535
+ },
499
536
  )
500
537
 
501
538
  result.success?.should == true
@@ -538,7 +575,7 @@ describe Braintree::Transaction do
538
575
  :customer_ip => "192.168.0.1",
539
576
  :customer_location_zip => "91244",
540
577
  :customer_tenure => "20",
541
- }
578
+ },
542
579
  )
543
580
 
544
581
  result.success?.should == true
@@ -548,7 +585,7 @@ describe Braintree::Transaction do
548
585
  result = Braintree::Customer.create()
549
586
  address_result = Braintree::Address.create(
550
587
  :customer_id => result.customer.id,
551
- :country_code_alpha2 => "US"
588
+ :country_code_alpha2 => "US",
552
589
  )
553
590
 
554
591
  result = Braintree::Transaction.create(
@@ -559,7 +596,7 @@ describe Braintree::Transaction do
559
596
  :credit_card => {
560
597
  :number => Braintree::Test::CreditCardNumbers::Visa,
561
598
  :expiration_date => "05/2009"
562
- }
599
+ },
563
600
  )
564
601
 
565
602
  result.success?.should == true
@@ -572,7 +609,7 @@ describe Braintree::Transaction do
572
609
  :credit_card => {
573
610
  :number => Braintree::Test::CreditCardNumbers::Visa,
574
611
  :expiration_date => "05/2009"
575
- }
612
+ },
576
613
  )
577
614
  result.success?.should == false
578
615
  result.transaction.id.should =~ /^\w{6,}$/
@@ -591,7 +628,7 @@ describe Braintree::Transaction do
591
628
  :credit_card => {
592
629
  :number => Braintree::Test::CreditCardNumbers::Visa,
593
630
  :expiration_date => "05/2009"
594
- }
631
+ },
595
632
  )
596
633
  result.success?.should == false
597
634
  result.transaction.id.should =~ /^\w{6,}$/
@@ -628,7 +665,7 @@ describe Braintree::Transaction do
628
665
  :options => {
629
666
  :add_billing_address_to_payment_method => true,
630
667
  :store_in_vault => true
631
- }
668
+ },
632
669
  )
633
670
  result.success?.should == true
634
671
  transaction = result.transaction
@@ -658,7 +695,7 @@ describe Braintree::Transaction do
658
695
  :billing => {
659
696
  :country_name => "Botswana",
660
697
  :country_code_alpha2 => "US",
661
- }
698
+ },
662
699
  )
663
700
 
664
701
  result.success?.should == false
@@ -674,7 +711,7 @@ describe Braintree::Transaction do
674
711
  },
675
712
  :billing => {
676
713
  :country_code_alpha2 => "ZZ"
677
- }
714
+ },
678
715
  )
679
716
 
680
717
  result.success?.should == false
@@ -691,7 +728,7 @@ describe Braintree::Transaction do
691
728
  },
692
729
  :billing => {
693
730
  :country_code_alpha3 => "ZZZ"
694
- }
731
+ },
695
732
  )
696
733
 
697
734
  result.success?.should == false
@@ -708,7 +745,7 @@ describe Braintree::Transaction do
708
745
  },
709
746
  :billing => {
710
747
  :country_code_numeric => "FOO"
711
- }
748
+ },
712
749
  )
713
750
 
714
751
  result.success?.should == false
@@ -739,7 +776,7 @@ describe Braintree::Transaction do
739
776
  },
740
777
  :shipping => {
741
778
  :phone_number => "123-234-3456=098765"
742
- }
779
+ },
743
780
  )
744
781
 
745
782
  result.success?.should == false
@@ -755,7 +792,7 @@ describe Braintree::Transaction do
755
792
  },
756
793
  :shipping => {
757
794
  :shipping_method => "urgent"
758
- }
795
+ },
759
796
  )
760
797
 
761
798
  result.success?.should == false
@@ -771,7 +808,7 @@ describe Braintree::Transaction do
771
808
  },
772
809
  :billing => {
773
810
  :phone_number => "123-234-3456=098765"
774
- }
811
+ },
775
812
  )
776
813
 
777
814
  result.success?.should == false
@@ -795,7 +832,7 @@ describe Braintree::Transaction do
795
832
  :number => Braintree::Test::CreditCardNumbers::Visa,
796
833
  :expiration_date => "05/2009",
797
834
  :cvv => "200"
798
- }
835
+ },
799
836
  )
800
837
  result.success?.should == false
801
838
  result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::CVV
@@ -810,17 +847,17 @@ describe Braintree::Transaction do
810
847
  gateway = Braintree::Gateway.new(
811
848
  :client_id => "client_id$#{Braintree::Configuration.environment}$integration_client_id",
812
849
  :client_secret => "client_secret$#{Braintree::Configuration.environment}$integration_client_secret",
813
- :logger => Logger.new("/dev/null")
850
+ :logger => Logger.new("/dev/null"),
814
851
  )
815
852
  result = gateway.merchant.create(
816
853
  :email => "name@email.com",
817
854
  :country_code_alpha3 => "USA",
818
- :payment_methods => ["credit_card", "paypal"]
855
+ :payment_methods => ["credit_card", "paypal"],
819
856
  )
820
857
 
821
858
  gateway = Braintree::Gateway.new(
822
859
  :access_token => result.credentials.access_token,
823
- :logger => Logger.new("/dev/null")
860
+ :logger => Logger.new("/dev/null"),
824
861
  )
825
862
 
826
863
  result = gateway.transaction.create(
@@ -829,7 +866,7 @@ describe Braintree::Transaction do
829
866
  :credit_card => {
830
867
  :number => Braintree::Test::CreditCardNumbers::Visa,
831
868
  :expiration_date => "05/2020"
832
- }
869
+ },
833
870
  )
834
871
  result.success?.should == false
835
872
  result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::ApplicationIncomplete
@@ -853,7 +890,7 @@ describe Braintree::Transaction do
853
890
  :credit_card => {
854
891
  :number => Braintree::Test::CreditCardNumbers::Visa,
855
892
  :expiration_date => "05/2009"
856
- }
893
+ },
857
894
  )
858
895
  result.success?.should == false
859
896
  result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::AVS
@@ -883,7 +920,7 @@ describe Braintree::Transaction do
883
920
  :number => Braintree::Test::CreditCardNumbers::Visa,
884
921
  :expiration_date => "05/2009",
885
922
  :cvv => "200"
886
- }
923
+ },
887
924
  )
888
925
  result.success?.should == false
889
926
  result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::AVSAndCVV
@@ -895,14 +932,14 @@ describe Braintree::Transaction do
895
932
  end
896
933
 
897
934
  it "exposes the fraud gateway rejection reason" do
898
- with_advanced_fraud_integration_merchant do
935
+ with_advanced_fraud_kount_integration_merchant do
899
936
  result = Braintree::Transaction.sale(
900
937
  :amount => Braintree::Test::TransactionAmounts::Authorize,
901
938
  :credit_card => {
902
939
  :number => Braintree::Test::CreditCardNumbers::Fraud,
903
940
  :expiration_date => "05/2017",
904
941
  :cvv => "333"
905
- }
942
+ },
906
943
  )
907
944
  result.success?.should == false
908
945
  result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::Fraud
@@ -910,14 +947,14 @@ describe Braintree::Transaction do
910
947
  end
911
948
 
912
949
  it "exposes the risk_threshold gateway rejection reason (via test cc num)" do
913
- with_advanced_fraud_integration_merchant do
950
+ with_advanced_fraud_kount_integration_merchant do
914
951
  result = Braintree::Transaction.sale(
915
952
  :amount => Braintree::Test::TransactionAmounts::Authorize,
916
953
  :credit_card => {
917
954
  :number => Braintree::Test::CreditCardNumbers::RiskThreshold,
918
955
  :expiration_date => "05/2017",
919
956
  :cvv => "333"
920
- }
957
+ },
921
958
  )
922
959
  result.success?.should == false
923
960
  result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::RiskThreshold
@@ -925,7 +962,7 @@ describe Braintree::Transaction do
925
962
  end
926
963
 
927
964
  it "exposes the risk_threshold gateway rejection reason (via test test nonce)" do
928
- with_advanced_fraud_integration_merchant do
965
+ with_advanced_fraud_kount_integration_merchant do
929
966
  result = Braintree::Transaction.sale(
930
967
  :amount => Braintree::Test::TransactionAmounts::Authorize,
931
968
  :payment_method_nonce => Braintree::Test::Nonce::GatewayRejectedRiskThresholds,
@@ -954,7 +991,7 @@ describe Braintree::Transaction do
954
991
  :number => Braintree::Test::CreditCardNumbers::Visa,
955
992
  :expiration_month => "05",
956
993
  :expiration_year => "2011"
957
- }
994
+ },
958
995
  )
959
996
  result.success?.should == true
960
997
  result.transaction.credit_card_details.expiration_month.should == "05"
@@ -966,7 +1003,7 @@ describe Braintree::Transaction do
966
1003
  result = Braintree::Transaction.create(
967
1004
  :type => "sale",
968
1005
  :amount => Braintree::Test::TransactionAmounts::Decline,
969
- :customer_id => 123456789
1006
+ :customer_id => 123456789,
970
1007
  )
971
1008
  result.success?.should == false
972
1009
  result.errors.for(:transaction).on(:customer_id)[0].code.should == "91510"
@@ -983,7 +1020,7 @@ describe Braintree::Transaction do
983
1020
  },
984
1021
  :custom_fields => {
985
1022
  :store_me => "custom value"
986
- }
1023
+ },
987
1024
  )
988
1025
  result.success?.should == true
989
1026
  result.transaction.custom_fields.should == {:store_me => "custom value"}
@@ -998,7 +1035,7 @@ describe Braintree::Transaction do
998
1035
  },
999
1036
  :custom_fields => {
1000
1037
  :store_me => ""
1001
- }
1038
+ },
1002
1039
  )
1003
1040
 
1004
1041
  result = Braintree::Transaction.find(create_result.transaction.id)
@@ -1016,7 +1053,7 @@ describe Braintree::Transaction do
1016
1053
  },
1017
1054
  :custom_fields => {
1018
1055
  :invalid_key => "custom value"
1019
- }
1056
+ },
1020
1057
  )
1021
1058
  result.success?.should == false
1022
1059
  result.errors.for(:transaction).on(:custom_fields)[0].message.should == "Custom field is invalid: invalid_key."
@@ -1035,7 +1072,7 @@ describe Braintree::Transaction do
1035
1072
  }
1036
1073
  result = Braintree::Transaction.create(params[:transaction])
1037
1074
  result.success?.should == false
1038
- result.params.should == {:transaction => {:type => 'sale', :amount => nil, :credit_card => {:expiration_date => "05/2009"}}}
1075
+ result.params.should == {:transaction => {:type => "sale", :amount => nil, :credit_card => {:expiration_date => "05/2009"}}}
1039
1076
  end
1040
1077
 
1041
1078
  it "returns errors if validations fail (tests many errors at once for spec speed)" do
@@ -1055,7 +1092,7 @@ describe Braintree::Transaction do
1055
1092
  }
1056
1093
  result = Braintree::Transaction.create(params[:transaction])
1057
1094
  result.success?.should == false
1058
- result.errors.for(:transaction).on(:base).map{|error| error.code}.should include(Braintree::ErrorCodes::Transaction::PaymentMethodDoesNotBelongToCustomer)
1095
+ result.errors.for(:transaction).on(:base).map { |error| error.code }.should include(Braintree::ErrorCodes::Transaction::PaymentMethodDoesNotBelongToCustomer)
1059
1096
  result.errors.for(:transaction).on(:customer_id)[0].code.should == Braintree::ErrorCodes::Transaction::CustomerIdIsInvalid
1060
1097
  result.errors.for(:transaction).on(:payment_method_token)[0].code.should == Braintree::ErrorCodes::Transaction::PaymentMethodTokenIsInvalid
1061
1098
  result.errors.for(:transaction).on(:type)[0].code.should == Braintree::ErrorCodes::Transaction::TypeIsInvalid
@@ -1086,7 +1123,7 @@ describe Braintree::Transaction do
1086
1123
  :credit_card => {
1087
1124
  :account_type => "credit",
1088
1125
  }
1089
- }
1126
+ },
1090
1127
  )
1091
1128
  result.success?.should == false
1092
1129
  result.errors.for(:transaction).on(:amount)[0].code.should == Braintree::ErrorCodes::Transaction::AmountNotSupportedByProcessor
@@ -1130,13 +1167,13 @@ describe Braintree::Transaction do
1130
1167
  :credit_card => {
1131
1168
  :number => Braintree::Test::CreditCardNumbers::Visa,
1132
1169
  :expiration_date => "05/2010"
1133
- }
1170
+ },
1134
1171
  )
1135
1172
  result = Braintree::Transaction.create(
1136
1173
  :type => "sale",
1137
1174
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1138
1175
  :customer_id => customer.id,
1139
- :payment_method_token => customer.credit_cards[0].token + "x"
1176
+ :payment_method_token => customer.credit_cards[0].token + "x",
1140
1177
  )
1141
1178
  result.success?.should == false
1142
1179
  result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::PaymentMethodDoesNotBelongToCustomer
@@ -1148,7 +1185,7 @@ describe Braintree::Transaction do
1148
1185
  :credit_card => {
1149
1186
  :number => Braintree::Test::CreditCardNumbers::Visa,
1150
1187
  :expiration_date => "05/2010"
1151
- }
1188
+ },
1152
1189
  )
1153
1190
  result = Braintree::Transaction.create(
1154
1191
  :type => "sale",
@@ -1157,7 +1194,7 @@ describe Braintree::Transaction do
1157
1194
  :credit_card => {
1158
1195
  :number => Braintree::Test::CreditCardNumbers::Visa,
1159
1196
  :expiration_date => "12/12"
1160
- }
1197
+ },
1161
1198
  )
1162
1199
  result.success?.should == true
1163
1200
  result.transaction.credit_card_details.masked_number.should == "401288******1881"
@@ -1169,7 +1206,7 @@ describe Braintree::Transaction do
1169
1206
  :credit_card => {
1170
1207
  :number => Braintree::Test::CreditCardNumbers::Visa,
1171
1208
  :expiration_date => "05/2010"
1172
- }
1209
+ },
1173
1210
  )
1174
1211
  result = Braintree::Transaction.create(
1175
1212
  :type => "sale",
@@ -1179,7 +1216,7 @@ describe Braintree::Transaction do
1179
1216
  :number => Braintree::Test::CreditCardNumbers::Visa,
1180
1217
  :expiration_date => "12/12",
1181
1218
  },
1182
- :options => { :store_in_vault => true }
1219
+ :options => {:store_in_vault => true},
1183
1220
  )
1184
1221
  result.success?.should == true
1185
1222
  result.transaction.credit_card_details.masked_number.should == "401288******1881"
@@ -1193,7 +1230,7 @@ describe Braintree::Transaction do
1193
1230
  :credit_card => {
1194
1231
  :number => Braintree::Test::CreditCardNumbers::Visa,
1195
1232
  :expiration_date => "05/2010"
1196
- }
1233
+ },
1197
1234
  )
1198
1235
 
1199
1236
  result = Braintree::Subscription.create(
@@ -1224,7 +1261,7 @@ describe Braintree::Transaction do
1224
1261
  :never_expires => true
1225
1262
  }
1226
1263
  ]
1227
- }
1264
+ },
1228
1265
  )
1229
1266
 
1230
1267
  result.success?.should be(true)
@@ -1265,15 +1302,15 @@ describe Braintree::Transaction do
1265
1302
  :expiration_date => "05/2009"
1266
1303
  },
1267
1304
  :descriptor => {
1268
- :name => '123*123456789012345678',
1269
- :phone => '3334445555',
1305
+ :name => "123*123456789012345678",
1306
+ :phone => "3334445555",
1270
1307
  :url => "ebay.com"
1271
- }
1308
+ },
1272
1309
  )
1273
1310
  result.success?.should == true
1274
- result.transaction.descriptor.name.should == '123*123456789012345678'
1275
- result.transaction.descriptor.phone.should == '3334445555'
1276
- result.transaction.descriptor.url.should == 'ebay.com'
1311
+ result.transaction.descriptor.name.should == "123*123456789012345678"
1312
+ result.transaction.descriptor.phone.should == "3334445555"
1313
+ result.transaction.descriptor.url.should == "ebay.com"
1277
1314
  end
1278
1315
 
1279
1316
  it "has validation errors if format is invalid" do
@@ -1284,10 +1321,10 @@ describe Braintree::Transaction do
1284
1321
  :expiration_date => "05/2009"
1285
1322
  },
1286
1323
  :descriptor => {
1287
- :name => 'badcompanyname12*badproduct12',
1288
- :phone => '%bad4445555',
1289
- :url => '12345678901234'
1290
- }
1324
+ :name => "badcompanyname12*badproduct12",
1325
+ :phone => "%bad4445555",
1326
+ :url => "12345678901234"
1327
+ },
1291
1328
  )
1292
1329
  result.success?.should == false
1293
1330
  result.errors.for(:transaction).for(:descriptor).on(:name)[0].code.should == Braintree::ErrorCodes::Descriptor::NameFormatIsInvalid
@@ -1304,14 +1341,14 @@ describe Braintree::Transaction do
1304
1341
  :number => Braintree::Test::CreditCardNumbers::Visa,
1305
1342
  :expiration_date => "05/2009"
1306
1343
  },
1307
- :tax_amount => '0.05',
1344
+ :tax_amount => "0.05",
1308
1345
  :tax_exempt => false,
1309
- :purchase_order_number => '12345678901234567'
1346
+ :purchase_order_number => "12345678901234567",
1310
1347
  )
1311
1348
  result.success?.should == true
1312
1349
  result.transaction.tax_amount.should == BigDecimal("0.05")
1313
1350
  result.transaction.tax_exempt.should == false
1314
- result.transaction.purchase_order_number.should == '12345678901234567'
1351
+ result.transaction.purchase_order_number.should == "12345678901234567"
1315
1352
  end
1316
1353
 
1317
1354
  it "accepts tax_amount as a BigDecimal" do
@@ -1321,8 +1358,8 @@ describe Braintree::Transaction do
1321
1358
  :number => Braintree::Test::CreditCardNumbers::Visa,
1322
1359
  :expiration_date => "05/2009"
1323
1360
  },
1324
- :tax_amount => BigDecimal('1.99'),
1325
- :tax_exempt => true
1361
+ :tax_amount => BigDecimal("1.99"),
1362
+ :tax_exempt => true,
1326
1363
  )
1327
1364
  result.success?.should == true
1328
1365
  result.transaction.tax_amount.should == BigDecimal("1.99")
@@ -1338,7 +1375,7 @@ describe Braintree::Transaction do
1338
1375
  :number => Braintree::Test::CreditCardNumbers::Visa,
1339
1376
  :expiration_date => "05/2009"
1340
1377
  },
1341
- :tax_amount => 'abcd'
1378
+ :tax_amount => "abcd",
1342
1379
  )
1343
1380
  result.success?.should == false
1344
1381
  result.errors.for(:transaction).on(:tax_amount)[0].code.should == Braintree::ErrorCodes::Transaction::TaxAmountFormatIsInvalid
@@ -1351,7 +1388,7 @@ describe Braintree::Transaction do
1351
1388
  :number => Braintree::Test::CreditCardNumbers::Visa,
1352
1389
  :expiration_date => "05/2009"
1353
1390
  },
1354
- :purchase_order_number => 'a' * 18
1391
+ :purchase_order_number => "a" * 18,
1355
1392
  )
1356
1393
  result.success?.should == false
1357
1394
  result.errors.for(:transaction).on(:purchase_order_number)[0].code.should == Braintree::ErrorCodes::Transaction::PurchaseOrderNumberIsTooLong
@@ -1364,7 +1401,7 @@ describe Braintree::Transaction do
1364
1401
  :number => Braintree::Test::CreditCardNumbers::Visa,
1365
1402
  :expiration_date => "05/2009"
1366
1403
  },
1367
- :purchase_order_number => "\303\237\303\245\342\210\202"
1404
+ :purchase_order_number => "\303\237\303\245\342\210\202",
1368
1405
  )
1369
1406
  result.success?.should == false
1370
1407
  result.errors.for(:transaction).on(:purchase_order_number)[0].code.should == Braintree::ErrorCodes::Transaction::PurchaseOrderNumberIsInvalid
@@ -1381,7 +1418,7 @@ describe Braintree::Transaction do
1381
1418
  :number => Braintree::Test::CreditCardNumbers::Visa,
1382
1419
  :expiration_date => "12/12",
1383
1420
  },
1384
- :transaction_source => "recurring_first"
1421
+ :transaction_source => "recurring_first",
1385
1422
  )
1386
1423
  result.success?.should == true
1387
1424
  result.transaction.recurring.should == true
@@ -1395,7 +1432,7 @@ describe Braintree::Transaction do
1395
1432
  :number => Braintree::Test::CreditCardNumbers::Visa,
1396
1433
  :expiration_date => "12/12",
1397
1434
  },
1398
- :transaction_source => "recurring"
1435
+ :transaction_source => "recurring",
1399
1436
  )
1400
1437
  result.success?.should == true
1401
1438
  result.transaction.recurring.should == true
@@ -1409,7 +1446,7 @@ describe Braintree::Transaction do
1409
1446
  :number => Braintree::Test::CreditCardNumbers::Visa,
1410
1447
  :expiration_date => "12/12",
1411
1448
  },
1412
- :transaction_source => "merchant"
1449
+ :transaction_source => "merchant",
1413
1450
  )
1414
1451
  result.success?.should == true
1415
1452
  result.transaction.recurring.should == false
@@ -1423,7 +1460,7 @@ describe Braintree::Transaction do
1423
1460
  :number => Braintree::Test::CreditCardNumbers::Visa,
1424
1461
  :expiration_date => "12/12",
1425
1462
  },
1426
- :transaction_source => "moto"
1463
+ :transaction_source => "moto",
1427
1464
  )
1428
1465
  result.success?.should == true
1429
1466
  result.transaction.recurring.should == false
@@ -1437,7 +1474,7 @@ describe Braintree::Transaction do
1437
1474
  :number => Braintree::Test::CreditCardNumbers::Visa,
1438
1475
  :expiration_date => "12/12",
1439
1476
  },
1440
- :transaction_source => "invalid_value"
1477
+ :transaction_source => "invalid_value",
1441
1478
  )
1442
1479
  result.success?.should == false
1443
1480
  result.errors.for(:transaction).on(:transaction_source)[0].code.should == Braintree::ErrorCodes::Transaction::TransactionSourceIsInvalid
@@ -1457,7 +1494,7 @@ describe Braintree::Transaction do
1457
1494
  :number => Braintree::Test::CreditCardNumbers::Visa,
1458
1495
  :expiration_date => "12/12",
1459
1496
  },
1460
- :options => { :store_in_vault_on_success => true }
1497
+ :options => {:store_in_vault_on_success => true},
1461
1498
  )
1462
1499
  result.success?.should == true
1463
1500
  result.transaction.vault_customer.last_name.should == "Doe"
@@ -1476,7 +1513,7 @@ describe Braintree::Transaction do
1476
1513
  :number => Braintree::Test::CreditCardNumbers::Visa,
1477
1514
  :expiration_date => "12/12",
1478
1515
  },
1479
- :options => { :store_in_vault_on_success => true }
1516
+ :options => {:store_in_vault_on_success => true},
1480
1517
  )
1481
1518
  result.success?.should == false
1482
1519
  result.transaction.vault_customer.should be_nil
@@ -1496,7 +1533,7 @@ describe Braintree::Transaction do
1496
1533
  :number => Braintree::Test::CreditCardNumbers::Visa,
1497
1534
  :expiration_date => "12/12",
1498
1535
  },
1499
- :options => { :store_in_vault_on_success => false }
1536
+ :options => {:store_in_vault_on_success => false},
1500
1537
  )
1501
1538
  result.success?.should == true
1502
1539
  result.transaction.vault_customer.should be_nil
@@ -1514,7 +1551,7 @@ describe Braintree::Transaction do
1514
1551
  :number => Braintree::Test::CreditCardNumbers::Visa,
1515
1552
  :expiration_date => "12/12",
1516
1553
  },
1517
- :options => { :store_in_vault_on_success => false }
1554
+ :options => {:store_in_vault_on_success => false},
1518
1555
  )
1519
1556
  result.success?.should == false
1520
1557
  result.transaction.vault_customer.should be_nil
@@ -1533,7 +1570,7 @@ describe Braintree::Transaction do
1533
1570
  :number => Braintree::Test::CreditCardNumbers::Visa,
1534
1571
  :expiration_date => "12/12",
1535
1572
  },
1536
- :service_fee_amount => "1.00"
1573
+ :service_fee_amount => "1.00",
1537
1574
  )
1538
1575
  result.success?.should == true
1539
1576
  result.transaction.service_fee_amount.should == BigDecimal("1.00")
@@ -1548,7 +1585,7 @@ describe Braintree::Transaction do
1548
1585
  :number => Braintree::Test::CreditCardNumbers::Visa,
1549
1586
  :expiration_date => "12/12",
1550
1587
  },
1551
- :service_fee_amount => "1.00"
1588
+ :service_fee_amount => "1.00",
1552
1589
  )
1553
1590
  result.success?.should == false
1554
1591
  expected_error_code = Braintree::ErrorCodes::Transaction::ServiceFeeAmountNotAllowedOnMasterMerchantAccount
@@ -1563,7 +1600,7 @@ describe Braintree::Transaction do
1563
1600
  :credit_card => {
1564
1601
  :number => Braintree::Test::CreditCardNumbers::Visa,
1565
1602
  :expiration_date => "12/12",
1566
- }
1603
+ },
1567
1604
  )
1568
1605
  result.success?.should == false
1569
1606
  expected_error_code = Braintree::ErrorCodes::Transaction::SubMerchantAccountRequiresServiceFeeAmount
@@ -1573,7 +1610,7 @@ describe Braintree::Transaction do
1573
1610
  it "raises an error if service fee amount is negative" do
1574
1611
  result = Braintree::Transaction.create(
1575
1612
  :merchant_account_id => SpecHelper::NonDefaultSubMerchantAccountId,
1576
- :service_fee_amount => "-1.00"
1613
+ :service_fee_amount => "-1.00",
1577
1614
  )
1578
1615
  result.success?.should == false
1579
1616
  result.errors.for(:transaction).on(:service_fee_amount)[0].code.should == Braintree::ErrorCodes::Transaction::ServiceFeeAmountCannotBeNegative
@@ -1582,7 +1619,7 @@ describe Braintree::Transaction do
1582
1619
  it "raises an error if service fee amount is invalid" do
1583
1620
  result = Braintree::Transaction.create(
1584
1621
  :merchant_account_id => SpecHelper::NonDefaultSubMerchantAccountId,
1585
- :service_fee_amount => "invalid amount"
1622
+ :service_fee_amount => "invalid amount",
1586
1623
  )
1587
1624
  result.success?.should == false
1588
1625
  result.errors.for(:transaction).on(:service_fee_amount)[0].code.should == Braintree::ErrorCodes::Transaction::ServiceFeeAmountFormatIsInvalid
@@ -1600,7 +1637,7 @@ describe Braintree::Transaction do
1600
1637
  :expiration_date => "12/12",
1601
1638
  },
1602
1639
  :service_fee_amount => "10.00",
1603
- :options => {:hold_in_escrow => true}
1640
+ :options => {:hold_in_escrow => true},
1604
1641
  )
1605
1642
 
1606
1643
  result.success?.should == true
@@ -1617,7 +1654,7 @@ describe Braintree::Transaction do
1617
1654
  :expiration_date => "12/12",
1618
1655
  },
1619
1656
  :service_fee_amount => "1.00",
1620
- :options => {:hold_in_escrow => true}
1657
+ :options => {:hold_in_escrow => true},
1621
1658
  )
1622
1659
  result.success?.should == false
1623
1660
  expected_error_code = Braintree::ErrorCodes::Transaction::CannotHoldInEscrow
@@ -1630,7 +1667,7 @@ describe Braintree::Transaction do
1630
1667
  result = Braintree::Transaction.create(
1631
1668
  :type => "sale",
1632
1669
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1633
- :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK::VisaPaymentMethodCode
1670
+ :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK::VisaPaymentMethodCode,
1634
1671
  )
1635
1672
  result.success?.should == true
1636
1673
  result.transaction.credit_card_details.bin.should == "400934"
@@ -1647,7 +1684,7 @@ describe Braintree::Transaction do
1647
1684
  },
1648
1685
  :options => {
1649
1686
  :venmo_sdk_session => Braintree::Test::VenmoSDK::Session
1650
- }
1687
+ },
1651
1688
  )
1652
1689
  result.success?.should == true
1653
1690
  result.transaction.credit_card_details.venmo_sdk?.should == false
@@ -1662,14 +1699,14 @@ describe Braintree::Transaction do
1662
1699
  :expiration_month => "11",
1663
1700
  :expiration_year => "2099",
1664
1701
  },
1665
- :share => true
1702
+ :share => true,
1666
1703
  )
1667
1704
  nonce.should_not be_nil
1668
1705
 
1669
1706
  result = Braintree::Transaction.create(
1670
1707
  :type => "sale",
1671
1708
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1672
- :payment_method_nonce => nonce
1709
+ :payment_method_nonce => nonce,
1673
1710
  )
1674
1711
  result.success?.should == true
1675
1712
  end
@@ -1684,14 +1721,14 @@ describe Braintree::Transaction do
1684
1721
  },
1685
1722
  :client_token_options => {
1686
1723
  :customer_id => customer.id,
1687
- }
1724
+ },
1688
1725
  )
1689
1726
  nonce.should_not be_nil
1690
1727
 
1691
1728
  result = Braintree::Transaction.create(
1692
1729
  :type => "sale",
1693
1730
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1694
- :payment_method_nonce => nonce
1731
+ :payment_method_nonce => nonce,
1695
1732
  )
1696
1733
  result.success?.should == true
1697
1734
  end
@@ -1704,14 +1741,14 @@ describe Braintree::Transaction do
1704
1741
  },
1705
1742
  :client_token_options => {
1706
1743
  :customer_id => customer.id,
1707
- }
1744
+ },
1708
1745
  )
1709
1746
  nonce.should_not be_nil
1710
1747
 
1711
1748
  result = Braintree::Transaction.create(
1712
1749
  :type => "sale",
1713
1750
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1714
- :payment_method_nonce => nonce
1751
+ :payment_method_nonce => nonce,
1715
1752
  )
1716
1753
  result.success?.should == true
1717
1754
  result.transaction.paypal_details.should_not be_nil
@@ -1723,14 +1760,14 @@ describe Braintree::Transaction do
1723
1760
  nonce = nonce_for_new_payment_method(
1724
1761
  :paypal_account => {
1725
1762
  :consent_code => "PAYPAL_CONSENT_CODE",
1726
- }
1763
+ },
1727
1764
  )
1728
1765
  nonce.should_not be_nil
1729
1766
 
1730
1767
  result = Braintree::Transaction.create(
1731
1768
  :type => "sale",
1732
1769
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1733
- :payment_method_nonce => nonce
1770
+ :payment_method_nonce => nonce,
1734
1771
  )
1735
1772
  result.success?.should == true
1736
1773
  result.transaction.paypal_details.should_not be_nil
@@ -1742,7 +1779,7 @@ describe Braintree::Transaction do
1742
1779
  result = Braintree::Transaction.create(
1743
1780
  :type => "sale",
1744
1781
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1745
- :payment_method_nonce => Braintree::Test::Nonce::ApplePayVisa
1782
+ :payment_method_nonce => Braintree::Test::Nonce::ApplePayVisa,
1746
1783
  )
1747
1784
  result.success?.should == true
1748
1785
  result.transaction.should_not be_nil
@@ -1772,7 +1809,7 @@ describe Braintree::Transaction do
1772
1809
  :type => "sale",
1773
1810
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1774
1811
  :payment_method_nonce => Braintree::Test::Nonce::ApplePayVisa,
1775
- :options => { :store_in_vault_on_success => true }
1812
+ :options => {:store_in_vault_on_success => true},
1776
1813
  )
1777
1814
  result.success?.should == true
1778
1815
  result.transaction.should_not be_nil
@@ -1793,7 +1830,7 @@ describe Braintree::Transaction do
1793
1830
  result = Braintree::Transaction.create(
1794
1831
  :type => "sale",
1795
1832
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1796
- :payment_method_nonce => Braintree::Test::Nonce::GooglePayDiscover
1833
+ :payment_method_nonce => Braintree::Test::Nonce::GooglePayDiscover,
1797
1834
  )
1798
1835
  result.success?.should == true
1799
1836
  result.transaction.should_not be_nil
@@ -1826,7 +1863,7 @@ describe Braintree::Transaction do
1826
1863
  :type => "sale",
1827
1864
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1828
1865
  :payment_method_nonce => Braintree::Test::Nonce::GooglePayDiscover,
1829
- :options => { :store_in_vault_on_success => true }
1866
+ :options => {:store_in_vault_on_success => true},
1830
1867
  )
1831
1868
  result.success?.should == true
1832
1869
  result.transaction.should_not be_nil
@@ -1850,7 +1887,7 @@ describe Braintree::Transaction do
1850
1887
  result = Braintree::Transaction.create(
1851
1888
  :type => "sale",
1852
1889
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1853
- :payment_method_nonce => Braintree::Test::Nonce::GooglePayMasterCard
1890
+ :payment_method_nonce => Braintree::Test::Nonce::GooglePayMasterCard,
1854
1891
  )
1855
1892
  result.success?.should == true
1856
1893
  result.transaction.should_not be_nil
@@ -1873,7 +1910,7 @@ describe Braintree::Transaction do
1873
1910
  :merchant_account_id => SpecHelper::FakeVenmoAccountMerchantAccountId,
1874
1911
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1875
1912
  :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount,
1876
- :options => {:store_in_vault => true}
1913
+ :options => {:store_in_vault => true},
1877
1914
  )
1878
1915
  result.should be_success
1879
1916
 
@@ -1893,7 +1930,7 @@ describe Braintree::Transaction do
1893
1930
  :merchant_account_id => SpecHelper::FakeVenmoAccountMerchantAccountId,
1894
1931
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1895
1932
  :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount,
1896
- :options => {:store_in_vault => true, :venmo => {:profile_id => "integration_venmo_merchant_public_id" }}
1933
+ :options => {:store_in_vault => true, :venmo => {:profile_id => "integration_venmo_merchant_public_id"}},
1897
1934
  )
1898
1935
  result.should be_success
1899
1936
  end
@@ -1903,7 +1940,7 @@ describe Braintree::Transaction do
1903
1940
  result = Braintree::Transaction.create(
1904
1941
  :type => "sale",
1905
1942
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1906
- :payment_method_nonce => Braintree::Test::Nonce::AbstractTransactable
1943
+ :payment_method_nonce => Braintree::Test::Nonce::AbstractTransactable,
1907
1944
  )
1908
1945
  result.success?.should == true
1909
1946
  result.transaction.should_not be_nil
@@ -1918,7 +1955,7 @@ describe Braintree::Transaction do
1918
1955
  :paypal_account => {
1919
1956
  :payer_id => "PAYER-1234",
1920
1957
  :payment_id => "PAY-5678",
1921
- }
1958
+ },
1922
1959
  )
1923
1960
 
1924
1961
  result.success?.should == true
@@ -1932,7 +1969,7 @@ describe Braintree::Transaction do
1932
1969
  nonce = nonce_for_new_payment_method(
1933
1970
  :paypal_account => {
1934
1971
  :consent_code => "PAYPAL_CONSENT_CODE",
1935
- }
1972
+ },
1936
1973
  )
1937
1974
  nonce.should_not be_nil
1938
1975
 
@@ -1942,7 +1979,7 @@ describe Braintree::Transaction do
1942
1979
  :payment_method_nonce => nonce,
1943
1980
  :paypal_account => {
1944
1981
  :payee_id => "fake-payee-id"
1945
- }
1982
+ },
1946
1983
  )
1947
1984
 
1948
1985
  result.success?.should == true
@@ -1956,7 +1993,7 @@ describe Braintree::Transaction do
1956
1993
  nonce = nonce_for_new_payment_method(
1957
1994
  :paypal_account => {
1958
1995
  :consent_code => "PAYPAL_CONSENT_CODE",
1959
- }
1996
+ },
1960
1997
  )
1961
1998
  nonce.should_not be_nil
1962
1999
 
@@ -1967,7 +2004,7 @@ describe Braintree::Transaction do
1967
2004
  :paypal_account => {},
1968
2005
  :options => {
1969
2006
  :payee_id => "fake-payee-id"
1970
- }
2007
+ },
1971
2008
  )
1972
2009
 
1973
2010
  result.success?.should == true
@@ -1981,7 +2018,7 @@ describe Braintree::Transaction do
1981
2018
  nonce = nonce_for_new_payment_method(
1982
2019
  :paypal_account => {
1983
2020
  :consent_code => "PAYPAL_CONSENT_CODE",
1984
- }
2021
+ },
1985
2022
  )
1986
2023
  nonce.should_not be_nil
1987
2024
 
@@ -1993,7 +2030,7 @@ describe Braintree::Transaction do
1993
2030
  :paypal => {
1994
2031
  :payee_id => "fake-payee-id"
1995
2032
  }
1996
- }
2033
+ },
1997
2034
  )
1998
2035
 
1999
2036
  result.success?.should == true
@@ -2007,7 +2044,7 @@ describe Braintree::Transaction do
2007
2044
  nonce = nonce_for_new_payment_method(
2008
2045
  :paypal_account => {
2009
2046
  :consent_code => "PAYPAL_CONSENT_CODE",
2010
- }
2047
+ },
2011
2048
  )
2012
2049
  nonce.should_not be_nil
2013
2050
 
@@ -2017,7 +2054,7 @@ describe Braintree::Transaction do
2017
2054
  :payment_method_nonce => nonce,
2018
2055
  :paypal_account => {
2019
2056
  :payee_email => "bt_seller_us@paypal.com"
2020
- }
2057
+ },
2021
2058
  )
2022
2059
 
2023
2060
  result.success?.should == true
@@ -2031,7 +2068,7 @@ describe Braintree::Transaction do
2031
2068
  nonce = nonce_for_new_payment_method(
2032
2069
  :paypal_account => {
2033
2070
  :consent_code => "PAYPAL_CONSENT_CODE",
2034
- }
2071
+ },
2035
2072
  )
2036
2073
  nonce.should_not be_nil
2037
2074
 
@@ -2042,7 +2079,7 @@ describe Braintree::Transaction do
2042
2079
  :paypal_account => {},
2043
2080
  :options => {
2044
2081
  :payee_email => "bt_seller_us@paypal.com"
2045
- }
2082
+ },
2046
2083
  )
2047
2084
 
2048
2085
  result.success?.should == true
@@ -2056,7 +2093,7 @@ describe Braintree::Transaction do
2056
2093
  nonce = nonce_for_new_payment_method(
2057
2094
  :paypal_account => {
2058
2095
  :consent_code => "PAYPAL_CONSENT_CODE",
2059
- }
2096
+ },
2060
2097
  )
2061
2098
  nonce.should_not be_nil
2062
2099
 
@@ -2068,7 +2105,7 @@ describe Braintree::Transaction do
2068
2105
  :paypal => {
2069
2106
  :payee_email => "bt_seller_us@paypal.com"
2070
2107
  }
2071
- }
2108
+ },
2072
2109
  )
2073
2110
 
2074
2111
  result.success?.should == true
@@ -2082,7 +2119,7 @@ describe Braintree::Transaction do
2082
2119
  nonce = nonce_for_new_payment_method(
2083
2120
  :paypal_account => {
2084
2121
  :consent_code => "PAYPAL_CONSENT_CODE",
2085
- }
2122
+ },
2086
2123
  )
2087
2124
  nonce.should_not be_nil
2088
2125
 
@@ -2094,7 +2131,7 @@ describe Braintree::Transaction do
2094
2131
  :paypal => {
2095
2132
  :custom_field => "Additional info"
2096
2133
  }
2097
- }
2134
+ },
2098
2135
  )
2099
2136
 
2100
2137
  result.success?.should == true
@@ -2108,7 +2145,7 @@ describe Braintree::Transaction do
2108
2145
  nonce = nonce_for_new_payment_method(
2109
2146
  :paypal_account => {
2110
2147
  :consent_code => "PAYPAL_CONSENT_CODE",
2111
- }
2148
+ },
2112
2149
  )
2113
2150
  nonce.should_not be_nil
2114
2151
 
@@ -2120,7 +2157,7 @@ describe Braintree::Transaction do
2120
2157
  :paypal => {
2121
2158
  :description => "A great product"
2122
2159
  }
2123
- }
2160
+ },
2124
2161
  )
2125
2162
 
2126
2163
  result.success?.should == true
@@ -2134,7 +2171,7 @@ describe Braintree::Transaction do
2134
2171
  nonce = nonce_for_new_payment_method(
2135
2172
  :paypal_account => {
2136
2173
  :consent_code => "PAYPAL_CONSENT_CODE",
2137
- }
2174
+ },
2138
2175
  )
2139
2176
  nonce.should_not be_nil
2140
2177
 
@@ -2149,7 +2186,7 @@ describe Braintree::Transaction do
2149
2186
  :key2 => "value2",
2150
2187
  }
2151
2188
  }
2152
- }
2189
+ },
2153
2190
  )
2154
2191
 
2155
2192
  # note - supplementary data is not returned in response
@@ -2163,7 +2200,7 @@ describe Braintree::Transaction do
2163
2200
  SpecHelper::ThreeDSecureMerchantAccountId,
2164
2201
  :number => Braintree::Test::CreditCardNumbers::Visa,
2165
2202
  :expiration_month => "12",
2166
- :expiration_year => "2012"
2203
+ :expiration_year => "2012",
2167
2204
  )
2168
2205
 
2169
2206
  result = Braintree::Transaction.create(
@@ -2174,7 +2211,7 @@ describe Braintree::Transaction do
2174
2211
  :number => Braintree::Test::CreditCardNumbers::Visa,
2175
2212
  :expiration_date => "12/12",
2176
2213
  },
2177
- :three_d_secure_token => three_d_secure_token
2214
+ :three_d_secure_token => three_d_secure_token,
2178
2215
  )
2179
2216
 
2180
2217
  result.success?.should == true
@@ -2186,7 +2223,7 @@ describe Braintree::Transaction do
2186
2223
  :number => "4111111111111111",
2187
2224
  :expiration_month => "11",
2188
2225
  :expiration_year => "2099",
2189
- }
2226
+ },
2190
2227
  )
2191
2228
  nonce.should_not be_nil
2192
2229
  result = Braintree::Transaction.create(
@@ -2198,7 +2235,7 @@ describe Braintree::Transaction do
2198
2235
  :three_d_secure => {
2199
2236
  :required => true,
2200
2237
  }
2201
- }
2238
+ },
2202
2239
  )
2203
2240
 
2204
2241
  result.success?.should == false
@@ -2214,7 +2251,7 @@ describe Braintree::Transaction do
2214
2251
  :credit_card => {
2215
2252
  :number => Braintree::Test::CreditCardNumbers::Visa,
2216
2253
  :expiration_date => "12/12",
2217
- }
2254
+ },
2218
2255
  )
2219
2256
  result.success?.should == true
2220
2257
  end
@@ -2225,7 +2262,7 @@ describe Braintree::Transaction do
2225
2262
  SpecHelper::ThreeDSecureMerchantAccountId,
2226
2263
  :number => Braintree::Test::CreditCardNumbers::Visa,
2227
2264
  :expiration_month => "12",
2228
- :expiration_year => "2022"
2265
+ :expiration_year => "2022",
2229
2266
  )
2230
2267
 
2231
2268
  result = Braintree::Transaction.create(
@@ -2236,7 +2273,7 @@ describe Braintree::Transaction do
2236
2273
  :number => Braintree::Test::CreditCardNumbers::Visa,
2237
2274
  :expiration_date => "12/22",
2238
2275
  },
2239
- :three_d_secure_authentication_id => three_d_secure_authentication_id
2276
+ :three_d_secure_authentication_id => three_d_secure_authentication_id,
2240
2277
  )
2241
2278
 
2242
2279
  result.success?.should == true
@@ -2250,7 +2287,7 @@ describe Braintree::Transaction do
2250
2287
  :number => Braintree::Test::CreditCardNumbers::Visa,
2251
2288
  :expiration_date => "12/12",
2252
2289
  },
2253
- :three_d_secure_authentication_id => nil
2290
+ :three_d_secure_authentication_id => nil,
2254
2291
  )
2255
2292
  result.success?.should == false
2256
2293
  result.errors.for(:transaction).on(:three_d_secure_authentication_id)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureAuthenticationIdIsInvalid
@@ -2260,7 +2297,7 @@ describe Braintree::Transaction do
2260
2297
  SpecHelper::ThreeDSecureMerchantAccountId,
2261
2298
  :number => Braintree::Test::CreditCardNumbers::Visa,
2262
2299
  :expiration_month => "12",
2263
- :expiration_year => "2012"
2300
+ :expiration_year => "2012",
2264
2301
  )
2265
2302
 
2266
2303
  result = Braintree::Transaction.create(
@@ -2270,7 +2307,7 @@ describe Braintree::Transaction do
2270
2307
  :number => Braintree::Test::CreditCardNumbers::MasterCard,
2271
2308
  :expiration_date => "12/12",
2272
2309
  },
2273
- :three_d_secure_authentication_id => three_d_secure_authentication_id
2310
+ :three_d_secure_authentication_id => three_d_secure_authentication_id,
2274
2311
  )
2275
2312
  result.success?.should == false
2276
2313
  result.errors.for(:transaction).on(:three_d_secure_authentication_id)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureTransactionPaymentMethodDoesntMatchThreeDSecureAuthenticationPaymentMethod
@@ -2280,7 +2317,7 @@ describe Braintree::Transaction do
2280
2317
  SpecHelper::ThreeDSecureMerchantAccountId,
2281
2318
  :number => Braintree::Test::CreditCardNumbers::Visa,
2282
2319
  :expiration_month => "12",
2283
- :expiration_year => "2012"
2320
+ :expiration_year => "2012",
2284
2321
  )
2285
2322
 
2286
2323
  result = Braintree::Transaction.create(
@@ -2291,7 +2328,7 @@ describe Braintree::Transaction do
2291
2328
  :number => Braintree::Test::CreditCardNumbers::MasterCard,
2292
2329
  :expiration_date => "12/12",
2293
2330
  },
2294
- :three_d_secure_authentication_id => three_d_secure_authentication_id
2331
+ :three_d_secure_authentication_id => three_d_secure_authentication_id,
2295
2332
  )
2296
2333
  result.success?.should == false
2297
2334
  result.errors.for(:transaction).on(:three_d_secure_authentication_id)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureTransactionPaymentMethodDoesntMatchThreeDSecureAuthenticationPaymentMethod
@@ -2301,7 +2338,7 @@ describe Braintree::Transaction do
2301
2338
  SpecHelper::ThreeDSecureMerchantAccountId,
2302
2339
  :number => Braintree::Test::CreditCardNumbers::Visa,
2303
2340
  :expiration_month => "12",
2304
- :expiration_year => "2012"
2341
+ :expiration_year => "2012",
2305
2342
  )
2306
2343
  result = Braintree::Transaction.create(
2307
2344
  :merchant_account_id => SpecHelper::ThreeDSecureMerchantAccountId,
@@ -2321,7 +2358,7 @@ describe Braintree::Transaction do
2321
2358
  :directory_response => "Y",
2322
2359
  :cavv_algorithm => "2",
2323
2360
  :ds_transaction_id => "some_ds_id",
2324
- }
2361
+ },
2325
2362
  )
2326
2363
  result.success?.should == false
2327
2364
  result.errors.for(:transaction).on(:three_d_secure_authentication_id)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureAuthenticationIdWithThreeDSecurePassThruIsInvalid
@@ -2334,7 +2371,7 @@ describe Braintree::Transaction do
2334
2371
  SpecHelper::ThreeDSecureMerchantAccountId,
2335
2372
  :number => Braintree::Test::CreditCardNumbers::Visa,
2336
2373
  :expiration_month => "12",
2337
- :expiration_year => "2012"
2374
+ :expiration_year => "2012",
2338
2375
  )
2339
2376
 
2340
2377
  result = Braintree::Transaction.create(
@@ -2345,7 +2382,7 @@ describe Braintree::Transaction do
2345
2382
  :number => Braintree::Test::CreditCardNumbers::Visa,
2346
2383
  :expiration_date => "12/12",
2347
2384
  },
2348
- :three_d_secure_token => three_d_secure_token
2385
+ :three_d_secure_token => three_d_secure_token,
2349
2386
  )
2350
2387
 
2351
2388
  result.success?.should == true
@@ -2360,7 +2397,7 @@ describe Braintree::Transaction do
2360
2397
  :number => Braintree::Test::CreditCardNumbers::Visa,
2361
2398
  :expiration_date => "12/12",
2362
2399
  },
2363
- :three_d_secure_token => nil
2400
+ :three_d_secure_token => nil,
2364
2401
  )
2365
2402
  result.success?.should == false
2366
2403
  result.errors.for(:transaction).on(:three_d_secure_token)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureTokenIsInvalid
@@ -2371,7 +2408,7 @@ describe Braintree::Transaction do
2371
2408
  SpecHelper::ThreeDSecureMerchantAccountId,
2372
2409
  :number => Braintree::Test::CreditCardNumbers::Visa,
2373
2410
  :expiration_month => "12",
2374
- :expiration_year => "2012"
2411
+ :expiration_year => "2012",
2375
2412
  )
2376
2413
 
2377
2414
  result = Braintree::Transaction.create(
@@ -2382,7 +2419,7 @@ describe Braintree::Transaction do
2382
2419
  :number => Braintree::Test::CreditCardNumbers::MasterCard,
2383
2420
  :expiration_date => "12/12",
2384
2421
  },
2385
- :three_d_secure_token => three_d_secure_token
2422
+ :three_d_secure_token => three_d_secure_token,
2386
2423
  )
2387
2424
  result.success?.should == false
2388
2425
  result.errors.for(:transaction).on(:three_d_secure_token)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureTransactionDataDoesntMatchVerify
@@ -2406,7 +2443,7 @@ describe Braintree::Transaction do
2406
2443
  :directory_response => "Y",
2407
2444
  :cavv_algorithm => "2",
2408
2445
  :ds_transaction_id => "some_ds_id",
2409
- }
2446
+ },
2410
2447
  )
2411
2448
 
2412
2449
  result.success?.should == true
@@ -2431,7 +2468,7 @@ describe Braintree::Transaction do
2431
2468
  :directory_response => "Y",
2432
2469
  :cavv_algorithm => "2",
2433
2470
  :ds_transaction_id => "some_ds_id",
2434
- }
2471
+ },
2435
2472
  )
2436
2473
  result.success?.should == false
2437
2474
  result.errors.for(:transaction).on(:merchant_account_id)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureMerchantAccountDoesNotSupportCardType
@@ -2449,7 +2486,7 @@ describe Braintree::Transaction do
2449
2486
  :eci_flag => "",
2450
2487
  :cavv => "some_cavv",
2451
2488
  :xid => "some_xid",
2452
- }
2489
+ },
2453
2490
  )
2454
2491
  result.success?.should == false
2455
2492
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:eci_flag)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureEciFlagIsRequired
@@ -2472,7 +2509,7 @@ describe Braintree::Transaction do
2472
2509
  :directory_response => "Y",
2473
2510
  :cavv_algorithm => "2",
2474
2511
  :ds_transaction_id => "some_ds_id",
2475
- }
2512
+ },
2476
2513
  )
2477
2514
  result.success?.should == false
2478
2515
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:cavv)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureCavvIsRequired
@@ -2495,7 +2532,7 @@ describe Braintree::Transaction do
2495
2532
  :directory_response => "Y",
2496
2533
  :cavv_algorithm => "2",
2497
2534
  :ds_transaction_id => "some_ds_id",
2498
- }
2535
+ },
2499
2536
  )
2500
2537
  result.success?.should == false
2501
2538
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:eci_flag)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureEciFlagIsInvalid
@@ -2518,7 +2555,7 @@ describe Braintree::Transaction do
2518
2555
  :directory_response => "Y",
2519
2556
  :cavv_algorithm => "2",
2520
2557
  :ds_transaction_id => "some_ds_id",
2521
- }
2558
+ },
2522
2559
  )
2523
2560
  result.success?.should == false
2524
2561
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:three_d_secure_version)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureThreeDSecureVersionIsInvalid
@@ -2542,7 +2579,7 @@ describe Braintree::Transaction do
2542
2579
  :directory_response => "Y",
2543
2580
  :cavv_algorithm => "2",
2544
2581
  :ds_transaction_id => "some_ds_id",
2545
- }
2582
+ },
2546
2583
  )
2547
2584
  result.success?.should == false
2548
2585
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:authentication_response)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureAuthenticationResponseIsInvalid
@@ -2566,7 +2603,7 @@ describe Braintree::Transaction do
2566
2603
  :directory_response => "abc",
2567
2604
  :cavv_algorithm => "2",
2568
2605
  :ds_transaction_id => "some_ds_id",
2569
- }
2606
+ },
2570
2607
  )
2571
2608
  result.success?.should == false
2572
2609
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:directory_response)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureDirectoryResponseIsInvalid
@@ -2590,7 +2627,7 @@ describe Braintree::Transaction do
2590
2627
  :directory_response => "Y",
2591
2628
  :cavv_algorithm => "bad_alg",
2592
2629
  :ds_transaction_id => "some_ds_id",
2593
- }
2630
+ },
2594
2631
  )
2595
2632
  result.success?.should == false
2596
2633
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:cavv_algorithm)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureCavvAlgorithmIsInvalid
@@ -2602,12 +2639,12 @@ describe Braintree::Transaction do
2602
2639
  it "can create a transaction" do
2603
2640
  payment_method_result = Braintree::PaymentMethod.create(
2604
2641
  :customer_id => Braintree::Customer.create.customer.id,
2605
- :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment
2642
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
2606
2643
  )
2607
2644
  result = Braintree::Transaction.create(
2608
2645
  :type => "sale",
2609
2646
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2610
- :payment_method_token => payment_method_result.payment_method.token
2647
+ :payment_method_token => payment_method_result.payment_method.token,
2611
2648
  )
2612
2649
 
2613
2650
  result.should be_success
@@ -2622,13 +2659,13 @@ describe Braintree::Transaction do
2622
2659
  payment_method_token = rand(36**3).to_s(36)
2623
2660
  nonce = nonce_for_paypal_account(
2624
2661
  :consent_code => "PAYPAL_CONSENT_CODE",
2625
- :token => payment_method_token
2662
+ :token => payment_method_token,
2626
2663
  )
2627
2664
 
2628
2665
  result = Braintree::Transaction.create(
2629
2666
  :type => "sale",
2630
2667
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2631
- :payment_method_nonce => nonce
2668
+ :payment_method_nonce => nonce,
2632
2669
  )
2633
2670
 
2634
2671
  result.should be_success
@@ -2644,14 +2681,14 @@ describe Braintree::Transaction do
2644
2681
  payment_method_token = rand(36**3).to_s(36)
2645
2682
  nonce = nonce_for_paypal_account(
2646
2683
  :consent_code => "PAYPAL_CONSENT_CODE",
2647
- :token => payment_method_token
2684
+ :token => payment_method_token,
2648
2685
  )
2649
2686
 
2650
2687
  result = Braintree::Transaction.create(
2651
2688
  :type => "sale",
2652
2689
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2653
2690
  :payment_method_nonce => nonce,
2654
- :options => {:store_in_vault => true}
2691
+ :options => {:store_in_vault => true},
2655
2692
  )
2656
2693
 
2657
2694
  result.success?.should == true
@@ -2670,7 +2707,7 @@ describe Braintree::Transaction do
2670
2707
  :type => "sale",
2671
2708
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2672
2709
  :payment_method_nonce => Braintree::Test::Nonce::PayPalBillingAgreement,
2673
- :options => {:store_in_vault => true}
2710
+ :options => {:store_in_vault => true},
2674
2711
  )
2675
2712
 
2676
2713
  result.should be_success
@@ -2685,7 +2722,7 @@ describe Braintree::Transaction do
2685
2722
  result = Braintree::Transaction.create(
2686
2723
  :type => "sale",
2687
2724
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2688
- :payment_method_nonce => Braintree::Test::Nonce::LocalPayment
2725
+ :payment_method_nonce => Braintree::Test::Nonce::LocalPayment,
2689
2726
  )
2690
2727
 
2691
2728
  result.should be_success
@@ -2703,7 +2740,7 @@ describe Braintree::Transaction do
2703
2740
  result = Braintree::Transaction.create(
2704
2741
  :type => "sale",
2705
2742
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2706
- :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment
2743
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
2707
2744
  )
2708
2745
 
2709
2746
  result.should be_success
@@ -2715,14 +2752,14 @@ describe Braintree::Transaction do
2715
2752
  payment_method_token = rand(36**3).to_s(36)
2716
2753
  nonce = nonce_for_paypal_account(
2717
2754
  :access_token => "PAYPAL_ACCESS_TOKEN",
2718
- :token => payment_method_token
2755
+ :token => payment_method_token,
2719
2756
  )
2720
2757
 
2721
2758
  result = Braintree::Transaction.create(
2722
2759
  :type => "sale",
2723
2760
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2724
2761
  :payment_method_nonce => nonce,
2725
- :options => {:store_in_vault => true}
2762
+ :options => {:store_in_vault => true},
2726
2763
  )
2727
2764
 
2728
2765
  result.success?.should == true
@@ -2742,7 +2779,7 @@ describe Braintree::Transaction do
2742
2779
  :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
2743
2780
  :options => {
2744
2781
  :submit_for_settlement => true
2745
- }
2782
+ },
2746
2783
  )
2747
2784
  result.success?.should == true
2748
2785
  result.transaction.status.should == Braintree::Transaction::Status::Settling
@@ -2753,7 +2790,7 @@ describe Braintree::Transaction do
2753
2790
  it "successfully voids a paypal transaction that's been authorized" do
2754
2791
  sale_transaction = Braintree::Transaction.sale!(
2755
2792
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2756
- :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment
2793
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
2757
2794
  )
2758
2795
 
2759
2796
  void_transaction = Braintree::Transaction.void!(sale_transaction.id)
@@ -2764,7 +2801,7 @@ describe Braintree::Transaction do
2764
2801
  it "fails to void a paypal transaction that's been declined" do
2765
2802
  sale_transaction = Braintree::Transaction.sale(
2766
2803
  :amount => Braintree::Test::TransactionAmounts::Decline,
2767
- :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment
2804
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
2768
2805
  ).transaction
2769
2806
 
2770
2807
  expect do
@@ -2834,6 +2871,19 @@ describe Braintree::Transaction do
2834
2871
  result.transaction.amount.should == transaction.amount/2
2835
2872
  end
2836
2873
 
2874
+ it "allows merchant_account_id to be passed for the refund" do
2875
+ transaction = create_transaction_to_refund
2876
+
2877
+ result = Braintree::Transaction.refund(
2878
+ transaction.id,
2879
+ :merchant_account_id => SpecHelper::NonDefaultMerchantAccountId,
2880
+ )
2881
+
2882
+ result.success?.should == true
2883
+ result.transaction.type.should == "credit"
2884
+ result.transaction.merchant_account_id.should == SpecHelper::NonDefaultMerchantAccountId
2885
+ end
2886
+
2837
2887
  it "does not allow arbitrary options to be passed" do
2838
2888
  transaction = create_paypal_transaction_for_refund
2839
2889
 
@@ -2852,7 +2902,7 @@ describe Braintree::Transaction do
2852
2902
  it "returns an error result if unsettled" do
2853
2903
  transaction = Braintree::Transaction.sale!(
2854
2904
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2855
- :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment
2905
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
2856
2906
  )
2857
2907
  result = Braintree::Transaction.refund(transaction.id)
2858
2908
  result.success?.should == false
@@ -2865,7 +2915,7 @@ describe Braintree::Transaction do
2865
2915
  :payment_method_nonce => Braintree::Test::Nonce::Transactable,
2866
2916
  :options => {
2867
2917
  :submit_for_settlement => true
2868
- }
2918
+ },
2869
2919
  )
2870
2920
  config = Braintree::Configuration.instantiate
2871
2921
  response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
@@ -2886,7 +2936,7 @@ describe Braintree::Transaction do
2886
2936
  :payment_method_nonce => Braintree::Test::Nonce::Transactable,
2887
2937
  :options => {
2888
2938
  :submit_for_settlement => true
2889
- }
2939
+ },
2890
2940
  )
2891
2941
  config = Braintree::Configuration.instantiate
2892
2942
  response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
@@ -2906,13 +2956,13 @@ describe Braintree::Transaction do
2906
2956
  it "handles bad unvalidated nonces" do
2907
2957
  nonce = nonce_for_paypal_account(
2908
2958
  :access_token => "PAYPAL_ACCESS_TOKEN",
2909
- :consent_code => "PAYPAL_CONSENT_CODE"
2959
+ :consent_code => "PAYPAL_CONSENT_CODE",
2910
2960
  )
2911
2961
 
2912
2962
  result = Braintree::Transaction.create(
2913
2963
  :type => "sale",
2914
2964
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2915
- :payment_method_nonce => nonce
2965
+ :payment_method_nonce => nonce,
2916
2966
  )
2917
2967
 
2918
2968
  result.should_not be_success
@@ -2923,7 +2973,7 @@ describe Braintree::Transaction do
2923
2973
  result = Braintree::Transaction.create(
2924
2974
  :type => "sale",
2925
2975
  :amount => Braintree::Test::TransactionAmounts::Authorize,
2926
- :payment_method_nonce => "NON_EXISTENT_NONCE"
2976
+ :payment_method_nonce => "NON_EXISTENT_NONCE",
2927
2977
  )
2928
2978
 
2929
2979
  result.should_not be_success
@@ -4051,7 +4101,7 @@ describe Braintree::Transaction do
4051
4101
  :unit_of_measure => "gallon",
4052
4102
  :total_amount => "10.1",
4053
4103
  },
4054
- ['Name #2'],
4104
+ ["Name #2"],
4055
4105
  {
4056
4106
  :quantity => "2.02",
4057
4107
  :name => "Name #3",
@@ -4237,7 +4287,7 @@ describe Braintree::Transaction do
4237
4287
  customer = Braintree::Customer.create!
4238
4288
  result = Braintree::PaymentMethod.create(
4239
4289
  :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
4240
- :customer_id => customer.id
4290
+ :customer_id => customer.id,
4241
4291
  )
4242
4292
  payment_method_token = result.payment_method.token
4243
4293
 
@@ -4270,7 +4320,7 @@ describe Braintree::Transaction do
4270
4320
  result.errors.for(:transaction).for(:external_vault).on(:status)[0].code.should == Braintree::ErrorCodes::Transaction::ExternalVault::StatusIsInvalid
4271
4321
  end
4272
4322
 
4273
- context "Visa/Mastercard/Discover" do
4323
+ context "Visa/Mastercard/Discover/AmEx" do
4274
4324
  it "accepts status" do
4275
4325
  result = Braintree::Transaction.create(
4276
4326
  :type => "sale",
@@ -4322,12 +4372,12 @@ describe Braintree::Transaction do
4322
4372
  end
4323
4373
  end
4324
4374
 
4325
- context "Non-(Visa/Mastercard/Discover) card types" do
4375
+ context "Non-(Visa/Mastercard/Discover/AmEx) card types" do
4326
4376
  it "accepts status" do
4327
4377
  result = Braintree::Transaction.create(
4328
4378
  :type => "sale",
4329
4379
  :credit_card => {
4330
- :number => Braintree::Test::CreditCardNumbers::AmExes[0],
4380
+ :number => Braintree::Test::CreditCardNumbers::JCBs[0],
4331
4381
  :expiration_date => "05/2009"
4332
4382
  },
4333
4383
  :external_vault => {
@@ -4336,14 +4386,14 @@ describe Braintree::Transaction do
4336
4386
  :amount => "10.00",
4337
4387
  )
4338
4388
  result.success?.should == true
4339
- result.transaction.network_transaction_id.should be_nil
4389
+ result.transaction.network_transaction_id.should_not be_nil
4340
4390
  end
4341
4391
 
4342
4392
  it "accepts blank previous_network_transaction_id" do
4343
4393
  result = Braintree::Transaction.create(
4344
4394
  :type => "sale",
4345
4395
  :credit_card => {
4346
- :number => Braintree::Test::CreditCardNumbers::AmExes[0],
4396
+ :number => Braintree::Test::CreditCardNumbers::JCBs[0],
4347
4397
  :expiration_date => "05/2009"
4348
4398
  },
4349
4399
  :external_vault => {
@@ -4353,27 +4403,9 @@ describe Braintree::Transaction do
4353
4403
  :amount => "10.00",
4354
4404
  )
4355
4405
  result.success?.should == true
4356
- result.transaction.network_transaction_id.should be_nil
4357
- end
4358
-
4359
- it "rejects previous_network_transaction_id" do
4360
- result = Braintree::Transaction.create(
4361
- :type => "sale",
4362
- :credit_card => {
4363
- :number => Braintree::Test::CreditCardNumbers::AmExes[0],
4364
- :expiration_date => "05/2009"
4365
- },
4366
- :external_vault => {
4367
- :status => Braintree::Transaction::ExternalVault::Status::Vaulted,
4368
- :previous_network_transaction_id => "123456789012345",
4369
- },
4370
- :amount => "10.00",
4371
- )
4372
- result.success?.should == false
4373
- result.errors.for(:transaction).for(:external_vault).on(:previous_network_transaction_id)[0].code.should == Braintree::ErrorCodes::Transaction::ExternalVault::CardTypeIsInvalid
4406
+ result.transaction.network_transaction_id.should_not be_nil
4374
4407
  end
4375
4408
  end
4376
-
4377
4409
  end
4378
4410
 
4379
4411
  context "account_type" do
@@ -4390,7 +4422,7 @@ describe Braintree::Transaction do
4390
4422
  :credit_card => {
4391
4423
  :account_type => "credit",
4392
4424
  }
4393
- }
4425
+ },
4394
4426
  )
4395
4427
  result.success?.should == true
4396
4428
  result.transaction.credit_card_details.account_type.should == "credit"
@@ -4409,7 +4441,7 @@ describe Braintree::Transaction do
4409
4441
  :credit_card => {
4410
4442
  :account_type => "credit",
4411
4443
  }
4412
- }
4444
+ },
4413
4445
  )
4414
4446
  result.success?.should == true
4415
4447
  result.transaction.credit_card_details.account_type.should == "credit"
@@ -4429,7 +4461,7 @@ describe Braintree::Transaction do
4429
4461
  :account_type => "debit",
4430
4462
  },
4431
4463
  :submit_for_settlement => true,
4432
- }
4464
+ },
4433
4465
  )
4434
4466
  result.success?.should == true
4435
4467
  result.transaction.credit_card_details.account_type.should == "debit"
@@ -4448,7 +4480,7 @@ describe Braintree::Transaction do
4448
4480
  :credit_card => {
4449
4481
  :account_type => "debit",
4450
4482
  },
4451
- }
4483
+ },
4452
4484
  )
4453
4485
  result.success?.should == false
4454
4486
  result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeDebitDoesNotSupportAuths
@@ -4467,7 +4499,7 @@ describe Braintree::Transaction do
4467
4499
  :credit_card => {
4468
4500
  :account_type => "ach",
4469
4501
  },
4470
- }
4502
+ },
4471
4503
  )
4472
4504
  result.success?.should == false
4473
4505
  result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeIsInvalid
@@ -4485,7 +4517,7 @@ describe Braintree::Transaction do
4485
4517
  :credit_card => {
4486
4518
  :account_type => "credit",
4487
4519
  },
4488
- }
4520
+ },
4489
4521
  )
4490
4522
  result.success?.should == false
4491
4523
  result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeNotSupported
@@ -4501,7 +4533,7 @@ describe Braintree::Transaction do
4501
4533
  :credit_card => {
4502
4534
  :number => Braintree::Test::CreditCardNumbers::Visa,
4503
4535
  :expiration_date => "05/2009"
4504
- }
4536
+ },
4505
4537
  )
4506
4538
  transaction.id.should =~ /^\w{6,}$/
4507
4539
  transaction.type.should == "sale"
@@ -4519,7 +4551,7 @@ describe Braintree::Transaction do
4519
4551
  :credit_card => {
4520
4552
  :number => Braintree::Test::CreditCardNumbers::Visa,
4521
4553
  :expiration_date => "05/2009"
4522
- }
4554
+ },
4523
4555
  )
4524
4556
  end.to raise_error(Braintree::ValidationsFailed)
4525
4557
  end
@@ -4575,7 +4607,7 @@ describe Braintree::Transaction do
4575
4607
  :credit_card => {
4576
4608
  :number => Braintree::Test::CreditCardNumbers::Visa,
4577
4609
  :expiration_date => "05/2009"
4578
- }
4610
+ },
4579
4611
  )
4580
4612
  result = Braintree::Transaction.refund(transaction.id)
4581
4613
  result.success?.should == false
@@ -4612,7 +4644,7 @@ describe Braintree::Transaction do
4612
4644
  :credit_card => {
4613
4645
  :number => Braintree::Test::CreditCardNumbers::Visa,
4614
4646
  :expiration_date => "05/2009"
4615
- }
4647
+ },
4616
4648
  )
4617
4649
  result.success?.should == true
4618
4650
  result.transaction.id.should =~ /^\w{6,}$/
@@ -4668,7 +4700,7 @@ describe Braintree::Transaction do
4668
4700
  :postal_code => "60103",
4669
4701
  :country_name => "United States of America",
4670
4702
  :shipping_method => Braintree::Transaction::AddressDetails::ShippingMethod::Electronic
4671
- }
4703
+ },
4672
4704
  )
4673
4705
  result.success?.should == true
4674
4706
  transaction = result.transaction
@@ -4732,7 +4764,7 @@ describe Braintree::Transaction do
4732
4764
  :credit_card => {
4733
4765
  :number => Braintree::Test::CreditCardNumbers::Visa,
4734
4766
  :expiration_date => "05/2009"
4735
- }
4767
+ },
4736
4768
  )
4737
4769
  result.success?.should == true
4738
4770
  result.transaction.merchant_account_id.should == SpecHelper::NonDefaultMerchantAccountId
@@ -4744,7 +4776,7 @@ describe Braintree::Transaction do
4744
4776
  :credit_card => {
4745
4777
  :number => Braintree::Test::CreditCardNumbers::Visa,
4746
4778
  :expiration_date => "05/2009"
4747
- }
4779
+ },
4748
4780
  )
4749
4781
  result.success?.should == true
4750
4782
  result.transaction.merchant_account_id.should == SpecHelper::DefaultMerchantAccountId
@@ -4763,7 +4795,7 @@ describe Braintree::Transaction do
4763
4795
  },
4764
4796
  :options => {
4765
4797
  :store_in_vault => true
4766
- }
4798
+ },
4767
4799
  )
4768
4800
  result.success?.should == true
4769
4801
  transaction = result.transaction
@@ -4798,7 +4830,7 @@ describe Braintree::Transaction do
4798
4830
  :options => {
4799
4831
  :store_in_vault => true,
4800
4832
  :add_billing_address_to_payment_method => true,
4801
- }
4833
+ },
4802
4834
  )
4803
4835
  result.success?.should == true
4804
4836
  transaction = result.transaction
@@ -4843,7 +4875,7 @@ describe Braintree::Transaction do
4843
4875
  :options => {
4844
4876
  :store_in_vault => true,
4845
4877
  :store_shipping_address_in_vault => true,
4846
- }
4878
+ },
4847
4879
  )
4848
4880
  result.success?.should == true
4849
4881
  transaction = result.transaction
@@ -4869,7 +4901,7 @@ describe Braintree::Transaction do
4869
4901
  :number => "5105105105105100",
4870
4902
  :expiration_date => "05/2012"
4871
4903
  },
4872
- :options => { :store_in_vault => true }
4904
+ :options => {:store_in_vault => true},
4873
4905
  )
4874
4906
 
4875
4907
  result.success?.should == true
@@ -4887,7 +4919,7 @@ describe Braintree::Transaction do
4887
4919
  },
4888
4920
  :options => {
4889
4921
  :submit_for_settlement => true
4890
- }
4922
+ },
4891
4923
  )
4892
4924
  result.success?.should == true
4893
4925
  result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
@@ -4910,7 +4942,7 @@ describe Braintree::Transaction do
4910
4942
  },
4911
4943
  :options => {
4912
4944
  :store_in_vault => true
4913
- }
4945
+ },
4914
4946
  )
4915
4947
  result.success?.should == true
4916
4948
  transaction = result.transaction
@@ -4925,20 +4957,20 @@ describe Braintree::Transaction do
4925
4957
  :credit_card => {
4926
4958
  :number => Braintree::Test::CreditCardNumbers::Visa,
4927
4959
  :expiration_date => "05/2010"
4928
- }
4960
+ },
4929
4961
  )
4930
4962
  address = Braintree::Address.create!(
4931
4963
  :customer_id => customer.id,
4932
- :street_address => '123 Fake St.'
4964
+ :street_address => "123 Fake St.",
4933
4965
  )
4934
4966
  result = Braintree::Transaction.sale(
4935
4967
  :amount => "100",
4936
4968
  :customer_id => customer.id,
4937
- :shipping_address_id => address.id
4969
+ :shipping_address_id => address.id,
4938
4970
  )
4939
4971
  result.success?.should == true
4940
4972
  transaction = result.transaction
4941
- transaction.shipping_details.street_address.should == '123 Fake St.'
4973
+ transaction.shipping_details.street_address.should == "123 Fake St."
4942
4974
  transaction.customer_details.id.should == customer.id
4943
4975
  transaction.shipping_details.id.should == address.id
4944
4976
  end
@@ -4955,12 +4987,79 @@ describe Braintree::Transaction do
4955
4987
  }
4956
4988
  result = Braintree::Transaction.sale(params[:transaction])
4957
4989
  result.success?.should == false
4958
- result.params.should == {:transaction => {:type => 'sale', :amount => nil, :credit_card => {:expiration_date => "05/2009"}}}
4990
+ result.params.should == {:transaction => {:type => "sale", :amount => nil, :credit_card => {:expiration_date => "05/2009"}}}
4959
4991
  result.errors.for(:transaction).on(:amount)[0].code.should == Braintree::ErrorCodes::Transaction::AmountIsRequired
4960
4992
  end
4961
4993
 
4994
+ it "validates currency_iso_code and creates transaction" do
4995
+ params = {
4996
+ :transaction => {
4997
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
4998
+ :currency_iso_code => "USD",
4999
+ :credit_card => {
5000
+ :number => Braintree::Test::CreditCardNumbers::Visa,
5001
+ :expiration_date => "05/2009"
5002
+ }
5003
+ }
5004
+ }
5005
+ result = Braintree::Transaction.sale(params[:transaction])
5006
+ result.success?.should == true
5007
+ result.transaction.currency_iso_code == "USD"
5008
+ end
5009
+
5010
+ it "validates currency_iso_code and returns error" do
5011
+ params = {
5012
+ :transaction => {
5013
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
5014
+ :currency_iso_code => "CAD",
5015
+ :credit_card => {
5016
+ :number => Braintree::Test::CreditCardNumbers::Visa,
5017
+ :expiration_date => "05/2009"
5018
+ }
5019
+ }
5020
+ }
5021
+ result = Braintree::Transaction.sale(params[:transaction])
5022
+ result.success?.should == false
5023
+ result.errors.for(:transaction).on(:currency_iso_code)[0].code.should == Braintree::ErrorCodes::Transaction::CurrencyCodeNotSupportedByMerchantAccount
5024
+ end
5025
+
5026
+ it "validates currency_iso_code and creates transaction with specified merchant account" do
5027
+ params = {
5028
+ :transaction => {
5029
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
5030
+ :merchant_account_id => SpecHelper::NonDefaultMerchantAccountId,
5031
+ :currency_iso_code => "USD",
5032
+ :credit_card => {
5033
+ :number => Braintree::Test::CreditCardNumbers::Visa,
5034
+ :expiration_date => "05/2009"
5035
+ }
5036
+ }
5037
+ }
5038
+ result = Braintree::Transaction.sale(params[:transaction])
5039
+ result.success?.should == true
5040
+ result.transaction.currency_iso_code == "USD"
5041
+ result.transaction.merchant_account_id == SpecHelper::NonDefaultMerchantAccountId
5042
+ end
5043
+
5044
+ it "validates currency_iso_code and returns error with specified merchant account" do
5045
+ params = {
5046
+ :transaction => {
5047
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
5048
+ :merchant_account_id => SpecHelper::NonDefaultMerchantAccountId,
5049
+ :currency_iso_code => "CAD",
5050
+ :credit_card => {
5051
+ :number => Braintree::Test::CreditCardNumbers::Visa,
5052
+ :expiration_date => "05/2009"
5053
+ }
5054
+ }
5055
+ }
5056
+ result = Braintree::Transaction.sale(params[:transaction])
5057
+ result.success?.should == false
5058
+ result.errors.for(:transaction).on(:currency_iso_code)[0].code.should == Braintree::ErrorCodes::Transaction::CurrencyCodeNotSupportedByMerchantAccount
5059
+ end
5060
+
4962
5061
  it "skips advanced fraud checking if transaction[options][skip_advanced_fraud_checking] is set to true" do
4963
- with_advanced_fraud_integration_merchant do
5062
+ with_advanced_fraud_kount_integration_merchant do
4964
5063
  result = Braintree::Transaction.sale(
4965
5064
  :amount => Braintree::Test::TransactionAmounts::Authorize,
4966
5065
  :credit_card => {
@@ -4969,7 +5068,7 @@ describe Braintree::Transaction do
4969
5068
  },
4970
5069
  :options => {
4971
5070
  :skip_advanced_fraud_checking => true
4972
- }
5071
+ },
4973
5072
  )
4974
5073
  result.success?.should == true
4975
5074
  result.transaction.risk_data.should be_nil
@@ -5063,7 +5162,7 @@ describe Braintree::Transaction do
5063
5162
  :currency_amount => "10.00",
5064
5163
  :currency_iso_code => "USD"
5065
5164
  }
5066
- }
5165
+ },
5067
5166
  )
5068
5167
  result.success?.should == true
5069
5168
  result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
@@ -5085,7 +5184,7 @@ describe Braintree::Transaction do
5085
5184
  :currency_amount => "10.00",
5086
5185
  :currency_iso_code => "USD"
5087
5186
  }
5088
- }
5187
+ },
5089
5188
  )
5090
5189
  result.success?.should == true
5091
5190
  result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
@@ -5107,7 +5206,7 @@ describe Braintree::Transaction do
5107
5206
  :currency_amount => "10.00",
5108
5207
  :currency_iso_code => "USD"
5109
5208
  }
5110
- }
5209
+ },
5111
5210
  )
5112
5211
  result.success?.should == true
5113
5212
  result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
@@ -5130,7 +5229,7 @@ describe Braintree::Transaction do
5130
5229
  :currency_amount => "10.00",
5131
5230
  :currency_iso_code => "USD"
5132
5231
  }
5133
- }
5232
+ },
5134
5233
  )
5135
5234
  result.success?.should == true
5136
5235
 
@@ -5154,7 +5253,7 @@ describe Braintree::Transaction do
5154
5253
  :currency_amount => "10.00",
5155
5254
  :currency_iso_code => "USD"
5156
5255
  }
5157
- }
5256
+ },
5158
5257
  )
5159
5258
  result.success?.should == true
5160
5259
  result.transaction.status.should == Braintree::Transaction::Status::Authorized
@@ -5179,7 +5278,7 @@ describe Braintree::Transaction do
5179
5278
  :currency_amount => "10.00",
5180
5279
  :currency_iso_code => "USD"
5181
5280
  }
5182
- }
5281
+ },
5183
5282
  )
5184
5283
  result.success?.should == true
5185
5284
  result.transaction.status.should == Braintree::Transaction::Status::Authorized
@@ -5199,7 +5298,7 @@ describe Braintree::Transaction do
5199
5298
  :credit_card => {
5200
5299
  :number => Braintree::Test::CreditCardNumbers::Visa,
5201
5300
  :expiration_date => "05/2009"
5202
- }
5301
+ },
5203
5302
  )
5204
5303
  transaction.id.should =~ /^\w{6,}$/
5205
5304
  transaction.type.should == "sale"
@@ -5216,7 +5315,7 @@ describe Braintree::Transaction do
5216
5315
  :credit_card => {
5217
5316
  :number => Braintree::Test::CreditCardNumbers::Visa,
5218
5317
  :expiration_date => "05/2009"
5219
- }
5318
+ },
5220
5319
  )
5221
5320
  end.to raise_error(Braintree::ValidationsFailed)
5222
5321
  end
@@ -5229,7 +5328,7 @@ describe Braintree::Transaction do
5229
5328
  :credit_card => {
5230
5329
  :number => Braintree::Test::CreditCardNumbers::Visa,
5231
5330
  :expiration_date => "06/2009"
5232
- }
5331
+ },
5233
5332
  )
5234
5333
  result = Braintree::Transaction.submit_for_settlement(transaction.id)
5235
5334
  result.success?.should == true
@@ -5241,7 +5340,7 @@ describe Braintree::Transaction do
5241
5340
  :credit_card => {
5242
5341
  :number => Braintree::Test::CreditCardNumbers::Visa,
5243
5342
  :expiration_date => "06/2009"
5244
- }
5343
+ },
5245
5344
  )
5246
5345
  transaction.amount.should == BigDecimal("1000.00")
5247
5346
  result = Braintree::Transaction.submit_for_settlement(transaction.id, "999.99")
@@ -5257,9 +5356,9 @@ describe Braintree::Transaction do
5257
5356
  :credit_card => {
5258
5357
  :number => Braintree::Test::CreditCardNumbers::Visa,
5259
5358
  :expiration_date => "06/2009"
5260
- }
5359
+ },
5261
5360
  )
5262
- options = { :order_id => "ABC123" }
5361
+ options = {:order_id => "ABC123"}
5263
5362
  result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
5264
5363
  result.success?.should == true
5265
5364
  result.transaction.order_id.should == "ABC123"
@@ -5272,13 +5371,13 @@ describe Braintree::Transaction do
5272
5371
  :credit_card => {
5273
5372
  :number => Braintree::Test::CreditCardNumbers::Visa,
5274
5373
  :expiration_date => "06/2009"
5275
- }
5374
+ },
5276
5375
  )
5277
5376
 
5278
5377
  options = {
5279
5378
  :descriptor => {
5280
- :name => '123*123456789012345678',
5281
- :phone => '3334445555',
5379
+ :name => "123*123456789012345678",
5380
+ :phone => "3334445555",
5282
5381
  :url => "ebay.com"
5283
5382
  }
5284
5383
  }
@@ -5286,9 +5385,9 @@ describe Braintree::Transaction do
5286
5385
  result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
5287
5386
  result.success?.should == true
5288
5387
  result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
5289
- result.transaction.descriptor.name.should == '123*123456789012345678'
5290
- result.transaction.descriptor.phone.should == '3334445555'
5291
- result.transaction.descriptor.url.should == 'ebay.com'
5388
+ result.transaction.descriptor.name.should == "123*123456789012345678"
5389
+ result.transaction.descriptor.phone.should == "3334445555"
5390
+ result.transaction.descriptor.url.should == "ebay.com"
5292
5391
  end
5293
5392
 
5294
5393
  it "raises an error if an invalid option is passed in" do
@@ -5297,10 +5396,10 @@ describe Braintree::Transaction do
5297
5396
  :credit_card => {
5298
5397
  :number => Braintree::Test::CreditCardNumbers::Visa,
5299
5398
  :expiration_date => "06/2009"
5300
- }
5399
+ },
5301
5400
  )
5302
5401
 
5303
- options = { :order_id => "ABC123", :invalid_option => "i'm invalid" }
5402
+ options = {:order_id => "ABC123", :invalid_option => "i'm invalid"}
5304
5403
 
5305
5404
  expect do
5306
5405
  Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
@@ -5310,10 +5409,11 @@ describe Braintree::Transaction do
5310
5409
  it "returns an error result if settlement is too large" do
5311
5410
  transaction = Braintree::Transaction.sale!(
5312
5411
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5412
+ :merchant_account_id => SpecHelper::CardProcessorBRLMerchantAccountId,
5313
5413
  :credit_card => {
5314
5414
  :number => Braintree::Test::CreditCardNumbers::Visa,
5315
5415
  :expiration_date => "06/2009"
5316
- }
5416
+ },
5317
5417
  )
5318
5418
  transaction.amount.should == BigDecimal("1000.00")
5319
5419
  result = Braintree::Transaction.submit_for_settlement(transaction.id, "1000.01")
@@ -5328,7 +5428,7 @@ describe Braintree::Transaction do
5328
5428
  :credit_card => {
5329
5429
  :number => Braintree::Test::CreditCardNumbers::Visa,
5330
5430
  :expiration_date => "06/2009"
5331
- }
5431
+ },
5332
5432
  ).transaction
5333
5433
  result = Braintree::Transaction.submit_for_settlement(transaction.id)
5334
5434
  result.success?.should == false
@@ -5345,7 +5445,7 @@ describe Braintree::Transaction do
5345
5445
  :number => Braintree::Test::CreditCardNumbers::Visa,
5346
5446
  :expiration_date => "06/2009"
5347
5447
  },
5348
- :service_fee_amount => "1.00"
5448
+ :service_fee_amount => "1.00",
5349
5449
  ).transaction
5350
5450
  result = Braintree::Transaction.submit_for_settlement(transaction.id, "0.01")
5351
5451
  result.success?.should == false
@@ -5368,7 +5468,7 @@ describe Braintree::Transaction do
5368
5468
  :currency_amount => "10.00",
5369
5469
  :currency_iso_code => "USD"
5370
5470
  }
5371
- }
5471
+ },
5372
5472
  )
5373
5473
  result.success?.should == true
5374
5474
 
@@ -5392,7 +5492,7 @@ describe Braintree::Transaction do
5392
5492
  :currency_amount => "10.00",
5393
5493
  :currency_iso_code => "USD"
5394
5494
  }
5395
- }
5495
+ },
5396
5496
  )
5397
5497
  result.success?.should == true
5398
5498
 
@@ -5412,7 +5512,7 @@ describe Braintree::Transaction do
5412
5512
  :discount_amount => "12.00",
5413
5513
  :tax_amount => "0",
5414
5514
  },
5415
- ]
5515
+ ],
5416
5516
  )
5417
5517
  result.success?.should == true
5418
5518
  result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
@@ -5426,9 +5526,9 @@ describe Braintree::Transaction do
5426
5526
  :credit_card => {
5427
5527
  :number => Braintree::Test::CreditCardNumbers::Visa,
5428
5528
  :expiration_date => "06/2009"
5429
- }
5529
+ },
5430
5530
  )
5431
- options = { :order_id => "ABC123" }
5531
+ options = {:order_id => "ABC123"}
5432
5532
  transaction = Braintree::Transaction.submit_for_settlement!(original_transaction.id, "0.01", options)
5433
5533
  transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
5434
5534
  transaction.id.should == original_transaction.id
@@ -5438,10 +5538,11 @@ describe Braintree::Transaction do
5438
5538
  it "raises a ValidationsFailed if unsuccessful" do
5439
5539
  transaction = Braintree::Transaction.sale!(
5440
5540
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5541
+ :merchant_account_id => SpecHelper::CardProcessorBRLMerchantAccountId,
5441
5542
  :credit_card => {
5442
5543
  :number => Braintree::Test::CreditCardNumbers::Visa,
5443
5544
  :expiration_date => "06/2009"
5444
- }
5545
+ },
5445
5546
  )
5446
5547
  transaction.amount.should == BigDecimal("1000.00")
5447
5548
  expect do
@@ -5457,18 +5558,18 @@ describe Braintree::Transaction do
5457
5558
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5458
5559
  :merchant_account_id => SpecHelper::DefaultMerchantAccountId,
5459
5560
  :descriptor => {
5460
- :name => '123*123456789012345678',
5461
- :phone => '3334445555',
5561
+ :name => "123*123456789012345678",
5562
+ :phone => "3334445555",
5462
5563
  :url => "ebay.com"
5463
5564
  },
5464
- :order_id => '123',
5565
+ :order_id => "123",
5465
5566
  :credit_card => {
5466
5567
  :number => Braintree::Test::CreditCardNumbers::Visa,
5467
5568
  :expiration_date => "06/2009"
5468
5569
  },
5469
5570
  :options => {
5470
5571
  :submit_for_settlement => true
5471
- }
5572
+ },
5472
5573
  )
5473
5574
  end
5474
5575
 
@@ -5476,16 +5577,16 @@ describe Braintree::Transaction do
5476
5577
  result = Braintree::Transaction.update_details(transaction.id, {
5477
5578
  :amount => Braintree::Test::TransactionAmounts::Authorize.to_f - 1,
5478
5579
  :descriptor => {
5479
- :name => '456*123456789012345678',
5480
- :phone => '3334445555',
5580
+ :name => "456*123456789012345678",
5581
+ :phone => "3334445555",
5481
5582
  :url => "ebay.com",
5482
5583
  },
5483
- :order_id => '456'
5584
+ :order_id => "456"
5484
5585
  })
5485
5586
  result.success?.should == true
5486
5587
  result.transaction.amount.should == BigDecimal(Braintree::Test::TransactionAmounts::Authorize) - 1
5487
- result.transaction.order_id.should == '456'
5488
- result.transaction.descriptor.name.should == '456*123456789012345678'
5588
+ result.transaction.order_id.should == "456"
5589
+ result.transaction.descriptor.name.should == "456*123456789012345678"
5489
5590
  end
5490
5591
 
5491
5592
  it "raises an error when a key is invalid" do
@@ -5493,11 +5594,11 @@ describe Braintree::Transaction do
5493
5594
  Braintree::Transaction.update_details(transaction.id, {
5494
5595
  :invalid_key => Braintree::Test::TransactionAmounts::Authorize.to_f - 1,
5495
5596
  :descriptor => {
5496
- :name => '456*123456789012345678',
5497
- :phone => '3334445555',
5597
+ :name => "456*123456789012345678",
5598
+ :phone => "3334445555",
5498
5599
  :url => "ebay.com",
5499
5600
  },
5500
- :order_id => '456'
5601
+ :order_id => "456"
5501
5602
  })
5502
5603
  end.to raise_error(ArgumentError)
5503
5604
  end
@@ -5507,11 +5608,11 @@ describe Braintree::Transaction do
5507
5608
  result = Braintree::Transaction.update_details(transaction.id, {
5508
5609
  :amount => "10000",
5509
5610
  :descriptor => {
5510
- :name => '456*123456789012345678',
5511
- :phone => '3334445555',
5611
+ :name => "456*123456789012345678",
5612
+ :phone => "3334445555",
5512
5613
  :url => "ebay.com",
5513
5614
  },
5514
- :order_id => '456'
5615
+ :order_id => "456"
5515
5616
  })
5516
5617
  result.success?.should == false
5517
5618
  result.errors.for(:transaction).on(:amount)[0].code.should == Braintree::ErrorCodes::Transaction::SettlementAmountIsTooLarge
@@ -5521,11 +5622,11 @@ describe Braintree::Transaction do
5521
5622
  result = Braintree::Transaction.update_details(transaction.id, {
5522
5623
  :amount => Braintree::Test::TransactionAmounts::Authorize.to_f - 1,
5523
5624
  :descriptor => {
5524
- :name => 'invalid descriptor name',
5525
- :phone => 'invalid phone',
5526
- :url => '12345678901234'
5625
+ :name => "invalid descriptor name",
5626
+ :phone => "invalid phone",
5627
+ :url => "12345678901234"
5527
5628
  },
5528
- :order_id => '456'
5629
+ :order_id => "456"
5529
5630
  })
5530
5631
  result.success?.should == false
5531
5632
  result.errors.for(:transaction).for(:descriptor).on(:name)[0].code.should == Braintree::ErrorCodes::Descriptor::NameFormatIsInvalid
@@ -5537,11 +5638,11 @@ describe Braintree::Transaction do
5537
5638
  result = Braintree::Transaction.update_details(transaction.id, {
5538
5639
  :amount => Braintree::Test::TransactionAmounts::Authorize.to_f - 1,
5539
5640
  :descriptor => {
5540
- :name => '456*123456789012345678',
5541
- :phone => '3334445555',
5641
+ :name => "456*123456789012345678",
5642
+ :phone => "3334445555",
5542
5643
  :url => "ebay.com",
5543
5644
  },
5544
- :order_id => 'x' * 256
5645
+ :order_id => "x" * 256
5545
5646
  })
5546
5647
  result.success?.should == false
5547
5648
  result.errors.for(:transaction).on(:order_id)[0].code.should == Braintree::ErrorCodes::Transaction::OrderIdIsTooLong
@@ -5552,27 +5653,27 @@ describe Braintree::Transaction do
5552
5653
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5553
5654
  :merchant_account_id => SpecHelper::FakeAmexDirectMerchantAccountId,
5554
5655
  :descriptor => {
5555
- :name => '123*123456789012345678',
5556
- :phone => '3334445555',
5656
+ :name => "123*123456789012345678",
5657
+ :phone => "3334445555",
5557
5658
  :url => "ebay.com"
5558
5659
  },
5559
- :order_id => '123',
5660
+ :order_id => "123",
5560
5661
  :credit_card => {
5561
5662
  :number => Braintree::Test::CreditCardNumbers::AmexPayWithPoints::Success,
5562
5663
  :expiration_date => "05/2009"
5563
5664
  },
5564
5665
  :options => {
5565
5666
  :submit_for_settlement => true
5566
- }
5667
+ },
5567
5668
  )
5568
5669
  result = Braintree::Transaction.update_details(transaction.id, {
5569
5670
  :amount => Braintree::Test::TransactionAmounts::Authorize.to_f - 1,
5570
5671
  :descriptor => {
5571
- :name => '456*123456789012345678',
5572
- :phone => '3334445555',
5672
+ :name => "456*123456789012345678",
5673
+ :phone => "3334445555",
5573
5674
  :url => "ebay.com",
5574
5675
  },
5575
- :order_id => '456'
5676
+ :order_id => "456"
5576
5677
  })
5577
5678
  result.success?.should == false
5578
5679
  result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::ProcessorDoesNotSupportUpdatingTransactionDetails
@@ -5586,24 +5687,24 @@ describe Braintree::Transaction do
5586
5687
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5587
5688
  :merchant_account_id => SpecHelper::DefaultMerchantAccountId,
5588
5689
  :descriptor => {
5589
- :name => '123*123456789012345678',
5590
- :phone => '3334445555',
5690
+ :name => "123*123456789012345678",
5691
+ :phone => "3334445555",
5591
5692
  :url => "ebay.com"
5592
5693
  },
5593
- :order_id => '123',
5694
+ :order_id => "123",
5594
5695
  :credit_card => {
5595
5696
  :number => Braintree::Test::CreditCardNumbers::Visa,
5596
5697
  :expiration_date => "06/2009"
5597
- }
5698
+ },
5598
5699
  )
5599
5700
  result = Braintree::Transaction.update_details(transaction.id, {
5600
5701
  :amount => Braintree::Test::TransactionAmounts::Authorize.to_f - 1,
5601
5702
  :descriptor => {
5602
- :name => '456*123456789012345678',
5603
- :phone => '3334445555',
5703
+ :name => "456*123456789012345678",
5704
+ :phone => "3334445555",
5604
5705
  :url => "ebay.com",
5605
5706
  },
5606
- :order_id => '456'
5707
+ :order_id => "456"
5607
5708
  })
5608
5709
  result.success?.should == false
5609
5710
  result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::CannotUpdateTransactionDetailsNotSubmittedForSettlement
@@ -5620,7 +5721,7 @@ describe Braintree::Transaction do
5620
5721
  :credit_card => {
5621
5722
  :number => Braintree::Test::CreditCardNumbers::Visa,
5622
5723
  :expiration_date => "06/2009"
5623
- }
5724
+ },
5624
5725
  )
5625
5726
 
5626
5727
  result = Braintree::Transaction.submit_for_partial_settlement(authorized_transaction.id, 100)
@@ -5655,7 +5756,7 @@ describe Braintree::Transaction do
5655
5756
  :credit_card => {
5656
5757
  :number => Braintree::Test::CreditCardNumbers::Visa,
5657
5758
  :expiration_date => "05/2009"
5658
- }
5759
+ },
5659
5760
  )
5660
5761
 
5661
5762
  result = Braintree::Transaction.submit_for_partial_settlement(authorized_transaction.id, 100, :order_id => 1234)
@@ -5671,7 +5772,7 @@ describe Braintree::Transaction do
5671
5772
  :credit_card => {
5672
5773
  :number => Braintree::Test::CreditCardNumbers::Visa,
5673
5774
  :expiration_date => "05/2009"
5674
- }
5775
+ },
5675
5776
  )
5676
5777
 
5677
5778
  result = Braintree::Transaction.submit_for_partial_settlement(authorized_transaction.id, 100, :order_id => "1"*256)
@@ -5686,13 +5787,13 @@ describe Braintree::Transaction do
5686
5787
  :credit_card => {
5687
5788
  :number => Braintree::Test::CreditCardNumbers::Visa,
5688
5789
  :expiration_date => "05/2009"
5689
- }
5790
+ },
5690
5791
  )
5691
5792
 
5692
5793
  result = Braintree::Transaction.submit_for_partial_settlement(
5693
5794
  authorized_transaction.id,
5694
5795
  100,
5695
- :descriptor => { :name => "123*123456789012345678", :phone => "5555551234", :url => "url.com" }
5796
+ :descriptor => {:name => "123*123456789012345678", :phone => "5555551234", :url => "url.com"},
5696
5797
  )
5697
5798
  result.success?.should == true
5698
5799
  partial_settlement_transaction = result.transaction
@@ -5708,7 +5809,7 @@ describe Braintree::Transaction do
5708
5809
  :credit_card => {
5709
5810
  :number => Braintree::Test::CreditCardNumbers::Visa,
5710
5811
  :expiration_date => "05/2009"
5711
- }
5812
+ },
5712
5813
  )
5713
5814
 
5714
5815
  result = Braintree::Transaction.submit_for_partial_settlement(
@@ -5716,9 +5817,9 @@ describe Braintree::Transaction do
5716
5817
  100,
5717
5818
  :descriptor => {
5718
5819
  :name => "invalid_format",
5719
- :phone => '%bad4445555',
5720
- :url => '12345678901234'
5721
- }
5820
+ :phone => "%bad4445555",
5821
+ :url => "12345678901234"
5822
+ },
5722
5823
  )
5723
5824
  result.success?.should == false
5724
5825
  result.errors.for(:transaction).for(:descriptor).on(:name)[0].code.should == Braintree::ErrorCodes::Descriptor::NameFormatIsInvalid
@@ -5733,7 +5834,7 @@ describe Braintree::Transaction do
5733
5834
  :credit_card => {
5734
5835
  :number => Braintree::Test::CreditCardNumbers::AmexPayWithPoints::Success,
5735
5836
  :expiration_date => "05/2009"
5736
- }
5837
+ },
5737
5838
  )
5738
5839
 
5739
5840
  result = Braintree::Transaction.submit_for_partial_settlement(authorized_transaction.id, 100)
@@ -5745,7 +5846,7 @@ describe Braintree::Transaction do
5745
5846
  authorized_transaction = Braintree::Transaction.sale!(
5746
5847
  :amount => Braintree::Test::TransactionAmounts::Authorize,
5747
5848
  :merchant_account_id => SpecHelper::FakeVenmoAccountMerchantAccountId,
5748
- :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount
5849
+ :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount,
5749
5850
  )
5750
5851
 
5751
5852
  result = Braintree::Transaction.submit_for_partial_settlement(authorized_transaction.id, 100)
@@ -5760,7 +5861,7 @@ describe Braintree::Transaction do
5760
5861
  :credit_card => {
5761
5862
  :number => Braintree::Test::CreditCardNumbers::Visa,
5762
5863
  :expiration_date => "06/2009"
5763
- }
5864
+ },
5764
5865
  )
5765
5866
 
5766
5867
  result = Braintree::Transaction.submit_for_partial_settlement(authorized_transaction.id, 100)
@@ -5778,7 +5879,7 @@ describe Braintree::Transaction do
5778
5879
  :credit_card => {
5779
5880
  :number => Braintree::Test::CreditCardNumbers::Visa,
5780
5881
  :expiration_date => "06/2009"
5781
- }
5882
+ },
5782
5883
  )
5783
5884
 
5784
5885
  result = Braintree::Transaction.void(authorized_transaction.id)
@@ -5797,9 +5898,9 @@ describe Braintree::Transaction do
5797
5898
  :credit_card => {
5798
5899
  :number => Braintree::Test::CreditCardNumbers::Visa,
5799
5900
  :expiration_date => "06/2009"
5800
- }
5901
+ },
5801
5902
  )
5802
- options = { :order_id => "ABC123" }
5903
+ options = {:order_id => "ABC123"}
5803
5904
  transaction = Braintree::Transaction.submit_for_partial_settlement!(original_transaction.id, "0.01", options)
5804
5905
  transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
5805
5906
  transaction.order_id.should == options[:order_id]
@@ -5811,7 +5912,7 @@ describe Braintree::Transaction do
5811
5912
  :credit_card => {
5812
5913
  :number => Braintree::Test::CreditCardNumbers::Visa,
5813
5914
  :expiration_date => "06/2009"
5814
- }
5915
+ },
5815
5916
  )
5816
5917
  transaction.amount.should == BigDecimal("1000.00")
5817
5918
  expect do
@@ -5836,7 +5937,7 @@ describe Braintree::Transaction do
5836
5937
  :number => Braintree::Test::CreditCardNumbers::Visa,
5837
5938
  :expiration_date => "05/2009"
5838
5939
  },
5839
- :service_fee_amount => '1.00'
5940
+ :service_fee_amount => "1.00",
5840
5941
  )
5841
5942
 
5842
5943
  transaction.escrow_status.should be_nil
@@ -5862,7 +5963,7 @@ describe Braintree::Transaction do
5862
5963
  :number => Braintree::Test::CreditCardNumbers::Visa,
5863
5964
  :expiration_date => "05/2009"
5864
5965
  },
5865
- :service_fee_amount => '1.00'
5966
+ :service_fee_amount => "1.00",
5866
5967
  )
5867
5968
 
5868
5969
  transaction.escrow_status.should be_nil
@@ -5922,7 +6023,7 @@ describe Braintree::Transaction do
5922
6023
  :credit_card => {
5923
6024
  :number => Braintree::Test::CreditCardNumbers::Visa,
5924
6025
  :expiration_date => "05/2009"
5925
- }
6026
+ },
5926
6027
  )
5927
6028
  result.success?.should == true
5928
6029
  result.transaction.id.should =~ /^\w{6,}$/
@@ -5945,7 +6046,7 @@ describe Braintree::Transaction do
5945
6046
  }
5946
6047
  result = Braintree::Transaction.credit(params[:transaction])
5947
6048
  result.success?.should == false
5948
- result.params.should == {:transaction => {:type => 'credit', :amount => nil, :credit_card => {:expiration_date => "05/2009"}}}
6049
+ result.params.should == {:transaction => {:type => "credit", :amount => nil, :credit_card => {:expiration_date => "05/2009"}}}
5949
6050
  result.errors.for(:transaction).on(:amount)[0].code.should == Braintree::ErrorCodes::Transaction::AmountIsRequired
5950
6051
  end
5951
6052
 
@@ -5956,7 +6057,7 @@ describe Braintree::Transaction do
5956
6057
  :credit_card => {
5957
6058
  :number => Braintree::Test::CreditCardNumbers::Visa,
5958
6059
  :expiration_date => "05/2009"
5959
- }
6060
+ },
5960
6061
  )
5961
6062
  result.success?.should == true
5962
6063
  result.transaction.merchant_account_id.should == SpecHelper::NonDefaultMerchantAccountId
@@ -5968,7 +6069,7 @@ describe Braintree::Transaction do
5968
6069
  :credit_card => {
5969
6070
  :number => Braintree::Test::CreditCardNumbers::Visa,
5970
6071
  :expiration_date => "05/2009"
5971
- }
6072
+ },
5972
6073
  )
5973
6074
  result.success?.should == true
5974
6075
  result.transaction.merchant_account_id.should == SpecHelper::DefaultMerchantAccountId
@@ -5998,7 +6099,7 @@ describe Braintree::Transaction do
5998
6099
  :credit_card => {
5999
6100
  :number => Braintree::Test::CreditCardNumbers::Visa,
6000
6101
  :expiration_date => "05/2009"
6001
- }
6102
+ },
6002
6103
  )
6003
6104
  transaction.id.should =~ /^\w{6,}$/
6004
6105
  transaction.type.should == "credit"
@@ -6015,7 +6116,7 @@ describe Braintree::Transaction do
6015
6116
  :credit_card => {
6016
6117
  :number => Braintree::Test::CreditCardNumbers::Visa,
6017
6118
  :expiration_date => "05/2009"
6018
- }
6119
+ },
6019
6120
  )
6020
6121
  end.to raise_error(Braintree::ValidationsFailed)
6021
6122
  end
@@ -6029,7 +6130,7 @@ describe Braintree::Transaction do
6029
6130
  :credit_card => {
6030
6131
  :number => Braintree::Test::CreditCardNumbers::Visa,
6031
6132
  :expiration_date => "05/2009"
6032
- }
6133
+ },
6033
6134
  )
6034
6135
  result.success?.should == true
6035
6136
  created_transaction = result.transaction
@@ -6046,7 +6147,7 @@ describe Braintree::Transaction do
6046
6147
  :number => Braintree::Test::CreditCardNumbers::Visa,
6047
6148
  :expiration_date => "05/2009"
6048
6149
  },
6049
- :options => { :store_in_vault => true }
6150
+ :options => {:store_in_vault => true},
6050
6151
  )
6051
6152
  result.success?.should == true
6052
6153
  created_transaction = result.transaction
@@ -6091,7 +6192,7 @@ describe Braintree::Transaction do
6091
6192
  :credit_card => {
6092
6193
  :number => Braintree::Test::CreditCardNumbers::Visa,
6093
6194
  :expiration_date => "05/2009"
6094
- }
6195
+ },
6095
6196
  )
6096
6197
  result.success?.should == true
6097
6198
  created_transaction = result.transaction
@@ -6141,7 +6242,7 @@ describe Braintree::Transaction do
6141
6242
  :credit_card => {
6142
6243
  :number => Braintree::Test::CreditCardNumbers::Visa,
6143
6244
  :expiration_date => "05/2009"
6144
- }
6245
+ },
6145
6246
  )
6146
6247
  result.success?.should == true
6147
6248
  created_transaction = result.transaction
@@ -6154,15 +6255,21 @@ describe Braintree::Transaction do
6154
6255
  it "returns all the three_d_secure_info" do
6155
6256
  transaction = Braintree::Transaction.find("threedsecuredtransaction")
6156
6257
 
6258
+ expect(transaction.three_d_secure_info.authentication).to have_key(:trans_status)
6259
+ expect(transaction.three_d_secure_info.authentication).to have_key(:trans_status_reason)
6260
+ expect(transaction.three_d_secure_info.lookup).to have_key(:trans_status)
6261
+ expect(transaction.three_d_secure_info.lookup).to have_key(:trans_status_reason)
6262
+ transaction.three_d_secure_info.cavv.should == "somebase64value"
6263
+ transaction.three_d_secure_info.ds_transaction_id.should == "dstxnid"
6264
+ transaction.three_d_secure_info.eci_flag.should == "07"
6157
6265
  transaction.three_d_secure_info.enrolled.should == "Y"
6158
- transaction.three_d_secure_info.should be_liability_shifted
6266
+ transaction.three_d_secure_info.pares_status.should == "Y"
6159
6267
  transaction.three_d_secure_info.should be_liability_shift_possible
6268
+ transaction.three_d_secure_info.should be_liability_shifted
6160
6269
  transaction.three_d_secure_info.status.should == "authenticate_successful"
6161
- transaction.three_d_secure_info.cavv.should == "somebase64value"
6162
- transaction.three_d_secure_info.xid.should == "xidvalue"
6163
- transaction.three_d_secure_info.eci_flag.should == "07"
6270
+ expect(transaction.three_d_secure_info.three_d_secure_authentication_id).to be
6164
6271
  transaction.three_d_secure_info.three_d_secure_version.should == "1.0.2"
6165
- transaction.three_d_secure_info.ds_transaction_id.should == "dstxnid"
6272
+ transaction.three_d_secure_info.xid.should == "xidvalue"
6166
6273
  end
6167
6274
 
6168
6275
  it "is nil if the transaction wasn't 3d secured" do
@@ -6204,7 +6311,7 @@ describe Braintree::Transaction do
6204
6311
  :number => Braintree::Test::CreditCardNumbers::Visa,
6205
6312
  :expiration_date => "12/12",
6206
6313
  },
6207
- :service_fee_amount => "10.00"
6314
+ :service_fee_amount => "10.00",
6208
6315
  )
6209
6316
 
6210
6317
  result.transaction.escrow_status.should be_nil
@@ -6221,7 +6328,7 @@ describe Braintree::Transaction do
6221
6328
  :credit_card => {
6222
6329
  :number => Braintree::Test::CreditCardNumbers::Visa,
6223
6330
  :expiration_date => "05/2009"
6224
- }
6331
+ },
6225
6332
  )
6226
6333
 
6227
6334
  result = Braintree::Transaction.hold_in_escrow(transaction.id)
@@ -6239,7 +6346,7 @@ describe Braintree::Transaction do
6239
6346
  :number => Braintree::Test::CreditCardNumbers::Visa,
6240
6347
  :expiration_date => "12/12",
6241
6348
  },
6242
- :service_fee_amount => "10.00"
6349
+ :service_fee_amount => "10.00",
6243
6350
  )
6244
6351
 
6245
6352
  result.transaction.escrow_status.should be_nil
@@ -6255,7 +6362,7 @@ describe Braintree::Transaction do
6255
6362
  :credit_card => {
6256
6363
  :number => Braintree::Test::CreditCardNumbers::Visa,
6257
6364
  :expiration_date => "05/2009"
6258
- }
6365
+ },
6259
6366
  )
6260
6367
 
6261
6368
  expect do
@@ -6271,7 +6378,7 @@ describe Braintree::Transaction do
6271
6378
  :credit_card => {
6272
6379
  :number => Braintree::Test::CreditCardNumbers::Visa,
6273
6380
  :expiration_date => "05/2009"
6274
- }
6381
+ },
6275
6382
  )
6276
6383
  result = Braintree::Transaction.void(transaction.id)
6277
6384
  result.success?.should == true
@@ -6285,7 +6392,7 @@ describe Braintree::Transaction do
6285
6392
  :credit_card => {
6286
6393
  :number => Braintree::Test::CreditCardNumbers::Visa,
6287
6394
  :expiration_date => "05/2009"
6288
- }
6395
+ },
6289
6396
  ).transaction
6290
6397
  result = Braintree::Transaction.void(transaction.id)
6291
6398
  result.success?.should == false
@@ -6300,7 +6407,7 @@ describe Braintree::Transaction do
6300
6407
  :credit_card => {
6301
6408
  :number => Braintree::Test::CreditCardNumbers::Visa,
6302
6409
  :expiration_date => "05/2009"
6303
- }
6410
+ },
6304
6411
  )
6305
6412
  returned_transaction = Braintree::Transaction.void!(transaction.id)
6306
6413
  returned_transaction.should == transaction
@@ -6313,7 +6420,7 @@ describe Braintree::Transaction do
6313
6420
  :credit_card => {
6314
6421
  :number => Braintree::Test::CreditCardNumbers::Visa,
6315
6422
  :expiration_date => "05/2009"
6316
- }
6423
+ },
6317
6424
  ).transaction
6318
6425
  expect do
6319
6426
  Braintree::Transaction.void!(transaction.id)
@@ -6328,7 +6435,7 @@ describe Braintree::Transaction do
6328
6435
  :credit_card => {
6329
6436
  :number => Braintree::Test::CreditCardNumbers::Visa,
6330
6437
  :expiration_date => "05/2009"
6331
- }
6438
+ },
6332
6439
  )
6333
6440
  result = Braintree::Transaction.submit_for_settlement!(transaction.id)
6334
6441
  result.status_history.size.should == 2
@@ -6386,7 +6493,7 @@ describe Braintree::Transaction do
6386
6493
  :credit_card => {
6387
6494
  :number => Braintree::Test::CreditCardNumbers::Visa,
6388
6495
  :expiration_date => "05/2010"
6389
- }
6496
+ },
6390
6497
  )
6391
6498
  transaction = Braintree::CreditCard.sale(customer.credit_cards[0].token, {:amount => "100.00"}).transaction
6392
6499
  transaction.vault_credit_card.should == customer.credit_cards[0]
@@ -6399,7 +6506,7 @@ describe Braintree::Transaction do
6399
6506
  :credit_card => {
6400
6507
  :number => Braintree::Test::CreditCardNumbers::Visa,
6401
6508
  :expiration_date => "05/2010"
6402
- }
6509
+ },
6403
6510
  )
6404
6511
  transaction.vault_credit_card.should == nil
6405
6512
  end
@@ -6411,7 +6518,7 @@ describe Braintree::Transaction do
6411
6518
  :credit_card => {
6412
6519
  :number => Braintree::Test::CreditCardNumbers::Visa,
6413
6520
  :expiration_date => "05/2010"
6414
- }
6521
+ },
6415
6522
  )
6416
6523
  transaction = Braintree::CreditCard.sale(customer.credit_cards[0].token, :amount => "100.00").transaction
6417
6524
  transaction.vault_customer.should == customer
@@ -6424,7 +6531,7 @@ describe Braintree::Transaction do
6424
6531
  :credit_card => {
6425
6532
  :number => Braintree::Test::CreditCardNumbers::Visa,
6426
6533
  :expiration_date => "05/2010"
6427
- }
6534
+ },
6428
6535
  )
6429
6536
  transaction.vault_customer.should == nil
6430
6537
  end
@@ -6439,7 +6546,7 @@ describe Braintree::Transaction do
6439
6546
  },
6440
6547
  :options => {
6441
6548
  :submit_for_settlement => true
6442
- }
6549
+ },
6443
6550
  )
6444
6551
 
6445
6552
  config = Braintree::Configuration.instantiate
@@ -6453,7 +6560,7 @@ describe Braintree::Transaction do
6453
6560
  :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
6454
6561
  :options => {
6455
6562
  :submit_for_settlement => true
6456
- }
6563
+ },
6457
6564
  )
6458
6565
 
6459
6566
  config = Braintree::Configuration.instantiate
@@ -6469,8 +6576,8 @@ describe Braintree::Transaction do
6469
6576
  :number => Braintree::Test::CreditCardNumbers::Visa,
6470
6577
  :expiration_date => "05/2009"
6471
6578
  },
6472
- :service_fee_amount => '1.00',
6473
- :options => { :hold_in_escrow => true }
6579
+ :service_fee_amount => "1.00",
6580
+ :options => {:hold_in_escrow => true},
6474
6581
  )
6475
6582
 
6476
6583
  config = Braintree::Configuration.instantiate
@@ -6484,7 +6591,7 @@ describe Braintree::Transaction do
6484
6591
  it "can create a transaction with venmo_sdk_payment_method_code" do
6485
6592
  result = Braintree::Transaction.sale(
6486
6593
  :amount => "10.00",
6487
- :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK.generate_test_payment_method_code(Braintree::Test::CreditCardNumbers::Visa)
6594
+ :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK.generate_test_payment_method_code(Braintree::Test::CreditCardNumbers::Visa),
6488
6595
  )
6489
6596
  result.success?.should == true
6490
6597
  result.transaction.credit_card_details.venmo_sdk?.should == false
@@ -6493,7 +6600,7 @@ describe Braintree::Transaction do
6493
6600
  it "errors when an invalid payment method code is passed" do
6494
6601
  result = Braintree::Transaction.sale(
6495
6602
  :amount => "10.00",
6496
- :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK::InvalidPaymentMethodCode
6603
+ :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK::InvalidPaymentMethodCode,
6497
6604
  )
6498
6605
  result.success?.should == false
6499
6606
  result.message.should include("Invalid VenmoSDK payment method code")
@@ -6511,7 +6618,7 @@ describe Braintree::Transaction do
6511
6618
  },
6512
6619
  :options => {
6513
6620
  :venmo_sdk_session => Braintree::Test::VenmoSDK::Session
6514
- }
6621
+ },
6515
6622
  )
6516
6623
  result.success?.should == true
6517
6624
  result.transaction.credit_card_details.venmo_sdk?.should == false
@@ -6526,7 +6633,7 @@ describe Braintree::Transaction do
6526
6633
  },
6527
6634
  :options => {
6528
6635
  :venmo_sdk_session => Braintree::Test::VenmoSDK::InvalidSession
6529
- }
6636
+ },
6530
6637
  )
6531
6638
  result.success?.should == true
6532
6639
  result.transaction.credit_card_details.venmo_sdk?.should == false
@@ -6538,7 +6645,7 @@ describe Braintree::Transaction do
6538
6645
  it "can create a transaction for a paypal account" do
6539
6646
  result = Braintree::Transaction.sale(
6540
6647
  :amount => "10.00",
6541
- :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment
6648
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
6542
6649
  )
6543
6650
  result.success?.should == true
6544
6651
  result.transaction.paypal_details.payer_email.should == "payer@example.com"
@@ -6553,7 +6660,7 @@ describe Braintree::Transaction do
6553
6660
  :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
6554
6661
  :options => {
6555
6662
  :store_in_vault => true
6556
- }
6663
+ },
6557
6664
  )
6558
6665
  result.success?.should == true
6559
6666
  result.transaction.paypal_details.token.should_not be_nil
@@ -6566,7 +6673,7 @@ describe Braintree::Transaction do
6566
6673
  customer = Braintree::Customer.create!
6567
6674
  result = Braintree::PaymentMethod.create(
6568
6675
  :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
6569
- :customer_id => customer.id
6676
+ :customer_id => customer.id,
6570
6677
  )
6571
6678
 
6572
6679
  result.should be_success
@@ -6576,7 +6683,7 @@ describe Braintree::Transaction do
6576
6683
  result = Braintree::Transaction.sale(
6577
6684
  :amount => "100",
6578
6685
  :customer_id => customer.id,
6579
- :payment_method_token => payment_method_token
6686
+ :payment_method_token => payment_method_token,
6580
6687
  )
6581
6688
 
6582
6689
  result.should be_success
@@ -6591,7 +6698,7 @@ describe Braintree::Transaction do
6591
6698
  nonce = nonce_for_paypal_account(:token => "TOKEN")
6592
6699
  result = Braintree::Transaction.sale(
6593
6700
  :amount => "10.00",
6594
- :payment_method_nonce => nonce
6701
+ :payment_method_nonce => nonce,
6595
6702
  )
6596
6703
  result.should_not be_success
6597
6704
  result.errors.for(:transaction).for(:paypal_account).first.code.should == Braintree::ErrorCodes::PayPalAccount::IncompletePayPalAccount
@@ -6606,7 +6713,7 @@ describe Braintree::Transaction do
6606
6713
  :public_key => "oauth_app_partner_user_public_key",
6607
6714
  :private_key => "oauth_app_partner_user_private_key",
6608
6715
  :environment => Braintree::Configuration.environment,
6609
- :logger => Logger.new("/dev/null")
6716
+ :logger => Logger.new("/dev/null"),
6610
6717
  )
6611
6718
  @customer = @partner_merchant_gateway.customer.create(
6612
6719
  :first_name => "Joe",
@@ -6615,12 +6722,12 @@ describe Braintree::Transaction do
6615
6722
  :email => "joe@example.com",
6616
6723
  :phone => "312.555.1234",
6617
6724
  :fax => "614.555.5678",
6618
- :website => "www.example.com"
6725
+ :website => "www.example.com",
6619
6726
  ).customer
6620
6727
  @address = @partner_merchant_gateway.address.create(
6621
6728
  :customer_id => @customer.id,
6622
6729
  :first_name => "Testy",
6623
- :last_name => "McTesterson"
6730
+ :last_name => "McTesterson",
6624
6731
  ).address
6625
6732
  @credit_card = @partner_merchant_gateway.credit_card.create(
6626
6733
  :customer_id => @customer.id,
@@ -6631,13 +6738,13 @@ describe Braintree::Transaction do
6631
6738
  :first_name => "Adam",
6632
6739
  :last_name => "Davis",
6633
6740
  :postal_code => "95131"
6634
- }
6741
+ },
6635
6742
  ).credit_card
6636
6743
 
6637
6744
  oauth_gateway = Braintree::Gateway.new(
6638
6745
  :client_id => "client_id$#{Braintree::Configuration.environment}$integration_client_id",
6639
6746
  :client_secret => "client_secret$#{Braintree::Configuration.environment}$integration_client_secret",
6640
- :logger => Logger.new("/dev/null")
6747
+ :logger => Logger.new("/dev/null"),
6641
6748
  )
6642
6749
  access_token = Braintree::OAuthTestHelper.create_token(oauth_gateway, {
6643
6750
  :merchant_public_id => "integration_merchant_id",
@@ -6646,7 +6753,7 @@ describe Braintree::Transaction do
6646
6753
 
6647
6754
  @granting_gateway = Braintree::Gateway.new(
6648
6755
  :access_token => access_token,
6649
- :logger => Logger.new("/dev/null")
6756
+ :logger => Logger.new("/dev/null"),
6650
6757
  )
6651
6758
 
6652
6759
  end
@@ -6656,7 +6763,7 @@ describe Braintree::Transaction do
6656
6763
 
6657
6764
  result = Braintree::Transaction.sale(
6658
6765
  :payment_method_nonce => grant_result.payment_method_nonce.nonce,
6659
- :amount => Braintree::Test::TransactionAmounts::Authorize
6766
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
6660
6767
  )
6661
6768
  result.transaction.facilitated_details.merchant_id.should == "integration_merchant_id"
6662
6769
  result.transaction.facilitated_details.merchant_name.should == "14ladders"
@@ -6672,7 +6779,7 @@ describe Braintree::Transaction do
6672
6779
 
6673
6780
  result = Braintree::Transaction.sale(
6674
6781
  :payment_method_nonce => grant_result.payment_method_nonce.nonce,
6675
- :amount => Braintree::Test::TransactionAmounts::Authorize
6782
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
6676
6783
  )
6677
6784
 
6678
6785
  result.transaction.billing_details.postal_code == "95131"
@@ -6684,7 +6791,7 @@ describe Braintree::Transaction do
6684
6791
  :shared_customer_id => @customer.id,
6685
6792
  :shared_shipping_address_id => @address.id,
6686
6793
  :shared_billing_address_id => @address.id,
6687
- :amount => Braintree::Test::TransactionAmounts::Authorize
6794
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
6688
6795
  )
6689
6796
  result.success?.should == true
6690
6797
  result.transaction.shipping_details.first_name.should == @address.first_name
@@ -6694,7 +6801,7 @@ describe Braintree::Transaction do
6694
6801
  it "facilitated details are returned on transaction created via a shared_payment_method_token" do
6695
6802
  result = @granting_gateway.transaction.sale(
6696
6803
  :shared_payment_method_token => @credit_card.token,
6697
- :amount => Braintree::Test::TransactionAmounts::Authorize
6804
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
6698
6805
  )
6699
6806
  result.transaction.facilitated_details.merchant_id.should == "integration_merchant_id"
6700
6807
  result.transaction.facilitated_details.merchant_name.should == "14ladders"
@@ -6706,12 +6813,12 @@ describe Braintree::Transaction do
6706
6813
 
6707
6814
  it "facilitated details are returned on transaction created via a shared_payment_method_nonce" do
6708
6815
  shared_nonce = @partner_merchant_gateway.payment_method_nonce.create(
6709
- @credit_card.token
6816
+ @credit_card.token,
6710
6817
  ).payment_method_nonce.nonce
6711
6818
 
6712
6819
  result = @granting_gateway.transaction.sale(
6713
6820
  :shared_payment_method_nonce => shared_nonce,
6714
- :amount => Braintree::Test::TransactionAmounts::Authorize
6821
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
6715
6822
  )
6716
6823
  result.transaction.facilitated_details.merchant_id.should == "integration_merchant_id"
6717
6824
  result.transaction.facilitated_details.merchant_name.should == "14ladders"
@@ -6724,7 +6831,7 @@ describe Braintree::Transaction do
6724
6831
 
6725
6832
  context "paypal here" do
6726
6833
  it "gets the details of an auth/capture transaction" do
6727
- result = Braintree::Transaction.find('paypal_here_auth_capture_id')
6834
+ result = Braintree::Transaction.find("paypal_here_auth_capture_id")
6728
6835
  result.payment_instrument_type.should eq(Braintree::PaymentInstrumentType::PayPalHere)
6729
6836
  result.paypal_here_details.should_not be_nil
6730
6837
 
@@ -6741,7 +6848,7 @@ describe Braintree::Transaction do
6741
6848
  end
6742
6849
 
6743
6850
  it "gets the details of a sale transaction" do
6744
- result = Braintree::Transaction.find('paypal_here_sale_id')
6851
+ result = Braintree::Transaction.find("paypal_here_sale_id")
6745
6852
  result.paypal_here_details.should_not be_nil
6746
6853
 
6747
6854
  details = result.paypal_here_details
@@ -6749,7 +6856,7 @@ describe Braintree::Transaction do
6749
6856
  end
6750
6857
 
6751
6858
  it "gets the details of a refunded sale transaction" do
6752
- result = Braintree::Transaction.find('paypal_here_refund_id')
6859
+ result = Braintree::Transaction.find("paypal_here_refund_id")
6753
6860
  result.paypal_here_details.should_not be_nil
6754
6861
 
6755
6862
  details = result.paypal_here_details
@@ -6774,7 +6881,7 @@ describe Braintree::Transaction do
6774
6881
  customer = Braintree::Customer.create!
6775
6882
  result = Braintree::PaymentMethod.create(
6776
6883
  :payment_method_nonce => Braintree::Test::Nonce::TransactableVisa,
6777
- :customer_id => customer.id
6884
+ :customer_id => customer.id,
6778
6885
  )
6779
6886
  payment_method_token = result.payment_method.token
6780
6887
 
@@ -6789,4 +6896,266 @@ describe Braintree::Transaction do
6789
6896
  transaction.processed_with_network_token?.should == false
6790
6897
  end
6791
6898
  end
6899
+
6900
+ describe "installments" do
6901
+ it "creates a transaction with an installment count" do
6902
+ result = Braintree::Transaction.create(
6903
+ :type => "sale",
6904
+ :merchant_account_id => SpecHelper::CardProcessorBRLMerchantAccountId,
6905
+ :credit_card => {
6906
+ :number => Braintree::Test::CreditCardNumbers::Visa,
6907
+ :expiration_date => "05/2009"
6908
+ },
6909
+ :amount => "100.01",
6910
+ :installments => {
6911
+ :count => 12,
6912
+ },
6913
+ )
6914
+
6915
+ expect(result.success?).to eq(true)
6916
+ expect(result.transaction.installment_count).to eq(12)
6917
+ end
6918
+
6919
+ it "creates a transaction with a installments during capture" do
6920
+ result = Braintree::Transaction.create(
6921
+ :type => "sale",
6922
+ :merchant_account_id => SpecHelper::CardProcessorBRLMerchantAccountId,
6923
+ :credit_card => {
6924
+ :number => Braintree::Test::CreditCardNumbers::Visa,
6925
+ :expiration_date => "05/2009"
6926
+ },
6927
+ :amount => "100.01",
6928
+ :installments => {
6929
+ :count => 12,
6930
+ },
6931
+ :options => {
6932
+ :submit_for_settlement => true,
6933
+ },
6934
+ )
6935
+
6936
+ expect(result.success?).to eq(true)
6937
+ transaction = result.transaction
6938
+ expect(transaction.installment_count).to eq(12)
6939
+
6940
+ installments = transaction.installments
6941
+ expect(installments.map(&:id)).to match_array((1..12).map { |i| "#{transaction.id}_INST_#{i}" })
6942
+ expect(installments.map(&:amount)).to match_array([BigDecimal("8.33")] * 11 + [BigDecimal("8.38")])
6943
+ end
6944
+
6945
+ it "can refund a transaction with installments" do
6946
+ sale_result = Braintree::Transaction.create(
6947
+ :type => "sale",
6948
+ :merchant_account_id => SpecHelper::CardProcessorBRLMerchantAccountId,
6949
+ :credit_card => {
6950
+ :number => Braintree::Test::CreditCardNumbers::Visa,
6951
+ :expiration_date => "05/2009"
6952
+ },
6953
+ :amount => "100.01",
6954
+ :installments => {
6955
+ :count => 12,
6956
+ },
6957
+ :options => {
6958
+ :submit_for_settlement => true,
6959
+ },
6960
+ )
6961
+
6962
+ expect(sale_result.success?).to eq(true)
6963
+ sale_transaction = sale_result.transaction
6964
+
6965
+ refund_result = Braintree::Transaction.refund(sale_transaction.id, "49.99")
6966
+
6967
+ expect(refund_result.success?).to eq(true)
6968
+ refund_transaction = refund_result.transaction
6969
+ installments = refund_transaction.refunded_installments
6970
+
6971
+ (1..11).each do |i|
6972
+ installment = installments.find { |installment| installment.id == "#{sale_transaction.id}_INST_#{i}" }
6973
+
6974
+ expect(installment.amount).to eq(BigDecimal("8.33"))
6975
+ expect(installment.adjustments.map(&:amount)).to match_array([BigDecimal("-4.16")])
6976
+ expect(installment.adjustments.map(&:kind)).to match_array([Braintree::Transaction::Installment::Adjustment::Kind::Refund])
6977
+ end
6978
+
6979
+ installment = installments.find { |installment| installment.id == "#{sale_transaction.id}_INST_12" }
6980
+
6981
+ expect(installment.amount).to eq(BigDecimal("8.38"))
6982
+ expect(installment.adjustments.map(&:amount)).to match_array([BigDecimal("-4.23")])
6983
+ expect(installment.adjustments.map(&:kind)).to match_array([Braintree::Transaction::Installment::Adjustment::Kind::Refund])
6984
+ end
6985
+ end
6986
+
6987
+ describe "Manual Key Entry" do
6988
+ context "with correct encrypted payment reader card details" do
6989
+ it "returns a success response" do
6990
+ result = Braintree::Transaction.sale(
6991
+ :amount => "10.00",
6992
+ :credit_card => {
6993
+ :payment_reader_card_details => {
6994
+ :encrypted_card_data => "8F34DFB312DC79C24FD5320622F3E11682D79E6B0C0FD881",
6995
+ :key_serial_number => "FFFFFF02000572A00005",
6996
+ },
6997
+ },
6998
+ )
6999
+
7000
+ expect(result).to be_success
7001
+ end
7002
+ end
7003
+
7004
+ context "with invalid encrypted payment reader card details" do
7005
+ it "returns a failure response" do
7006
+ result = Braintree::Transaction.sale(
7007
+ :amount => "10.00",
7008
+ :credit_card => {
7009
+ :payment_reader_card_details => {
7010
+ :encrypted_card_data => "invalid",
7011
+ :key_serial_number => "invalid",
7012
+ },
7013
+ },
7014
+ )
7015
+
7016
+ expect(result).not_to be_success
7017
+ expect(result.errors.for(:transaction).first.code)
7018
+ .to eq(Braintree::ErrorCodes::Transaction::PaymentInstrumentNotSupportedByMerchantAccount)
7019
+ end
7020
+ end
7021
+ end
7022
+
7023
+ describe "Adjust Authorization" do
7024
+ let(:first_data_master_transaction_params) do
7025
+ {
7026
+ :merchant_account_id => SpecHelper::FakeFirstDataMerchantAccountId,
7027
+ :amount => "75.50",
7028
+ :credit_card => {
7029
+ :number => "5105105105105100",
7030
+ :expiration_date => "05/2012"
7031
+ }
7032
+ }
7033
+ end
7034
+ let(:first_data_visa_transaction_params) do
7035
+ {
7036
+ :merchant_account_id => SpecHelper::FakeFirstDataMerchantAccountId,
7037
+ :amount => "75.50",
7038
+ :credit_card => {
7039
+ :number => Braintree::Test::CreditCardNumbers::Visa,
7040
+ :expiration_date => "06/2009"
7041
+ }
7042
+ }
7043
+ end
7044
+ context "successful authorization" do
7045
+ it "returns success response" do
7046
+ initial_transaction = Braintree::Transaction.sale(first_data_master_transaction_params)
7047
+ expect(initial_transaction.success?).to eq(true)
7048
+
7049
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7050
+ initial_transaction.transaction.id, "85.50"
7051
+ )
7052
+
7053
+ expect(adjustment_transaction.success?).to eq(true)
7054
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("85.50"))
7055
+ end
7056
+ end
7057
+
7058
+ context "unsuccessful authorization" do
7059
+ it "returns failure, when processor does not support multi auth adjustment" do
7060
+ initial_transaction = Braintree::Transaction.sale(
7061
+ :merchant_account_id => SpecHelper::DefaultMerchantAccountId,
7062
+ :amount => "75.50",
7063
+ :credit_card => {
7064
+ :number => Braintree::Test::CreditCardNumbers::Visa,
7065
+ :expiration_date => "06/2009"
7066
+ },
7067
+ )
7068
+ expect(initial_transaction.success?).to eq(true)
7069
+
7070
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7071
+ initial_transaction.transaction.id, "85.50"
7072
+ )
7073
+
7074
+
7075
+ expect(adjustment_transaction.success?).to eq(false)
7076
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7077
+ expect(adjustment_transaction.errors.for(:transaction).on(:base).first.code).to eq(Braintree::ErrorCodes::Transaction::ProcessorDoesNotSupportAuthAdjustment)
7078
+ end
7079
+
7080
+ it "returns failure response, when adjusted amount submitted is zero" do
7081
+ initial_transaction = Braintree::Transaction.sale(first_data_master_transaction_params)
7082
+ expect(initial_transaction.success?).to eq(true)
7083
+
7084
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7085
+ initial_transaction.transaction.id, "0.0"
7086
+ )
7087
+
7088
+ expect(adjustment_transaction.success?).to eq(false)
7089
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7090
+ expect(adjustment_transaction.errors.for(:authorization_adjustment).on(:amount).first.code).to eq(Braintree::ErrorCodes::Transaction::AdjustmentAmountMustBeGreaterThanZero)
7091
+ end
7092
+
7093
+ it "returns failure response, when adjusted amount submitted same as authorized amount" do
7094
+ initial_transaction = Braintree::Transaction.sale(first_data_master_transaction_params)
7095
+ expect(initial_transaction.success?).to eq(true)
7096
+
7097
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7098
+ initial_transaction.transaction.id, "75.50"
7099
+ )
7100
+
7101
+ expect(adjustment_transaction.success?).to eq(false)
7102
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7103
+ expect(adjustment_transaction.errors.for(:authorization_adjustment).on(:base).first.code).to eq(Braintree::ErrorCodes::Transaction::NoNetAmountToPerformAuthAdjustment)
7104
+ end
7105
+
7106
+ it "returns failure, when transaction status is not authorized" do
7107
+ additional_params = {:options => {:submit_for_settlement => true}}
7108
+ initial_transaction = Braintree::Transaction.sale(first_data_master_transaction_params.merge(additional_params))
7109
+ expect(initial_transaction.success?).to eq(true)
7110
+
7111
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7112
+ initial_transaction.transaction.id, "85.50"
7113
+ )
7114
+
7115
+ expect(adjustment_transaction.success?).to eq(false)
7116
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7117
+ expect(adjustment_transaction.errors.for(:transaction).on(:base).first.code).to eq(Braintree::ErrorCodes::Transaction::TransactionMustBeInStateAuthorized)
7118
+ end
7119
+
7120
+ it "returns failure, when transaction authorization type final or undefined" do
7121
+ additional_params = {:transaction_source => "recurring_first"}
7122
+ initial_transaction = Braintree::Transaction.sale(first_data_master_transaction_params.merge(additional_params))
7123
+ expect(initial_transaction.success?).to eq(true)
7124
+
7125
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7126
+ initial_transaction.transaction.id, "85.50"
7127
+ )
7128
+
7129
+ expect(adjustment_transaction.success?).to eq(false)
7130
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7131
+ expect(adjustment_transaction.errors.for(:transaction).on(:base).first.code).to eq(Braintree::ErrorCodes::Transaction::TransactionIsNotEligibleForAdjustment)
7132
+ end
7133
+
7134
+ it "returns failure, when processor does not support incremental auth" do
7135
+ initial_transaction = Braintree::Transaction.sale(first_data_visa_transaction_params)
7136
+ expect(initial_transaction.success?).to eq(true)
7137
+
7138
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7139
+ initial_transaction.transaction.id, "85.50"
7140
+ )
7141
+
7142
+ expect(adjustment_transaction.success?).to eq(false)
7143
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7144
+ expect(adjustment_transaction.errors.for(:transaction).on(:base).first.code).to eq(Braintree::ErrorCodes::Transaction::ProcessorDoesNotSupportIncrementalAuth)
7145
+ end
7146
+
7147
+ it "returns failure, when processor does not support auth reversal" do
7148
+ initial_transaction = Braintree::Transaction.sale(first_data_visa_transaction_params)
7149
+ expect(initial_transaction.success?).to eq(true)
7150
+
7151
+ adjustment_transaction = Braintree::Transaction.adjust_authorization(
7152
+ initial_transaction.transaction.id, "65.50"
7153
+ )
7154
+
7155
+ expect(adjustment_transaction.success?).to eq(false)
7156
+ expect(adjustment_transaction.transaction.amount.should).to eq(BigDecimal("75.50"))
7157
+ expect(adjustment_transaction.errors.for(:transaction).on(:base).first.code).to eq(Braintree::ErrorCodes::Transaction::ProcessorDoesNotSupportPartialAuthReversal)
7158
+ end
7159
+ end
7160
+ end
6792
7161
  end