braintree 2.96.0 → 2.97.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05a36d5ea5b0870293e17db6baa85393f97e0a8aa8ba495ee34ec2f30d64f29a
4
- data.tar.gz: d7291802e13bfdecf5e3258b0f9cac7bb15654fd4f6249faf0e96444de55576e
3
+ metadata.gz: b9796b601bd0eb88d43af1f1f4649dbef92b3f13b64e2ba1530ce2fe184b3817
4
+ data.tar.gz: baf2344bb18263a50a0e6106918239a5c61f3879e003e8cb8a5f771e949f6089
5
5
  SHA512:
6
- metadata.gz: d5bee8dcbe48df9d0c752d150dd3c18ae3c4232a31aa3e850ac5ab1a8ef4a85f292515b96489dbf736a2bde1d4780bb1f5f1edfb4eeaeacde6b983e8c72d4825
7
- data.tar.gz: 5065e4ad5cde4db02b5bfdee866425a8d837604ff50b69d4c1f721915e6483cec41ef8ff9e53f03c3ce2290d1e27f13a346c01bb9a277ffd0b179284ed4fba9d
6
+ metadata.gz: 295157174583b40728788a3ff63530e90bec65095500ce23666a582a8c61ddd1d036f906ff5b40f1d3419b656f3bd7830cd877aad65c89b5eb1ded0ce77fe404
7
+ data.tar.gz: 18895f9963e28778251ecf5850dc039d54c5b7bc85fa8f1c548c7f9990ae1e6cc5d5394e56b8bbbdeb491c71387311dc285ed997011ed6572fc65d1cd5cf0b58
@@ -108,7 +108,7 @@ module Braintree
108
108
 
109
109
  def self._signature(type) # :nodoc:
110
110
  billing_address_params = AddressGateway._shared_signature
111
- options = [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method]
111
+ options = [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]
112
112
  signature = [
113
113
  :billing_address_id, :cardholder_name, :cvv, :device_session_id, :expiration_date,
114
114
  :expiration_month, :expiration_year, :number, :token, :venmo_sdk_payment_method_code,
@@ -24,6 +24,7 @@ module Braintree
24
24
  PostalCodeInvalidCharacters = "81813"
25
25
  PostalCodeIsInvalid = "91826"
26
26
  PostalCodeIsRequired = "81808"
27
+ PostalCodeIsRequiredForCardBrandAndProcessor = "81828"
27
28
  PostalCodeIsTooLong = "81809"
28
29
  RegionIsInvalid = "91825"
29
30
  RegionIsTooLong = "81810"
@@ -407,6 +408,10 @@ module Braintree
407
408
  ThreeDSecureCavvIsRequired = "915116"
408
409
  ThreeDSecureXidIsRequired = "915115"
409
410
  ThreeDSecureEciFlagIsInvalid = "915114"
411
+ ThreeDSecureThreeDSecureVersionIsInvalid = "915119"
412
+ ThreeDSecureAuthenticationResponseIsInvalid = "915120"
413
+ ThreeDSecureDirectoryResponseIsInvalid = "915121"
414
+ ThreeDSecureCavvAlgorithmIsInvalid = "915122"
410
415
  ThreeDSecureMerchantAccountDoesNotSupportCardType = "915131"
411
416
  TypeIsInvalid = "91523"
412
417
  TypeIsRequired = "91524"
@@ -439,6 +444,16 @@ module Braintree
439
444
  CheckOutDateIsInvalid = "93405"
440
445
  CheckOutDateMustFollowCheckInDate = "93406"
441
446
  UnknownDataField = "93407"
447
+ RoomRateMustBeGreaterThanZero = "93433"
448
+ RoomRateFormatIsInvalid = "93434"
449
+ RoomRateIsTooLarge = "93435"
450
+ RoomTaxMustBeGreaterThanZero = "93436"
451
+ RoomTaxFormatIsInvalid = "93437"
452
+ RoomTaxIsTooLarge = "93438"
453
+ NoShowIndicatorIsInvalid = "93439"
454
+ AdvancedDepositIndicatorIsInvalid = "93440"
455
+ FireSafetyIndicatorIsInvalid = "93441"
456
+ PropertyPhoneIsInvalid = "93442"
442
457
  end
443
458
 
444
459
  module TravelCruise
@@ -496,6 +511,15 @@ module Braintree
496
511
  TicketNumberIsTooLong = "96320"
497
512
  end
498
513
  end
514
+
515
+ module AdditionalCharge
516
+ KindIsInvalid = "96601"
517
+ KindMustBeUnique = "96602"
518
+ AmountMustBeGreaterThanZero = "96603"
519
+ AmountFormatIsInvalid = "96604"
520
+ AmountIsTooLarge = "96605"
521
+ AmountIsRequired = "96606"
522
+ end
499
523
  end
500
524
 
501
525
  module ExternalVault
@@ -6,7 +6,7 @@ module Braintree
6
6
  PayPalOneTimePayment = "fake-paypal-one-time-nonce"
7
7
  PayPalFuturePayment = "fake-paypal-future-nonce"
8
8
  PayPalBillingAgreement = "fake-paypal-billing-agreement-nonce"
9
- LocalPayment = "fake-local-payment-nonce"
9
+ LocalPayment = "fake-local-payment-method-nonce"
10
10
  ApplePayVisa = "fake-apple-pay-visa-nonce"
11
11
  ApplePayMasterCard = "fake-apple-pay-mastercard-nonce"
12
12
  ApplePayAmEx = "fake-apple-pay-amex-nonce"
@@ -64,6 +64,17 @@ module Braintree
64
64
  All = constants.map { |c| const_get(c) }
65
65
  end
66
66
 
67
+ module AdditionalCharge
68
+ Restaurant = "restaurant"
69
+ GiftShop = "gift_shop"
70
+ MiniBar = "mini_bar"
71
+ Telephone = "telephone"
72
+ Laundry = "laundry"
73
+ Other = "other"
74
+
75
+ All = constants.map { |c| const_get(c) }
76
+ end
77
+
67
78
  module Type # :nodoc:
68
79
  Credit = "credit" # :nodoc:
69
80
  Sale = "sale" # :nodoc:
@@ -3,11 +3,18 @@ module Braintree
3
3
  class LocalPaymentDetails
4
4
  include BaseModule
5
5
 
6
+ attr_reader :capture_id
6
7
  attr_reader :custom_field
8
+ attr_reader :debug_id
7
9
  attr_reader :description
8
10
  attr_reader :funding_source
9
11
  attr_reader :payer_id
10
12
  attr_reader :payment_id
13
+ attr_reader :refund_from_transaction_fee_amount
14
+ attr_reader :refund_from_transaction_fee_currency_iso_code
15
+ attr_reader :refund_id
16
+ attr_reader :transaction_fee_amount
17
+ attr_reader :transaction_fee_currency_iso_code
11
18
 
12
19
  def initialize(attributes)
13
20
  set_instance_variables_from_hash attributes unless attributes.nil?
@@ -205,6 +205,11 @@ module Braintree
205
205
  :eci_flag,
206
206
  :cavv,
207
207
  :xid,
208
+ :three_d_secure_version,
209
+ :authentication_response,
210
+ :directory_response,
211
+ :cavv_algorithm,
212
+ :ds_transaction_id,
208
213
  ]
