braintree 2.94.0 → 2.95.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dce496fbd494eb6d7c00260e5f7ac5ce0082e588874e5ff85f8b1130009164c6
4
- data.tar.gz: 827b5db86f4b2144bbbe795f2bbd2abd06b7f4c85d577e99842c544705b234d1
3
+ metadata.gz: a6885baaa1cf0362ea29a6c57834122bfef5ef5e4f022527e7d8d25fa4c748b6
4
+ data.tar.gz: b2bff8e8cc234fcab9ee20a37c53f5977da827ab74b3634f4ac1e7f044423ca3
5
5
  SHA512:
6
- metadata.gz: 2d879cf0a13d3d799ecf92f8f447e91a75897ecc77a75ee9ed1a39a5d96f81b7e82b4f6edfa57147e689230ea5941ecb5f92e1e4fb3e0f8524cb2d8a66542bf8
7
- data.tar.gz: e402c7a9f7d351a89ad7c205012b26e66f9ca82ac15c73fc5ff432c2e00296dc78422ef8c2e80ad45d12f2e9901a8f343b9164736cecd3c578546316e0a26e0d
6
+ metadata.gz: f79c7a60e1eeb0ad4ae677d8402eb0aa1538f55d6a29e2b324acb0db6506b8ec43e04e32ca8a5b3de20ced19f383c99038435d9a1a525fad3d8cf2b7aeb5d6df
7
+ data.tar.gz: 109bbdea462fddac547448a411f1d99a020ef46833313608846cb1d04c49eca0aa508a4221ac044cde8bb8a03251dcdf26002050d1499b857fe83b90f74a3a03
@@ -46,7 +46,7 @@ module Braintree
46
46
 
47
47
  def self._create_signature