209
214
  },
210
215
  {:options => [
@@ -237,13 +242,16 @@ module Braintree
237
242
  {:industry => [
238
243
  :industry_type,
239
244
  {:data => [
240
- :folio_number, :check_in_date, :check_out_date, :travel_package, :lodging_check_in_date, :lodging_check_out_date, :departure_date, :lodging_name, :room_rate,
245
+ :folio_number, :check_in_date, :check_out_date, :travel_package, :lodging_check_in_date, :lodging_check_out_date, :departure_date, :lodging_name, :room_rate, :room_tax,
241
246
  :passenger_first_name, :passenger_last_name, :passenger_middle_initial, :passenger_title, :issued_date, :travel_agency_name, :travel_agency_code, :ticket_number,
242
- :issuing_carrier_code, :customer_code, :fare_amount, :fee_amount, :tax_amount, :restricted_ticket,
247
+ :issuing_carrier_code, :customer_code, :fare_amount, :fee_amount, :tax_amount, :restricted_ticket, :no_show, :advanced_deposit, :fire_safe, :property_phone,
243
248
  {:legs => [
244
249
  :conjunction_ticket, :exchange_ticket, :coupon_number, :service_class, :carrier_code, :fare_basis_code, :flight_number, :departure_date, :departure_airport_code, :departure_time,
245
250
  :arrival_airport_code, :arrival_time, :stopover_permitted, :fare_amount, :fee_amount, :tax_amount, :endorsement_or_restrictions,
246
251
  ]},
252
+ {:additional_charges => [
253
+ :kind, :amount,
254
+ ]},
247
255
  ]},
248
256
  ]},
249
257
  {:apple_pay_card => [:number, :cardholder_name, :cryptogram, :expiration_month, :expiration_year, :eci_indicator]},
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 2
4
- Minor = 96
4
+ Minor = 97
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -550,6 +550,75 @@ describe Braintree::CreditCard do
550
550
  credit_card.card_type.should == Braintree::CreditCard::CardType::Elo
551
551
  end
552
552
  end
553
+
554
+ context "verification_account_type" do
555
+ it "verifies card with account_type debit" do
556
+ customer = Braintree::Customer.create!
557
+ result = Braintree::CreditCard.create(
558
+ :customer_id => customer.id,
559
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
560
+ :expiration_month => "11",
561
+ :expiration_year => "2099",
562
+ :options => {
563
+ :verify_card => true,
564
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
565
+ :verification_account_type => "debit",
566
+ }
567
+ )
568
+
569
+ expect(result).to be_success
570
+ end
571
+
572
+ it "verifies card with account_type credit" do
573
+ customer = Braintree::Customer.create!
574
+ result = Braintree::CreditCard.create(
575
+ :customer_id => customer.id,
576
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
577
+ :expiration_month => "11",
578
+ :expiration_year => "2099",
579
+ :options => {
580
+ :verify_card => true,
581
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
582
+ :verification_account_type => "credit",
583
+ }
584
+ )
585
+
586
+ expect(result).to be_success
587
+ end
588
+
589
+ it "errors with invalid account_type" do
590
+ customer = Braintree::Customer.create!
591
+ result = Braintree::CreditCard.create(
592
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
593
+ :expiration_month => "11",
594
+ :expiration_year => "2099",
595
+ :options => {
596
+ :verify_card => true,
597
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
598
+ :verification_account_type => "ach",
599
+ }
600
+ )
601
+
602
+ expect(result).to_not be_success
603
+ expect(result.errors.for(:credit_card).for(:options).on(:verification_account_type)[0].code).to eq Braintree::ErrorCodes::CreditCard::VerificationAccountTypeIsInvalid
604
+ end
605
+
606
+ it "errors when account_type not supported by merchant" do
607
+ customer = Braintree::Customer.create!
608
+ result = Braintree::CreditCard.create(
609
+ :number => Braintree::Test::CreditCardNumbers::Visa,
610
+ :expiration_month => "11",
611
+ :expiration_year => "2099",
612
+ :options => {
613
+ :verify_card => true,
614
+ :verification_account_type => "credit",
615
+ }
616
+ )
617
+
618
+ expect(result).to_not be_success
619
+ expect(result.errors.for(:credit_card).for(:options).on(:verification_account_type)[0].code).to eq Braintree::ErrorCodes::CreditCard::VerificationAccountTypeNotSupported
620
+ end
621
+ end
553
622
  end
554
623
 
555
624
  describe "self.create!" do
@@ -937,6 +1006,44 @@ describe Braintree::CreditCard do
937
1006
  Braintree::CreditCard.find(card1.token).should_not be_default
938
1007
  Braintree::CreditCard.find(card2.token).should be_default
939
1008
  end
1009
+
1010
+ context "verification_account_type" do
1011
+ it "updates the credit card with account_type credit" do
1012
+ customer = Braintree::Customer.create!
1013
+ card = Braintree::CreditCard.create(
1014
+ :customer_id => customer.id,
1015
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
1016
+ :expiration_date => "06/2013",
1017
+ ).credit_card
1018
+ update_result = Braintree::CreditCard.update(
1019
+ card.token,
1020
+ :options => {
1021
+ :verify_card => true,
1022
+ :verification_account_type => "credit",
1023
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
1024
+ },
1025
+ )
1026
+ expect(update_result).to be_success
1027
+ end
1028
+
1029
+ it "updates the credit card with account_type debit" do
1030
+ customer = Braintree::Customer.create!
1031
+ card = Braintree::CreditCard.create(
1032
+ :customer_id => customer.id,
1033
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
1034
+ :expiration_date => "06/2013",
1035
+ ).credit_card
1036
+ update_result = Braintree::CreditCard.update(
1037
+ card.token,
1038
+ :options => {
1039
+ :verify_card => true,
1040
+ :verification_account_type => "debit",
1041
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
1042
+ },
1043
+ )
1044
+ expect(update_result).to be_success
1045
+ end
1046
+ end
940
1047
  end
941
1048
 
942
1049
  describe "self.update!" do
@@ -496,6 +496,97 @@ describe Braintree::Customer do
496
496
 
497
497
  result.success?.should == true
498
498
  end
499
+
500
+ context "verification_account_type" do
501
+ it "verifies card with account_type debit" do
502
+ nonce = nonce_for_new_payment_method(
503
+ :credit_card => {
504
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
505
+ :expiration_month => "11",
506
+ :expiration_year => "2099",
507
+ }
508
+ )
509
+ result = Braintree::Customer.create(
510
+ :payment_method_nonce => nonce,
511
+ :credit_card => {
512
+ :options => {
513
+ :verify_card => true,
514
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
515
+ :verification_account_type => "debit",
516
+ }
517
+ }
518
+ )
519
+
520
+ expect(result).to be_success
521
+ end
522
+
523
+ it "verifies card with account_type credit" do
524
+ nonce = nonce_for_new_payment_method(
525
+ :credit_card => {
526
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
527
+ :expiration_month => "11",
528
+ :expiration_year => "2099",
529
+ }
530
+ )
531
+ result = Braintree::Customer.create(
532
+ :payment_method_nonce => nonce,
533
+ :credit_card => {
534
+ :options => {
535
+ :verify_card => true,
536
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
537
+ :verification_account_type => "credit",
538
+ }
539
+ }
540
+ )
541
+
542
+ expect(result).to be_success
543
+ end
544
+
545
+ it "errors with invalid account_type" do
546
+ nonce = nonce_for_new_payment_method(
547
+ :credit_card => {
548
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
549
+ :expiration_month => "11",
550
+ :expiration_year => "2099",
551
+ }
552
+ )
553
+ result = Braintree::Customer.create(
554
+ :payment_method_nonce => nonce,
555
+ :credit_card => {
556
+ :options => {
557
+ :verify_card => true,
558
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
559
+ :verification_account_type => "ach",
560
+ }
561
+ }
562
+ )
563
+
564
+ expect(result).to_not be_success
565
+ expect(result.errors.for(:customer).for(:credit_card).for(:options).on(:verification_account_type)[0].code).to eq Braintree::ErrorCodes::CreditCard::VerificationAccountTypeIsInvalid
566
+ end
567
+
568
+ it "errors when account_type not supported by merchant" do
569
+ nonce = nonce_for_new_payment_method(
570
+ :credit_card => {
571
+ :number => Braintree::Test::CreditCardNumbers::Visa,
572
+ :expiration_month => "11",
573
+ :expiration_year => "2099",
574
+ }
575
+ )
576
+ result = Braintree::Customer.create(
577
+ :payment_method_nonce => nonce,
578
+ :credit_card => {
579
+ :options => {
580
+ :verify_card => true,
581
+ :verification_account_type => "credit",
582
+ }
583
+ }
584
+ )
585
+
586
+ expect(result).to_not be_success
587
+ expect(result.errors.for(:customer).for(:credit_card).for(:options).on(:verification_account_type)[0].code).to eq Braintree::ErrorCodes::CreditCard::VerificationAccountTypeNotSupported
588
+ end
589
+ end
499
590
  end
500
591
 
501
592
  describe "self.create!" do
@@ -1251,6 +1342,46 @@ describe Braintree::Customer do
1251
1342
  result.success?.should == false
1252
1343
  result.errors.for(:customer).on(:email)[0].message.should == "Email is an invalid format."
1253
1344
  end
1345
+
1346
+ context "verification_account_type" do
1347
+ it "updates the credit card with account_type credit" do
1348
+ customer = Braintree::Customer.create!
1349
+ update_result = Braintree::Customer.update(
1350
+ customer.id,
1351
+ :credit_card => {
1352
+ :cardholder_name => "New Holder",
1353
+ :cvv => "456",
1354
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
1355
+ :expiration_date => "06/2013",
1356
+ :options => {
1357
+ :verify_card => true,
1358
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
1359
+ :verification_account_type => "credit",
1360
+ },
1361
+ }
1362
+ )
1363
+ expect(update_result).to be_success
1364
+ end
1365
+
1366
+ it "updates the credit card with account_type debit" do
1367
+ customer = Braintree::Customer.create!
1368
+ update_result = Braintree::Customer.update(
1369
+ customer.id,
1370
+ :credit_card => {
1371
+ :cardholder_name => "New Holder",
1372
+ :cvv => "456",
1373
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
1374
+ :expiration_date => "06/2013",
1375
+ :options => {
1376
+ :verify_card => true,
1377
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
1378
+ :verification_account_type => "debit",
1379
+ },
1380
+ }
1381
+ )
1382
+ expect(update_result).to be_success
1383
+ end
1384
+ end
1254
1385
  end
1255
1386
 
1256
1387
  describe "self.update!" do
@@ -83,6 +83,17 @@ describe Braintree::PaymentMethodNonce do
83
83
  nonce.details.fetch(:card_type).should == "Visa"
84
84
  end
85
85
 
86
+ it "return paypal details if details exist" do
87
+ result = Braintree::PaymentMethodNonce.find("fake-google-pay-paypal-nonce")
88
+
89
+ nonce = result.payment_method_nonce
90
+
91
+ nonce.details.fetch(:payer_info).fetch(:first_name).should_not be_nil
92
+ nonce.details.fetch(:payer_info).fetch(:last_name).should_not be_nil
93
+ nonce.details.fetch(:payer_info).fetch(:email).should_not be_nil
94
+ nonce.details.fetch(:payer_info).fetch(:payer_id).should_not be_nil
95
+ end
96
+
86
97
  it "return venmo details if details exist" do
87
98
  result = Braintree::PaymentMethodNonce.find("fake-venmo-account-nonce")
88
99
 
@@ -162,7 +162,7 @@ describe Braintree::Transaction do
162
162
  it "accepts valid industry data" do
163
163
  result = Braintree::Transaction.create(
164
164
  :type => "sale",
165
- :amount => 1_00,
165
+ :amount => 1000_00,
166
166
  :credit_card => {
167
167
  :number => Braintree::Test::CreditCardNumbers::CardTypeIndicators::Prepaid,
168
168
  :expiration_date => "05/2009"
@@ -172,8 +172,23 @@ describe Braintree::Transaction do
172
172
  :data => {
173
173
  :folio_number => "ABCDEFG",
174
174
  :check_in_date => "2014-06-01",
175
- :check_out_date => "2014-06-30",
176
- :room_rate => "239.00",
175
+ :check_out_date => "2014-06-05",
176
+ :room_rate => 170_00,
177
+ :room_tax => 30_00,
178
+ :no_show => false,
179
+ :advanced_deposit => false,
180
+ :fire_safe => true,
181
+ :property_phone => "1112223345",
182
+ :additional_charges => [
183
+ {
184
+ :kind => Braintree::Transaction::AdditionalCharge::Telephone,
185
+ :amount => 50_00,
186
+ },
187
+ {
188
+ :kind => Braintree::Transaction::AdditionalCharge::Other,
189
+ :amount => 150_00,
190
+ },
191
+ ],
177
192
  }
178
193
  }
179
194
  )
@@ -183,7 +198,7 @@ describe Braintree::Transaction do
183
198
  it "returns errors if validations on industry lodging data fails" do
184
199
  result = Braintree::Transaction.create(
185
200
  :type => "sale",
186
- :amount => 1_00,
201
+ :amount => 500_00,
187
202
  :credit_card => {
188
203
  :number => Braintree::Test::CreditCardNumbers::CardTypeIndicators::Prepaid,
189
204
  :expiration_date => "05/2009"
@@ -195,13 +210,22 @@ describe Braintree::Transaction do
195
210
  :check_in_date => "2014-06-30",
196
211
  :check_out_date => "2014-06-01",
197
212
  :room_rate => "asdfasdf",
213
+ :additional_charges => [
214
+ {
215
+ :kind => "unknown",
216
+ :amount => 20_00,
217
+ },
218
+ ],
198
219
  }
199
220
  }
200
221
  )
201
222
  result.success?.should be(false)
202
223
  invalid_folio = Braintree::ErrorCodes::Transaction::Industry::Lodging::FolioNumberIsInvalid
203
224
  check_out_date_must_follow_check_in_date = Braintree::ErrorCodes::Transaction::Industry::Lodging::CheckOutDateMustFollowCheckInDate
204
- result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should include *[invalid_folio, check_out_date_must_follow_check_in_date]
225
+ room_rate_format_is_invalid = Braintree::ErrorCodes::Transaction::Industry::Lodging::RoomRateFormatIsInvalid
226
+ invalid_additional_charge_kind = Braintree::ErrorCodes::Transaction::Industry::AdditionalCharge::KindIsInvalid
227
+ 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]
228
+ 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]
205
229
  end
206
230
  end
207
231
 
@@ -1148,9 +1172,9 @@ describe Braintree::Transaction do
1148
1172
  result = Braintree::Transaction.sale(
1149
1173
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1150
1174
  :credit_card => {
1151
- :number => Braintree::Test::CreditCardNumbers::Visa,
1152
- :expiration_date => "05/2009"
1153
- },
1175
+ :number => Braintree::Test::CreditCardNumbers::Visa,
1176
+ :expiration_date => "05/2009"
1177
+ },
1154
1178
  :tax_amount => 'abcd'
1155
1179
  )
1156
1180
  result.success?.should == false
@@ -1161,9 +1185,9 @@ describe Braintree::Transaction do
1161
1185
  result = Braintree::Transaction.sale(
1162
1186
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1163
1187
  :credit_card => {
1164
- :number => Braintree::Test::CreditCardNumbers::Visa,
1165
- :expiration_date => "05/2009"
1166
- },
1188
+ :number => Braintree::Test::CreditCardNumbers::Visa,
1189
+ :expiration_date => "05/2009"
1190
+ },
1167
1191
  :purchase_order_number => 'a' * 18
1168
1192
  )
1169
1193
  result.success?.should == false
@@ -1174,9 +1198,9 @@ describe Braintree::Transaction do
1174
1198
  result = Braintree::Transaction.sale(
1175
1199
  :amount => Braintree::Test::TransactionAmounts::Authorize,
1176
1200
  :credit_card => {
1177
- :number => Braintree::Test::CreditCardNumbers::Visa,
1178
- :expiration_date => "05/2009"
1179
- },
1201
+ :number => Braintree::Test::CreditCardNumbers::Visa,
1202
+ :expiration_date => "05/2009"
1203
+ },
1180
1204
  :purchase_order_number => "\303\237\303\245\342\210\202"