48
48
  [
49
- {:options => [:amount, :merchant_account_id]},
49
+ {:options => [:amount, :merchant_account_id, :account_type]},
50
50
  {:credit_card => [
51
51
  :cardholder_name, :cvv, :expiration_date, :expiration_month, :expiration_year,
52
52
  :number, {:billing_address => AddressGateway._shared_signature}
@@ -100,6 +100,8 @@ module Braintree
100
100
  TokenIsTooLong = "91720"
101
101
  VenmoSDKPaymentMethodCodeCardTypeIsNotAccepted = "91726"
102
102
  VerificationNotSupportedOnThisMerchantAccount = "91730"
103
+ VerificationAccountTypeIsInvalid = "91757"
104
+ VerificationAccountTypeNotSupported = "91758"
103
105
 
104
106
  module Options
105
107
  UpdateExistingTokenIsInvalid = "91723"
@@ -419,6 +421,12 @@ module Braintree
419
421
  module PayPal
420
422
  CustomFieldTooLong = "91580"
421
423
  end
424
+
425
+ module CreditCard
426
+ AccountTypeIsInvalid = "915184"
427
+ AccountTypeNotSupported = "915185"
428
+ AccountTypeDebitDoesNotSupportAuths = "915186"
429
+ end
422
430
  end
423
431
 
424
432
  module Industry
@@ -724,6 +732,8 @@ module Braintree
724
732
  MerchantAccountIsSuspended = "94205"
725
733
  MerchantAccountIsForbidden = "94206"
726
734
  MerchantAccountCannotBeSubMerchantAccount = "94208"
735
+ AccountTypeIsInvalid = "942184"
736
+ AccountTypeNotSupported = "942185"
727
737
  end
728
738
  end
729
739
 
@@ -155,6 +155,7 @@ module Braintree
155
155
  options = [
156
156
  :make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session,
157
157
  :verification_amount, :us_bank_account_verification_method,
158
+ :verification_account_type,
158
159
  :paypal => [
159
160
  :payee_email,
160
161
  :order_id,
@@ -32,6 +32,9 @@ module Braintree
32
32
  MasterCards = %w[5105105105105100 5555555555554444]
33
33
 
34
34
  Elo = "5066991111111118"
35
+ Hiper = "6370950000000005"
36
+ Hipercard = "6062820524845321"
37
+
35
38
  Visa = "4012888888881881"
36
39
  VisaInternational = "4009348888881881" # :nodoc:
37
40
  VisaPrepaid = "4500600000000061"
@@ -3,6 +3,7 @@ module Braintree
3
3
  class CreditCardDetails # :nodoc:
4
4
  include BaseModule
5
5
 
6
+ attr_reader :account_type
6
7
  attr_reader :bin
7
8
  attr_reader :card_type
8
9
  attr_reader :cardholder_name
@@ -223,7 +223,8 @@ module Braintree
223
223
  {:paypal => [:custom_field, :payee_id, :payee_email, :description, {:supplementary_data => :_any_key_}]},
224
224
  {:three_d_secure => [:required]},
225
225
  {:amex_rewards => [:request_id, :points, :currency_amount, :currency_iso_code]},
226
- {:venmo => [:profile_id]}
226
+ {:venmo => [:profile_id]},
227
+ {:credit_card => [:account_type]},
227
228
  ]
228
229
  },
229
230
  {:external_vault => [
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 2
4
- Minor = 94
4
+ Minor = 95
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -40,7 +40,11 @@ module Braintree
40
40
  ConnectedMerchantStatusTransitioned = "connected_merchant_status_transitioned"
41
41
  ConnectedMerchantPayPalStatusChanged = "connected_merchant_paypal_status_changed"
42
42
 
43
+ # NEXT_MAJOR_VERSION remove GrantedPaymentInstrumentUpdate. Kind is not sent by Braintree Gateway.
44
+ # Kind will either be GrantorUpdatedGrantedPaymentMethod or RecipientUpdatedGrantedPaymentMethod.
43
45
  GrantedPaymentInstrumentUpdate = "granted_payment_instrument_update"
46
+ GrantorUpdatedGrantedPaymentMethod = "grantor_updated_granted_payment_method"
47
+ RecipientUpdatedGrantedPaymentMethod = "recipient_updated_granted_payment_method"
44
48
  GrantedPaymentInstrumentRevoked = "granted_payment_instrument_revoked"
45
49
 
46
50
  LocalPaymentCompleted = "local_payment_completed"
@@ -76,8 +76,13 @@ module Braintree
76
76
  _ideal_payment_complete_sample_xml(id)
77
77
  when Braintree::WebhookNotification::Kind::IdealPaymentFailed
78
78
  _ideal_payment_failed_sample_xml(id)
79
+ # NEXT_MAJOR_VERSION remove GrantedPaymentInstrumentUpdate
79
80
  when Braintree::WebhookNotification::Kind::GrantedPaymentInstrumentUpdate
80
81
  _granted_payment_instrument_update_sample_xml(id)
82
+ when Braintree::WebhookNotification::Kind::GrantorUpdatedGrantedPaymentMethod
83
+ _granted_payment_instrument_update_sample_xml(id)
84
+ when Braintree::WebhookNotification::Kind::RecipientUpdatedGrantedPaymentMethod
85
+ _granted_payment_instrument_update_sample_xml(id)
81
86
  when Braintree::WebhookNotification::Kind::LocalPaymentCompleted
82
87
  _local_payment_completed_sample_xml(id)
83
88
  else
@@ -61,6 +61,69 @@ describe Braintree::CreditCardVerification, "search" do
61
61
  result.success?.should == false
62
62
  result.errors.for(:verification).for(:options).first.code.should == Braintree::ErrorCodes::Verification::Options::AmountCannotBeNegative
63
63
  end
64
+
65
+ it "returns account type with debit" do
66
+ result = Braintree::CreditCardVerification.create(
67
+ :credit_card => {
68
+ :expiration_date => "01/2020",
69
+ :number => Braintree::Test::CreditCardNumbers::Hiper
70
+ },
71
+ :options => {
72
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
73
+ :account_type => "debit",
74
+ },
75
+ )
76
+
77
+ result.success?.should == true
78
+ result.credit_card_verification.credit_card[:account_type].should == "debit"
79
+ end
80
+
81
+ it "returns account type with credit" do
82
+ result = Braintree::CreditCardVerification.create(
83
+ :credit_card => {
84
+ :expiration_date => "01/2020",
85
+ :number => Braintree::Test::CreditCardNumbers::Hiper
86
+ },
87
+ :options => {
88
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
89
+ :account_type => "credit",
90
+ },
91
+ )
92
+
93
+ result.success?.should == true
94
+ result.credit_card_verification.credit_card[:account_type].should == "credit"
95
+ end
96
+
97
+ it "errors with unsupported account type" do
98
+ result = Braintree::CreditCardVerification.create(
99
+ :credit_card => {
100
+ :expiration_date => "01/2020",
101
+ :number => Braintree::Test::CreditCardNumbers::Visa
102
+ },
103
+ :options => {
104
+ :account_type => "credit",
105
+ },
106
+ )
107
+
108
+ result.success?.should == false
109
+ result.errors.for(:verification).for(:options).on(:account_type)[0].code.should == Braintree::ErrorCodes::Verification::Options::AccountTypeNotSupported
110
+ end
111
+
112
+ it "errors with invalid account type" do
113
+ result = Braintree::CreditCardVerification.create(
114
+ :credit_card => {
115
+ :expiration_date => "01/2020",
116
+ :number => Braintree::Test::CreditCardNumbers::Hiper
117
+ },
118
+ :options => {
119
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
120
+ :account_type => "ach",
121
+ },
122
+ )
123
+
124
+ result.success?.should == false
125
+ result.errors.for(:verification).for(:options).on(:account_type)[0].code.should == Braintree::ErrorCodes::Verification::Options::AccountTypeIsInvalid
126
+ end
64
127
  end
65
128
 
66
129
  describe "self.find" do
@@ -487,6 +487,147 @@ describe Braintree::PaymentMethod do
487
487
  found_credit_card.billing_address.street_address.should == "456 Xyz Way"
488
488
  end
489
489
 
490
+ context "account_type" do
491
+ it "verifies card with account_type debit" do
492
+ nonce = nonce_for_new_payment_method(
493
+ :credit_card => {
494
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
495
+ :expiration_month => "11",
496
+ :expiration_year => "2099",
497
+ }
498
+ )
499
+ customer = Braintree::Customer.create!
500
+ result = Braintree::PaymentMethod.create(
501
+ :payment_method_nonce => nonce,
502
+ :customer_id => customer.id,
503
+ :options => {
504
+ :verify_card => true,
505
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
506
+ :verification_account_type => "debit",
507
+ }
508
+ )
509
+
510
+ result.should be_success
511
+ result.payment_method.verification.credit_card[:account_type].should == "debit"
512
+ end
513
+
514
+ it "verifies card with account_type credit" do
515
+ nonce = nonce_for_new_payment_method(
516
+ :credit_card => {
517
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
518
+ :expiration_month => "11",
519
+ :expiration_year => "2099",
520
+ }
521
+ )
522
+ customer = Braintree::Customer.create!
523
+ result = Braintree::PaymentMethod.create(
524
+ :payment_method_nonce => nonce,
525
+ :customer_id => customer.id,
526
+ :options => {
527
+ :verify_card => true,
528
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
529
+ :verification_account_type => "credit",
530
+ }
531
+ )
532
+
533
+ result.should be_success
534
+ result.payment_method.verification.credit_card[:account_type].should == "credit"
535
+ end
536
+
537
+ it "errors with invalid account_type" do
538
+ nonce = nonce_for_new_payment_method(
539
+ :credit_card => {
540
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
541
+ :expiration_month => "11",
542
+ :expiration_year => "2099",
543
+ }
544
+ )
545
+ customer = Braintree::Customer.create!
546
+ result = Braintree::PaymentMethod.create(
547
+ :payment_method_nonce => nonce,
548
+ :customer_id => customer.id,
549
+ :options => {
550
+ :verify_card => true,
551
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
552
+ :verification_account_type => "ach",
553
+ }
554
+ )
555
+
556
+ result.should_not be_success
557
+ result.errors.for(:credit_card).for(:options).on(:verification_account_type)[0].code.should == Braintree::ErrorCodes::CreditCard::VerificationAccountTypeIsInvalid
558
+ end
559
+
560
+ it "errors when account_type not supported by merchant" do
561
+ nonce = nonce_for_new_payment_method(
562
+ :credit_card => {
563
+ :number => Braintree::Test::CreditCardNumbers::Visa,
564
+ :expiration_month => "11",
565
+ :expiration_year => "2099",
566
+ }
567
+ )
568
+ customer = Braintree::Customer.create!
569
+ result = Braintree::PaymentMethod.create(
570
+ :payment_method_nonce => nonce,
571
+ :customer_id => customer.id,
572
+ :options => {
573
+ :verify_card => true,
574
+ :verification_account_type => "credit",
575
+ }
576
+ )
577
+
578
+ result.should_not be_success
579
+ result.errors.for(:credit_card).for(:options).on(:verification_account_type)[0].code.should == Braintree::ErrorCodes::CreditCard::VerificationAccountTypeNotSupported
580
+ end
581
+
582
+ it "updates the credit card with account_type credit" do
583
+ customer = Braintree::Customer.create!
584
+ credit_card = Braintree::CreditCard.create!(
585
+ :cardholder_name => "Original Holder",
586
+ :customer_id => customer.id,
587
+ :cvv => "123",
588
+ :number => Braintree::Test::CreditCardNumbers::Visa,
589
+ :expiration_date => "05/2012"
590
+ )
591
+ update_result = Braintree::PaymentMethod.update(credit_card.token,
592
+ :cardholder_name => "New Holder",
593
+ :cvv => "456",
594
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
595
+ :expiration_date => "06/2013",
596
+ :options => {
597
+ :verify_card => true,
598
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
599
+ :verification_account_type => "credit",
600
+ },
601
+ )
602
+ update_result.success?.should == true
603
+ update_result.payment_method.verification.credit_card[:account_type].should == "credit"
604
+ end
605
+
606
+ it "updates the credit card with account_type debit" do
607
+ customer = Braintree::Customer.create!
608
+ credit_card = Braintree::CreditCard.create!(
609
+ :cardholder_name => "Original Holder",
610
+ :customer_id => customer.id,
611
+ :cvv => "123",
612
+ :number => Braintree::Test::CreditCardNumbers::Visa,
613
+ :expiration_date => "05/2012"
614
+ )
615
+ update_result = Braintree::PaymentMethod.update(credit_card.token,
616
+ :cardholder_name => "New Holder",
617
+ :cvv => "456",
618
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
619
+ :expiration_date => "06/2013",
620
+ :options => {
621
+ :verify_card => true,
622
+ :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
623
+ :verification_account_type => "debit",
624
+ },
625
+ )
626
+ update_result.success?.should == true
627
+ update_result.payment_method.verification.credit_card[:account_type].should == "debit"
628
+ end
629
+ end
630
+
490
631
  context "paypal" do
491
632
  it "creates a payment method from an unvalidated future paypal account nonce" do
492
633
  nonce = nonce_for_paypal_account(:consent_code => "PAYPAL_CONSENT_CODE")
@@ -2398,15 +2398,6 @@ describe Braintree::Transaction do
2398
2398
  refund_transaction.refunded_transaction_id.should == transaction.id
2399
2399
  end
2400
2400
 
2401
- it "returns an error if already refunded" do
2402
- transaction = create_paypal_transaction_for_refund
2403
- result = Braintree::Transaction.refund(transaction.id)
2404
- result.success?.should == true
2405
- result = Braintree::Transaction.refund(transaction.id)
2406
- result.success?.should == false
2407
- result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::HasAlreadyBeenRefunded
2408
- end
2409
-
2410
2401
  it "returns an error result if unsettled" do
2411
2402
  transaction = Braintree::Transaction.sale!(
2412
2403
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -3955,6 +3946,122 @@ describe Braintree::Transaction do
3955
3946
  end
3956
3947
 
3957
3948
  end
3949
+
3950
+ context "account_type" do
3951
+ it "creates a Hiper transaction with account type credit" do
3952
+ result = Braintree::Transaction.create(
3953
+ :type => "sale",
3954
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
3955
+ :credit_card => {
3956
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
3957
+ :expiration_date => "05/2009"
3958
+ },
3959
+ :amount => "10.00",
3960
+ :options => {
3961
+ :credit_card => {
3962
+ :account_type => "credit",
3963
+ }
3964
+ }
3965
+ )
3966
+ result.success?.should == true
3967
+ result.transaction.credit_card_details.account_type.should == "credit"
3968
+ end
3969
+
3970
+ it "creates a Hipercard transaction with account_type credit" do
3971
+ result = Braintree::Transaction.create(
3972
+ :type => "sale",
3973
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
3974
+ :credit_card => {
3975
+ :number => Braintree::Test::CreditCardNumbers::Hipercard,
3976
+ :expiration_date => "05/2009"
3977
+ },
3978
+ :amount => "10.00",
3979
+ :options => {
3980
+ :credit_card => {
3981
+ :account_type => "credit",
3982
+ }
3983
+ }
3984
+ )
3985
+ result.success?.should == true
3986
+ result.transaction.credit_card_details.account_type.should == "credit"
3987
+ end
3988
+
3989
+ it "creates a Hiper transaction with account_type debit" do
3990
+ result = Braintree::Transaction.create(
3991
+ :type => "sale",
3992
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
3993
+ :credit_card => {
3994
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
3995
+ :expiration_date => "05/2009"
3996
+ },
3997
+ :amount => "10.00",
3998
+ :options => {
3999
+ :credit_card => {
4000
+ :account_type => "debit",
4001
+ },
4002
+ :submit_for_settlement => true,
4003
+ }
4004
+ )
4005
+ result.success?.should == true
4006
+ result.transaction.credit_card_details.account_type.should == "debit"
4007
+ end
4008
+
4009
+ it "does not allow auths with account_type debit" do
4010
+ result = Braintree::Transaction.create(
4011
+ :type => "sale",
4012
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4013
+ :credit_card => {
4014
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
4015
+ :expiration_date => "05/2009"
4016
+ },
4017
+ :amount => "10.00",
4018
+ :options => {
4019
+ :credit_card => {
4020
+ :account_type => "debit",
4021
+ },
4022
+ }
4023
+ )
4024
+ result.success?.should == false
4025
+ result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeDebitDoesNotSupportAuths
4026
+ end
4027
+
4028
+ it "does not allow invalid account_type" do
4029
+ result = Braintree::Transaction.create(
4030
+ :type => "sale",
4031
+ :merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
4032
+ :credit_card => {
4033
+ :number => Braintree::Test::CreditCardNumbers::Hiper,
4034
+ :expiration_date => "05/2009"
4035
+ },
4036
+ :amount => "10.00",
4037
+ :options => {
4038
+ :credit_card => {
4039
+ :account_type => "ach",
4040
+ },
4041
+ }
4042
+ )
4043
+ result.success?.should == false
4044
+ result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeIsInvalid
4045
+ end
4046
+
4047
+ it "does not allow account_type not supported by merchant" do
4048
+ result = Braintree::Transaction.create(
4049
+ :type => "sale",
4050
+ :credit_card => {
4051
+ :number => Braintree::Test::CreditCardNumbers::Visa,
4052
+ :expiration_date => "05/2009"
4053
+ },
4054
+ :amount => "10.00",
4055
+ :options => {
4056
+ :credit_card => {
4057
+ :account_type => "credit",
4058
+ },
4059
+ }
4060
+ )
4061
+ result.success?.should == false
4062
+ result.errors.for(:transaction).for(:options).for(:credit_card).on(:account_type)[0].code.should == Braintree::ErrorCodes::Transaction::Options::CreditCard::AccountTypeNotSupported
4063
+ end
4064
+ end
3958
4065
  end
3959
4066
 
3960
4067
  describe "self.create!" do
@@ -6269,8 +6376,8 @@ describe Braintree::Transaction do
6269
6376
  :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK::InvalidPaymentMethodCode
6270
6377
  )
6271
6378
  result.success?.should == false
6272
- result.message.should == "Invalid VenmoSDK payment method code"
6273
- result.errors.first.code.should == "91727"
6379
+ result.message.should include("Invalid VenmoSDK payment method code")
6380
+ result.errors.map(&:code).should include("91727")
6274
6381
  end
6275
6382
  end
6276
6383
 
@@ -43,6 +43,7 @@ unless defined?(SPEC_HELPER_LOADED)
43
43
  AnotherUsBankMerchantAccountId = "another_us_bank_merchant_account"
44
44
  IdealMerchantAccountId = "ideal_merchant_account"
45
45
  AdyenMerchantAccountId = "adyen_ma"
46
+ HiperBRLMerchantAccountId = "hiper_brl"
46
47
 
47
48
  TrialPlan = {
48
49
  :description => "Plan for integration tests -- with trial",
@@ -436,16 +436,33 @@ describe Braintree::WebhookNotification do
436
436
  end
437
437
 
438
438
  context "granted_payment_instrument_update" do
439
- it "builds a sample notification for a granted_payment_instrument_update webhook" do
439
+ it "builds a sample notification for a GrantorUpdatedGrantedPaymentMethod webhook" do
440
440
  sample_notification = Braintree::WebhookTesting.sample_notification(
441
- Braintree::WebhookNotification::Kind::GrantedPaymentInstrumentUpdate,
441
+ Braintree::WebhookNotification::Kind::GrantorUpdatedGrantedPaymentMethod,
442
442
  "my_id"
443
443
  )
444
444
 
445
445
  notification = Braintree::WebhookNotification.parse(sample_notification[:bt_signature], sample_notification[:bt_payload])
446
446
  update = notification.granted_payment_instrument_update
447
447
 
448
- notification.kind.should == Braintree::WebhookNotification::Kind::GrantedPaymentInstrumentUpdate
448
+ notification.kind.should == Braintree::WebhookNotification::Kind::GrantorUpdatedGrantedPaymentMethod
449
+ update.grant_owner_merchant_id.should == 'vczo7jqrpwrsi2px'
450
+ update.grant_recipient_merchant_id.should == 'cf0i8wgarszuy6hc'
451
+ update.payment_method_nonce.should == 'ee257d98-de40-47e8-96b3-a6954ea7a9a4'
452
+ update.token.should == 'abc123z'
453
+ update.updated_fields.should == ['expiration-month', 'expiration-year']
454
+ end
455
+
456
+ it "builds a sample notification for a RecipientUpdatedGrantedPaymentMethod webhook" do
457
+ sample_notification = Braintree::WebhookTesting.sample_notification(
458
+ Braintree::WebhookNotification::Kind::RecipientUpdatedGrantedPaymentMethod,
459
+ "my_id"
460
+ )
461
+
462
+ notification = Braintree::WebhookNotification.parse(sample_notification[:bt_signature], sample_notification[:bt_payload])
463
+ update = notification.granted_payment_instrument_update
464
+
465
+ notification.kind.should == Braintree::WebhookNotification::Kind::RecipientUpdatedGrantedPaymentMethod
449
466
  update.grant_owner_merchant_id.should == 'vczo7jqrpwrsi2px'
450
467
  update.grant_recipient_merchant_id.should == 'cf0i8wgarszuy6hc'
451
468
  update.payment_method_nonce.should == 'ee257d98-de40-47e8-96b3-a6954ea7a9a4'
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.94.0
4
+ version: 2.95.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-01-23 00:00:00.000000000 Z
11
+ date: 2019-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -319,7 +319,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
319
319
  version: '0'
320
320
  requirements: []
321
321
  rubyforge_project: braintree
322
- rubygems_version: 2.7.8
322
+ rubygems_version: 2.7.9
323
323
  signing_key:
324
324
  specification_version: 4
325
325
  summary: Braintree Gateway Ruby Client Library