1181
1205
  )
1182
1206
  result.success?.should == false
@@ -2113,6 +2137,11 @@ describe Braintree::Transaction do
2113
2137
  :eci_flag => "02",
2114
2138
  :cavv => "some_cavv",
2115
2139
  :xid => "some_xid",
2140
+ :three_d_secure_version => "1.0.2",
2141
+ :authentication_response => "Y",
2142
+ :directory_response => "Y",
2143
+ :cavv_algorithm => "2",
2144
+ :ds_transaction_id => "some_ds_id",
2116
2145
  }
2117
2146
  )
2118
2147
 
@@ -2133,6 +2162,11 @@ describe Braintree::Transaction do
2133
2162
  :eci_flag => "02",
2134
2163
  :cavv => "some_cavv",
2135
2164
  :xid => "some_xid",
2165
+ :three_d_secure_version => "1.0.2",
2166
+ :authentication_response => "Y",
2167
+ :directory_response => "Y",
2168
+ :cavv_algorithm => "2",
2169
+ :ds_transaction_id => "some_ds_id",
2136
2170
  }
2137
2171
  )
2138
2172
  result.success?.should == false
@@ -2169,6 +2203,11 @@ describe Braintree::Transaction do
2169
2203
  :eci_flag => "05",
2170
2204
  :cavv => "",
2171
2205
  :xid => "",
2206
+ :three_d_secure_version => "1.0.2",
2207
+ :authentication_response => "Y",
2208
+ :directory_response => "Y",
2209
+ :cavv_algorithm => "2",
2210
+ :ds_transaction_id => "some_ds_id",
2172
2211
  }
2173
2212
  )
2174
2213
  result.success?.should == false
@@ -2187,13 +2226,111 @@ describe Braintree::Transaction do
2187
2226
  :eci_flag => "bad_eci_flag",
2188
2227
  :cavv => "some_cavv",
2189
2228
  :xid => "some_xid",
2229
+ :three_d_secure_version => "1.0.2",
2230
+ :authentication_response => "Y",
2231
+ :directory_response => "Y",
2232
+ :cavv_algorithm => "2",
2233
+ :ds_transaction_id => "some_ds_id",
2190
2234
  }
2191
2235
  )
2192
2236
  result.success?.should == false
2193
2237
  result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:eci_flag)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureEciFlagIsInvalid
2194
2238
  end
2195
2239
 
2240
+ it "returns an error for transaction when the three_d_secure_pass_thru three_d_secure_version is invalid" do
2241
+ result = Braintree::Transaction.create(
2242
+ :type => "sale",
2243
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2244
+ :credit_card => {
2245
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2246
+ :expiration_date => "12/12",
2247
+ },
2248
+ :three_d_secure_pass_thru => {
2249
+ :eci_flag => "02",
2250
+ :cavv => "some_cavv",
2251
+ :xid => "some_xid",
2252
+ :three_d_secure_version => "invalid",
2253
+ :authentication_response => "Y",
2254
+ :directory_response => "Y",
2255
+ :cavv_algorithm => "2",
2256
+ :ds_transaction_id => "some_ds_id",
2257
+ }
2258
+ )
2259
+ result.success?.should == false
2260
+ result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:three_d_secure_version)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureThreeDSecureVersionIsInvalid
2261
+ end
2196
2262
 
2263
+ it "returns an error for transaction when the three_d_secure_pass_thru authentication_response is invalid" do
2264
+ result = Braintree::Transaction.create(
2265
+ :type => "sale",
2266
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2267
+ :merchant_account_id => SpecHelper:: AdyenMerchantAccountId,
2268
+ :credit_card => {
2269
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2270
+ :expiration_date => "12/12",
2271
+ },
2272
+ :three_d_secure_pass_thru => {
2273
+ :eci_flag => "02",
2274
+ :cavv => "some_cavv",
2275
+ :xid => "some_xid",
2276
+ :three_d_secure_version => "1.0.2",
2277
+ :authentication_response => "asdf",
2278
+ :directory_response => "Y",
2279
+ :cavv_algorithm => "2",
2280
+ :ds_transaction_id => "some_ds_id",
2281
+ }
2282
+ )
2283
+ result.success?.should == false
2284
+ result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:authentication_response)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureAuthenticationResponseIsInvalid
2285
+ end
2286
+
2287
+ it "returns an error for transaction when the three_d_secure_pass_thru directory_response is invalid" do
2288
+ result = Braintree::Transaction.create(
2289
+ :type => "sale",
2290
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2291
+ :merchant_account_id => SpecHelper:: AdyenMerchantAccountId,
2292
+ :credit_card => {
2293
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2294
+ :expiration_date => "12/12",
2295
+ },
2296
+ :three_d_secure_pass_thru => {
2297
+ :eci_flag => "02",
2298
+ :cavv => "some_cavv",
2299
+ :xid => "some_xid",
2300
+ :three_d_secure_version => "1.0.2",
2301
+ :authentication_response => "Y",
2302
+ :directory_response => "abc",
2303
+ :cavv_algorithm => "2",
2304
+ :ds_transaction_id => "some_ds_id",
2305
+ }
2306
+ )
2307
+ result.success?.should == false
2308
+ result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:directory_response)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureDirectoryResponseIsInvalid
2309
+ end
2310
+
2311
+ it "returns an error for transaction when the three_d_secure_pass_thru cavv_algorithm is invalid" do
2312
+ result = Braintree::Transaction.create(
2313
+ :type => "sale",
2314
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2315
+ :merchant_account_id => SpecHelper:: AdyenMerchantAccountId,
2316
+ :credit_card => {
2317
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2318
+ :expiration_date => "12/12",
2319
+ },
2320
+ :three_d_secure_pass_thru => {
2321
+ :eci_flag => "02",
2322
+ :cavv => "some_cavv",
2323
+ :xid => "some_xid",
2324
+ :three_d_secure_version => "1.0.2",
2325
+ :authentication_response => "Y",
2326
+ :directory_response => "Y",
2327
+ :cavv_algorithm => "bad_alg",
2328
+ :ds_transaction_id => "some_ds_id",
2329
+ }
2330
+ )
2331
+ result.success?.should == false
2332
+ result.errors.for(:transaction).for(:three_d_secure_pass_thru).on(:cavv_algorithm)[0].code.should == Braintree::ErrorCodes::Transaction::ThreeDSecureCavvAlgorithmIsInvalid
2333
+ end
2197
2334
  end
2198
2335
 
2199
2336
  context "paypal" do
@@ -2275,6 +2412,9 @@ describe Braintree::Transaction do
2275
2412
  result.transaction.local_payment_details.should_not be_nil
2276
2413
  result.transaction.local_payment_details.funding_source.should_not be_nil
2277
2414
  result.transaction.local_payment_details.payment_id.should_not be_nil
2415
+ result.transaction.local_payment_details.capture_id.should_not be_nil
2416
+ result.transaction.local_payment_details.transaction_fee_amount.should_not be_nil
2417
+ result.transaction.local_payment_details.transaction_fee_currency_iso_code.should_not be_nil
2278
2418
  end
2279
2419
  end
2280
2420
 
@@ -3941,118 +4081,118 @@ describe Braintree::Transaction do
3941
4081
 
3942
4082
  context "account_type" do
3943
4083
  it "creates a Hiper transaction with account type credit" do
3944
- result = Braintree::Transaction.create(
3945
- :type => "sale",
3946
- :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4084
+ result = Braintree::Transaction.create(
4085
+ :type => "sale",
4086
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4087
+ :credit_card => {
4088
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
4089
+ :expiration_date => "05/2009"
4090
+ },
4091
+ :amount => "10.00",
4092
+ :options => {
3947
4093
  :credit_card => {
3948
- :number => Braintree::Test::CreditCardNumbers::Hiper,
3949
- :expiration_date => "05/2009"
3950
- },
3951
- :amount => "10.00",
3952
- :options => {
3953
- :credit_card => {
3954
- :account_type => "credit",
3955
- }
4094
+ :account_type => "credit",
3956
4095
  }
3957
- )
3958
- result.success?.should == true
3959
- result.transaction.credit_card_details.account_type.should == "credit"
3960
- end
4096
+ }
4097
+ )
4098
+ result.success?.should == true
4099
+ result.transaction.credit_card_details.account_type.should == "credit"
4100
+ end
3961
4101
 
3962
- it "creates a Hipercard transaction with account_type credit" do
3963
- result = Braintree::Transaction.create(
3964
- :type => "sale",
3965
- :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4102
+ it "creates a Hipercard transaction with account_type credit" do
4103
+ result = Braintree::Transaction.create(
4104
+ :type => "sale",
4105
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4106
+ :credit_card => {
4107
+ :number => Braintree::Test::CreditCardNumbers::Hipercard,
4108
+ :expiration_date => "05/2009"
4109
+ },
4110
+ :amount => "10.00",
4111
+ :options => {
3966
4112
  :credit_card => {
3967
- :number => Braintree::Test::CreditCardNumbers::Hipercard,
3968
- :expiration_date => "05/2009"
3969
- },
3970
- :amount => "10.00",
3971
- :options => {
3972
- :credit_card => {
3973
- :account_type => "credit",
3974
- }
4113
+ :account_type => "credit",
3975
4114
  }
3976
- )
3977
- result.success?.should == true
3978
- result.transaction.credit_card_details.account_type.should == "credit"
3979
- end
4115
+ }
4116
+ )
4117
+ result.success?.should == true
4118
+ result.transaction.credit_card_details.account_type.should == "credit"
4119
+ end
3980
4120
 
3981
- it "creates a Hiper transaction with account_type debit" do
3982
- result = Braintree::Transaction.create(
3983
- :type => "sale",
3984
- :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4121
+ it "creates a Hiper transaction with account_type debit" do
4122
+ result = Braintree::Transaction.create(
4123
+ :type => "sale",
4124
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4125
+ :credit_card => {
4126
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
4127
+ :expiration_date => "05/2009"
4128
+ },
4129
+ :amount => "10.00",
4130
+ :options => {
3985
4131
  :credit_card => {
3986
- :number => Braintree::Test::CreditCardNumbers::Hiper,
3987
- :expiration_date => "05/2009"
4132
+ :account_type => "debit",
3988
4133
  },
3989
- :amount => "10.00",
3990
- :options => {
3991
- :credit_card => {
3992
- :account_type => "debit",
3993
- },
3994
- :submit_for_settlement => true,
3995
- }
3996
- )
3997
- result.success?.should == true
3998
- result.transaction.credit_card_details.account_type.should == "debit"
3999
- end
4134
+ :submit_for_settlement => true,
4135
+ }
4136
+ )
4137
+ result.success?.should == true
4138
+ result.transaction.credit_card_details.account_type.should == "debit"
4139
+ end
4000
4140
 
4001
- it "does not allow auths with account_type debit" do
4002
- result = Braintree::Transaction.create(
4003
- :type => "sale",
4004
- :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4141
+ it "does not allow auths with account_type debit" do
4142
+ result = Braintree::Transaction.create(
4143
+ :type => "sale",
4144
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4145
+ :credit_card => {
4146
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
4147
+ :expiration_date => "05/2009"
4148
+ },
4149
+ :amount => "10.00",
4150
+ :options => {
4005
4151
  :credit_card => {
4006
- :number => Braintree::Test::CreditCardNumbers::Hiper,
4007
- :expiration_date => "05/2009"
4152
+ :account_type => "debit",
4008
4153
  },
4009
- :amount => "10.00",
4010
- :options => {
4011
- :credit_card => {
4012
- :account_type => "debit",
4013
- },
4014
- }
4015
- )
4016
- result.success?.should == false
4017
- result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeDebitDoesNotSupportAuths
4018
- end
4154
+ }
4155
+ )
4156
+ result.success?.should == false
4157
+ result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeDebitDoesNotSupportAuths
4158
+ end
4019
4159
 
4020
- it "does not allow invalid account_type" do
4021
- result = Braintree::Transaction.create(
4022
- :type => "sale",
4023
- :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4160
+ it "does not allow invalid account_type" do
4161
+ result = Braintree::Transaction.create(
4162
+ :type => "sale",
4163
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4164
+ :credit_card => {
4165
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
4166
+ :expiration_date => "05/2009"
4167
+ },
4168
+ :amount => "10.00",
4169
+ :options => {
4024
4170
  :credit_card => {
4025
- :number => Braintree::Test::CreditCardNumbers::Hiper,
4026
- :expiration_date => "05/2009"
4171
+ :account_type => "ach",
4027
4172
  },
4028
- :amount => "10.00",
4029
- :options => {
4030
- :credit_card => {
4031
- :account_type => "ach",
4032
- },
4033
- }
4034
- )
4035
- result.success?.should == false
4036
- result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeIsInvalid
4037
- end
4173
+ }
4174
+ )
4175
+ result.success?.should == false
4176
+ result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeIsInvalid
4177
+ end
4038
4178
 
4039
- it "does not allow account_type not supported by merchant" do
4040
- result = Braintree::Transaction.create(
4041
- :type => "sale",
4179
+ it "does not allow account_type not supported by merchant" do
4180
+ result = Braintree::Transaction.create(
4181
+ :type => "sale",
4182
+ :credit_card => {
4183
+ :number => Braintree::Test::CreditCardNumbers::Visa,
4184
+ :expiration_date => "05/2009"
4185
+ },
4186
+ :amount => "10.00",
4187
+ :options => {
4042
4188
  :credit_card => {
4043
- :number => Braintree::Test::CreditCardNumbers::Visa,
4044
- :expiration_date => "05/2009"
4189
+ :account_type => "credit",
4045
4190
  },
4046
- :amount => "10.00",
4047
- :options => {
4048
- :credit_card => {
4049
- :account_type => "credit",
4050
- },
4051
- }
4052
- )
4053
- result.success?.should == false
4054
- result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeNotSupported
4055
- end
4191
+ }
4192
+ )
4193
+ result.success?.should == false
4194
+ result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeNotSupported
4195
+ end
4056
4196
  end
4057
4197
  end
4058
4198
 
@@ -4843,11 +4983,11 @@ describe Braintree::Transaction do
4843
4983
  )
4844
4984
 
4845
4985
  options = {
4846
- :descriptor => {
4847
- :name => '123*123456789012345678',
4848
- :phone => '3334445555',
4849
- :url => "ebay.com"
4850
- }
4986
+ :descriptor => {
4987
+ :name => '123*123456789012345678',
4988
+ :phone => '3334445555',
4989
+ :url => "ebay.com"
4990
+ }
4851
4991
  }
4852
4992
 
4853
4993
  result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
@@ -5,6 +5,7 @@ unless defined?(SPEC_HELPER_LOADED)
5
5
  require "bundler/setup"
6
6
  require "rspec"
7
7
  require "libxml"
8
+ require "pry"
8
9
 
9
10
  braintree_lib = "#{project_root}/lib"
10
11
  $LOAD_PATH << braintree_lib
@@ -25,7 +25,7 @@ describe Braintree::CreditCard do
25
25
  :device_data,
26
26
  :fraud_merchant_id,
27
27
  :payment_method_nonce,
28
- {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method]},
28
+ {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
29
29
  {:billing_address => [
30
30
  :company,
31
31
  :country_code_alpha2,
@@ -61,7 +61,7 @@ describe Braintree::CreditCard do
61
61
  :device_data,
62
62
  :fraud_merchant_id,
63
63
  :payment_method_nonce,
64
- {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method]},
64
+ {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
65
65
  {:billing_address => [
66
66
  :company,
67
67
  :country_code_alpha2,
@@ -101,7 +101,7 @@ describe Braintree::Customer do
101
101
  :device_data,
102
102
  :fraud_merchant_id,
103
103
  :payment_method_nonce,
104
- {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method]},
104
+ {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
105
105
  {:billing_address => [
106
106
  :company,
107
107
  :country_code_alpha2,
@@ -186,6 +186,7 @@ describe Braintree::Customer do
186
186
  :verification_amount,
187
187
  :venmo_sdk_session,
188
188
  :fail_on_duplicate_payment_method,
189
+ :verification_account_type,
189
190
  :update_existing_token
190
191
  ]},
191
192
  {:billing_address => [
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.96.0
4
+ version: 2.97.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braintree
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-20 00:00:00.000000000 Z
11
+ date: 2019-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -318,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
318
318
  - !ruby/object:Gem::Version
319
319
  version: '0'
320
320
  requirements: []
321
- rubygems_version: 3.0.3
321
+ rubygems_version: 3.0.4
322
322
  signing_key:
323
323
  specification_version: 4
324
324
  summary: Braintree Gateway Ruby Client Library