braintree 2.54.0 → 2.55.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.
data/lib/braintree.rb CHANGED
@@ -108,6 +108,7 @@ require "braintree/transaction/subscription_details"
108
108
  require "braintree/transaction_gateway"
109
109
  require "braintree/transaction_search"
110
110
  require "braintree/transaction/status_details"
111
+ require "braintree/transaction/venmo_account_details"
111
112
  require "braintree/unknown_payment_method"
112
113
  require "braintree/disbursement"
113
114
  require "braintree/transparent_redirect"
@@ -115,6 +116,7 @@ require "braintree/transparent_redirect_gateway"
115
116
  require "braintree/util"
116
117
  require "braintree/validation_error"
117
118
  require "braintree/validation_error_collection"
119
+ require "braintree/venmo_account"
118
120
  require "braintree/version"
119
121
  require "braintree/webhook_notification"
120
122
  require "braintree/webhook_notification_gateway"
@@ -4,7 +4,7 @@ module Braintree
4
4
 
5
5
  attr_reader :addresses, :company, :created_at, :credit_cards, :email, :fax, :first_name, :id, :last_name,
6
6
  :phone, :updated_at, :website, :custom_fields, :paypal_accounts, :apple_pay_cards, :coinbase_accounts,
7
- :android_pay_cards, :amex_express_checkout_cards
7
+ :android_pay_cards, :amex_express_checkout_cards, :venmo_accounts
8
8
 
9
9
  def self.all
10
10
  Configuration.gateway.customer.all
@@ -93,6 +93,7 @@ module Braintree
93
93
  @europe_bank_accounts = (@europe_bank_Accounts || []).map { |pm| EuropeBankAccount._new gateway, pm }
94
94
  @android_pay_cards = (@android_pay_cards || []).map { |pm| AndroidPayCard._new gateway, pm }
95
95
  @amex_express_checkout_cards = (@amex_express_checkout_cards || []).map { |pm| AmexExpressCheckoutCard._new gateway, pm }
96
+ @venmo_accounts = (@venmo_accounts || []).map { |pm| VenmoAccount._new gateway, pm }
96
97
  @addresses = (@addresses || []).map { |addr| Address._new gateway, addr }
97
98
  @custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
98
99
  end
@@ -124,7 +125,13 @@ module Braintree
124
125
 
125
126
  # Returns the customer's payment methods
126
127
  def payment_methods
127
- @credit_cards.dup + @paypal_accounts.dup + @apple_pay_cards.dup + @coinbase_accounts.dup + @android_pay_cards.dup + @amex_express_checkout_cards.dup
128
+ @credit_cards +
129
+ @paypal_accounts.dup +
130
+ @apple_pay_cards.dup +
131
+ @coinbase_accounts.dup +
132
+ @android_pay_cards.dup +
133
+ @amex_express_checkout_cards.dup +
134
+ @venmo_accounts.dup
128
135
  end
129
136
 
130
137
  def inspect # :nodoc:
@@ -309,6 +309,8 @@ module Braintree
309
309
  ProcessorAuthorizationCodeCannotBeSet = "91519"
310
310
  ProcessorAuthorizationCodeIsInvalid = "81520"
311
311
  ProcessorDoesNotSupportAuths = "915104"
312
+ ProcessorDoesNotSupportUpdatingOrderId = "915107"
313
+ ProcessorDoesNotSupportUpdatingDescriptor = "915108"
312
314
  ProcessorDoesNotSupportCredits = "91546"
313
315
  ProcessorDoesNotSupportPartialSettlement = "915102"
314
316
  ProcessorDoesNotSupportVoiceAuthorizations = "91545"
@@ -19,7 +19,8 @@ module Braintree
19
19
  end
20
20
 
21
21
  attr_reader :status, :id, :master_merchant_account,
22
- :individual_details, :business_details, :funding_details
22
+ :individual_details, :business_details, :funding_details,
23
+ :currency_iso_code
23
24
 
24
25
  def self.create(attributes)
25
26
  Configuration.gateway.merchant_account.create(attributes)
@@ -27,6 +27,8 @@ module Braintree
27
27
  SuccessfulResult.new(:payment_method => AndroidPayCard._new(@gateway, response[:android_pay_card]))
28
28
  elsif response[:amex_express_checkout_card]
29
29
  SuccessfulResult.new(:payment_method => AmexExpressCheckoutCard._new(@gateway, response[:amex_express_checkout_card]))
30
+ elsif response[:venmo_account]
31
+ SuccessfulResult.new(:payment_method => VenmoAccount._new(@gateway, response[:venmo_account]))
30
32
  elsif response[:api_error_response]
31
33
  ErrorResult.new(@gateway, response[:api_error_response])
32
34
  elsif response
@@ -17,6 +17,7 @@ module Braintree
17
17
  AndroidPayMasterCard = "fake-android-pay-mastercard-nonce"
18
18
  AndroidPayAmEx = "fake-android-pay-amex-nonce"
19
19
  AmexExpressCheckout = "fake-amex-express-checkout-nonce"
20
+ VenmoAccount = "fake-venmo-account-nonce"
20
21
  TransactableVisa = "fake-valid-visa-nonce"
21
22
  TransactableAmEx = "fake-valid-amex-nonce"
22
23
  TransactableMasterCard = "fake-valid-mastercard-nonce"
@@ -86,6 +86,7 @@ module Braintree
86
86
  attr_reader :apple_pay_details
87
87
  attr_reader :android_pay_details
88
88
  attr_reader :amex_express_checkout_details
89
+ attr_reader :venmo_account_details
89
90
  attr_reader :coinbase_details
90
91
  attr_reader :plan_id
91
92
  # The authorization code from the processor.
@@ -206,8 +207,8 @@ module Braintree
206
207
  return_object_or_raise(:transaction) { release_from_escrow(transaction_id) }
207
208
  end
208
209
 
209
- def self.submit_for_settlement(transaction_id, amount = nil)
210
- Configuration.gateway.transaction.submit_for_settlement(transaction_id, amount)
210
+ def self.submit_for_settlement(transaction_id, amount = nil, options = {})
211
+ Configuration.gateway.transaction.submit_for_settlement(transaction_id, amount, options)
211
212
  end
212
213
 
213
214
  def self.submit_for_settlement!(transaction_id, amount = nil)
@@ -244,6 +245,7 @@ module Braintree
244
245
  @apple_pay_details = ApplePayDetails.new(@apple_pay)
245
246
  @android_pay_details = AndroidPayDetails.new(@android_pay_card)
246
247
  @amex_express_checkout_details = AmexExpressCheckoutDetails.new(@amex_express_checkout_card)
248
+ @venmo_account_details = VenmoAccountDetails.new(@venmo_account)
247
249
  @coinbase_details = CoinbaseDetails.new(@coinbase_account)
248
250
  disputes.map! { |attrs| Dispute._new(attrs) } if disputes
249
251
  @custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
@@ -0,0 +1,13 @@
1
+ module Braintree
2
+ class Transaction
3
+ class VenmoAccountDetails
4
+ include BaseModule
5
+
6
+ attr_reader :username, :venmo_user_id, :token, :source_description, :image_url
7
+
8
+ def initialize(attributes)
9
+ set_instance_variables_from_hash attributes unless attributes.nil?
10
+ end
11
+ end
12
+ end
13
+ end
@@ -98,9 +98,11 @@ module Braintree
98
98
  _handle_transaction_response(response)
99
99
  end
100
100
 
101
- def submit_for_settlement(transaction_id, amount = nil)
101
+ def submit_for_settlement(transaction_id, amount = nil, options = {})
102
102
  raise ArgumentError, "transaction_id is invalid" unless transaction_id =~ /\A[0-9a-z]+\z/
103
- response = @config.http.put("#{@config.base_merchant_path}/transactions/#{transaction_id}/submit_for_settlement", :transaction => {:amount => amount})
103
+ Util.verify_keys(TransactionGateway._submit_for_settlement_signature, options)
104
+ transaction_params = {:amount => amount}.merge(options)
105
+ response = @config.http.put("#{@config.base_merchant_path}/transactions/#{transaction_id}/submit_for_settlement", :transaction => transaction_params)
104
106
  _handle_transaction_response(response)
105
107
  end
106
108
 
@@ -146,7 +148,7 @@ module Braintree
146
148
  :payee_email,
147
149
  :skip_avs,
148
150
  :skip_cvv,
149
- {:paypal => [:custom_field, :payee_email, :description]},
151
+ {:paypal => [:custom_field, :payee_email, :description, {:supplementary_data => :_any_key_}]},
150
152
  {:three_d_secure => [:required]},
151
153
  {:amex_rewards => [:request_id, :points, :currency_amount, :currency_iso_code]}]
152
154
  },
@@ -158,6 +160,13 @@ module Braintree
158
160
  ]
159
161
  end
160
162
 
163
+ def self._submit_for_settlement_signature # :nodoc:
164
+ [
165
+ :order_id,
166
+ {:descriptor => [:name, :phone, :url]},
167
+ ]
168
+ end
169
+
161
170
  def _do_create(path, params=nil) # :nodoc:
162
171
  response = @config.http.post("#{@config.base_merchant_path}#{path}", params)
163
172
  _handle_transaction_response(response)
@@ -0,0 +1,27 @@
1
+ module Braintree
2
+ class VenmoAccount
3
+ include BaseModule # :nodoc:
4
+
5
+ attr_reader :customer_id, :username, :venmo_user_id, :token, :source_description, :subscriptions,
6
+ :image_url, :default, :updated_at, :created_at
7
+
8
+ def initialize(gateway, attributes) # :nodoc:
9
+ @gateway = gateway
10
+ set_instance_variables_from_hash(attributes)
11
+ @subscriptions = (@subscriptions || []).map { |subscription_hash| Subscription._new(@gateway, subscription_hash) }
12
+ end
13
+
14
+ def default?
15
+ @default
16
+ end
17
+
18
+ class << self
19
+ protected :new
20
+ end
21
+
22
+ def self._new(*args) # :nodoc:
23
+ self.new *args
24
+ end
25
+ end
26
+ end
27
+
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 2
4
- Minor = 54
4
+ Minor = 55
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
data/spec/httpsd.pid CHANGED
@@ -1 +1 @@
1
- 14756
1
+ 19402
@@ -835,6 +835,21 @@ describe Braintree::Customer do
835
835
  amex_express_checkout_card.expiration_year.should_not be_nil
836
836
  end
837
837
 
838
+ it "returns associated venmo accounts" do
839
+ result = Braintree::Customer.create(
840
+ :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount
841
+ )
842
+ result.success?.should == true
843
+
844
+ found_customer = Braintree::Customer.find(result.customer.id)
845
+ found_customer.venmo_accounts.size.should == 1
846
+ found_customer.payment_methods.size.should == 1
847
+ venmo_account = found_customer.venmo_accounts.first
848
+ venmo_account.should be_a Braintree::VenmoAccount
849
+ venmo_account.token.should_not be_nil
850
+ venmo_account.username.should_not be_nil
851
+ end
852
+
838
853
  it "works for a blank customer" do
839
854
  created_customer = Braintree::Customer.create!
840
855
  found_customer = Braintree::Customer.find(created_customer.id)
@@ -149,6 +149,12 @@ describe Braintree::MerchantAccount do
149
149
  merchant_account.individual_details.last_name.should == VALID_APPLICATION_PARAMS[:individual][:last_name]
150
150
  end
151
151
 
152
+ it "retrieves the currency iso code for an existing master merchant account" do
153
+ merchant_account = Braintree::MerchantAccount.find("sandbox_master_merchant_account")
154
+
155
+ merchant_account.currency_iso_code.should == "USD"
156
+ end
157
+
152
158
  it "raises a NotFoundError exception if merchant account cannot be found" do
153
159
  expect do
154
160
  Braintree::MerchantAccount.find("non-existant")
@@ -177,6 +177,28 @@ describe Braintree::PaymentMethod do
177
177
  amex_express_checkout_card.customer_id.should == customer.id
178
178
  end
179
179
 
180
+ it "creates a payment method from venmo account nonce" do
181
+ customer = Braintree::Customer.create.customer
182
+ token = SecureRandom.hex(16)
183
+ result = Braintree::PaymentMethod.create(
184
+ :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount,
185
+ :customer_id => customer.id,
186
+ :token => token
187
+ )
188
+
189
+ result.should be_success
190
+ venmo_account = result.payment_method
191
+ venmo_account.should be_a(Braintree::VenmoAccount)
192
+
193
+ venmo_account.default.should == true
194
+ venmo_account.token.should == token
195
+ venmo_account.username.should == "venmojoe"
196
+ venmo_account.venmo_user_id.should == "Venmo-Joe-1"
197
+ venmo_account.image_url.should include(".png")
198
+ venmo_account.source_description.should == "Venmo Account: venmojoe"
199
+ venmo_account.customer_id.should == customer.id
200
+ end
201
+
180
202
  it "allows passing the make_default option alongside the nonce" do
181
203
  customer = Braintree::Customer.create!
182
204
  result = Braintree::CreditCard.create(
@@ -1402,6 +1402,25 @@ describe Braintree::Transaction do
1402
1402
  checkout_details.source_description.should =~ /\AAmEx \d{4}\z/
1403
1403
  end
1404
1404
 
1405
+ it "can create a transaction with a fake venmo account nonce" do
1406
+ result = Braintree::Transaction.create(
1407
+ :type => "sale",
1408
+ :merchant_account_id => SpecHelper::FakeVenmoAccountMerchantAccountId,
1409
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
1410
+ :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount,
1411
+ :options => {:store_in_vault => true}
1412
+ )
1413
+ result.should be_success
1414
+
1415
+ venmo_account_details = result.transaction.venmo_account_details
1416
+ venmo_account_details.should be_a(Braintree::Transaction::VenmoAccountDetails)
1417
+ venmo_account_details.token.should respond_to(:to_str)
1418
+ venmo_account_details.username.should == "venmojoe"
1419
+ venmo_account_details.venmo_user_id.should == "Venmo-Joe-1"
1420
+ venmo_account_details.image_url.should include(".png")
1421
+ venmo_account_details.source_description.should == "Venmo Account: venmojoe"
1422
+ end
1423
+
1405
1424
  it "can create a transaction with an unknown nonce" do
1406
1425
  customer = Braintree::Customer.create!
1407
1426
  result = Braintree::Transaction.create(
@@ -1539,6 +1558,33 @@ describe Braintree::Transaction do
1539
1558
  result.transaction.paypal_details.debug_id.should_not be_nil
1540
1559
  result.transaction.paypal_details.description.should == "A great product"
1541
1560
  end
1561
+
1562
+ it "can create a transaction with STC supplementary data" do
1563
+ customer = Braintree::Customer.create!
1564
+ nonce = nonce_for_new_payment_method(
1565
+ :paypal_account => {
1566
+ :consent_code => "PAYPAL_CONSENT_CODE",
1567
+ }
1568
+ )
1569
+ nonce.should_not be_nil
1570
+
1571
+ result = Braintree::Transaction.create(
1572
+ :type => "sale",
1573
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
1574
+ :payment_method_nonce => nonce,
1575
+ :options => {
1576
+ :paypal => {
1577
+ :supplementary_data => {
1578
+ :key1 => "value1",
1579
+ :key2 => "value2",
1580
+ }
1581
+ }
1582
+ }
1583
+ )
1584
+
1585
+ # note - supplementary data is not returned in response
1586
+ result.success?.should == true
1587
+ end
1542
1588
  end
1543
1589
 
1544
1590
  context "three_d_secure" do
@@ -2550,6 +2596,62 @@ describe Braintree::Transaction do
2550
2596
  result.transaction.updated_at.between?(Time.now - 60, Time.now).should == true
2551
2597
  end
2552
2598
 
2599
+ it "returns a successful result if order_id is passed in as an options hash" do
2600
+ transaction = Braintree::Transaction.sale!(
2601
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2602
+ :credit_card => {
2603
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2604
+ :expiration_date => "06/2009"
2605
+ }
2606
+ )
2607
+ options = { :order_id => "ABC123" }
2608
+ result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
2609
+ result.success?.should == true
2610
+ result.transaction.order_id.should == "ABC123"
2611
+ result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
2612
+ end
2613
+
2614
+ it "returns a successful result if descritpors are passed in as an options hash" do
2615
+ transaction = Braintree::Transaction.sale!(
2616
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2617
+ :credit_card => {
2618
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2619
+ :expiration_date => "06/2009"
2620
+ }
2621
+ )
2622
+
2623
+ options = {
2624
+ :descriptor => {
2625
+ :name => '123*123456789012345678',
2626
+ :phone => '3334445555',
2627
+ :url => "ebay.com"
2628
+ }
2629
+ }
2630
+
2631
+ result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
2632
+ result.success?.should == true
2633
+ result.transaction.status.should == Braintree::Transaction::Status::SubmittedForSettlement
2634
+ result.transaction.descriptor.name.should == '123*123456789012345678'
2635
+ result.transaction.descriptor.phone.should == '3334445555'
2636
+ result.transaction.descriptor.url.should == 'ebay.com'
2637
+ end
2638
+
2639
+ it "raises an error if an invalid option is passed in" do
2640
+ transaction = Braintree::Transaction.sale!(
2641
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2642
+ :credit_card => {
2643
+ :number => Braintree::Test::CreditCardNumbers::Visa,
2644
+ :expiration_date => "06/2009"
2645
+ }
2646
+ )
2647
+
2648
+ options = { :order_id => "ABC123", :invalid_option => "i'm invalid" }
2649
+
2650
+ expect do
2651
+ Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
2652
+ end.to raise_error(ArgumentError)
2653
+ end
2654
+
2553
2655
  it "returns an error result if settlement is too large" do
2554
2656
  transaction = Braintree::Transaction.sale!(
2555
2657
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2565,6 +2667,46 @@ describe Braintree::Transaction do
2565
2667
  result.params[:transaction][:amount].should == "1000.01"
2566
2668
  end
2567
2669
 
2670
+ it "returns an error result if descriptors are passed in but not supported by processor" do
2671
+ transaction = Braintree::Transaction.sale!(
2672
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2673
+ :merchant_account_id => SpecHelper::FakeAmexDirectMerchantAccountId,
2674
+ :credit_card => {
2675
+ :number => Braintree::Test::CreditCardNumbers::AmexPayWithPoints::Success,
2676
+ :expiration_date => "05/2009"
2677
+ }
2678
+ )
2679
+
2680
+ options = {
2681
+ :descriptor => {
2682
+ :name => '123*123456789012345678',
2683
+ :phone => '3334445555',
2684
+ :url => "ebay.com"
2685
+ }
2686
+ }
2687
+
2688
+ result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
2689
+ result.success?.should == false
2690
+ result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::ProcessorDoesNotSupportUpdatingDescriptor
2691
+ end
2692
+
2693
+ it "returns an error result if order_id is passed in but not supported by processor" do
2694
+ transaction = Braintree::Transaction.sale!(
2695
+ :amount => Braintree::Test::TransactionAmounts::Authorize,
2696
+ :merchant_account_id => SpecHelper::FakeAmexDirectMerchantAccountId,
2697
+ :credit_card => {
2698
+ :number => Braintree::Test::CreditCardNumbers::AmexPayWithPoints::Success,
2699
+ :expiration_date => "05/2009"
2700
+ }
2701
+ )
2702
+
2703
+ options = { :order_id => "ABC123" }
2704
+
2705
+ result = Braintree::Transaction.submit_for_settlement(transaction.id, nil, options)
2706
+ result.success?.should == false
2707
+ result.errors.for(:transaction).on(:base)[0].code.should == Braintree::ErrorCodes::Transaction::ProcessorDoesNotSupportUpdatingOrderId
2708
+ end
2709
+
2568
2710
  it "returns an error result if status is not authorized" do
2569
2711
  transaction = Braintree::Transaction.sale(
2570
2712
  :amount => Braintree::Test::TransactionAmounts::Decline,
data/spec/spec_helper.rb CHANGED
@@ -38,6 +38,7 @@ unless defined?(SPEC_HELPER_LOADED)
38
38
  NonDefaultSubMerchantAccountId = "sandbox_sub_merchant_account"
39
39
  ThreeDSecureMerchantAccountId = "three_d_secure_merchant_account"
40
40
  FakeAmexDirectMerchantAccountId = "fake_amex_direct_usd"
41
+ FakeVenmoAccountMerchantAccountId = "fake_first_data_venmo_account"
41
42
 
42
43
  TrialPlan = {
43
44
  :description => "Plan for integration tests -- with trial",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.54.0
4
+ version: 2.55.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-09 00:00:00.000000000 Z
12
+ date: 2015-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: builder
@@ -35,204 +35,206 @@ extra_rdoc_files: []
35
35
  files:
36
36
  - README.rdoc
37
37
  - LICENSE
38
- - lib/braintree/webhook_testing_gateway.rb
39
- - lib/braintree/version.rb
40
- - lib/braintree/plan.rb
41
- - lib/braintree/configuration.rb
42
- - lib/braintree/disbursement.rb
43
- - lib/braintree/successful_result.rb
44
- - lib/braintree/dispute.rb
45
- - lib/braintree/exceptions.rb
46
- - lib/braintree/add_on_gateway.rb
47
- - lib/braintree/payment_instrument_type.rb
48
- - lib/braintree/transaction_search.rb
49
- - lib/braintree/util.rb
38
+ - lib/braintree/payment_method_nonce.rb
39
+ - lib/braintree/unknown_payment_method.rb
40
+ - lib/braintree/three_d_secure_info.rb
41
+ - lib/braintree/webhook_notification.rb
42
+ - lib/braintree/android_pay_card.rb
43
+ - lib/braintree/payment_method_gateway.rb
50
44
  - lib/braintree/credit_card_verification.rb
51
- - lib/braintree/test/nonce.rb
52
- - lib/braintree/test/credit_card.rb
53
- - lib/braintree/test/transaction_amounts.rb
54
- - lib/braintree/test/merchant_account.rb
55
- - lib/braintree/test/venmo_sdk.rb
56
- - lib/braintree/transaction/credit_card_details.rb
57
- - lib/braintree/transaction/subscription_details.rb
45
+ - lib/braintree/exceptions.rb
46
+ - lib/braintree/webhook_testing_gateway.rb
47
+ - lib/braintree/transaction/customer_details.rb
58
48
  - lib/braintree/transaction/status_details.rb
59
- - lib/braintree/transaction/disbursement_details.rb
60
49
  - lib/braintree/transaction/address_details.rb
61
50
  - lib/braintree/transaction/amex_express_checkout_details.rb
62
- - lib/braintree/transaction/customer_details.rb
51
+ - lib/braintree/transaction/subscription_details.rb
52
+ - lib/braintree/transaction/disbursement_details.rb
63
53
  - lib/braintree/transaction/android_pay_details.rb
64
- - lib/braintree/transaction/paypal_details.rb
65
54
  - lib/braintree/transaction/apple_pay_details.rb
66
55
  - lib/braintree/transaction/coinbase_details.rb
67
- - lib/braintree/risk_data.rb
68
- - lib/braintree/credit_card_verification_search.rb
69
- - lib/braintree/transparent_redirect_gateway.rb
70
- - lib/braintree/three_d_secure_info.rb
71
- - lib/braintree/merchant_gateway.rb
72
- - lib/braintree/subscription/status_details.rb
73
- - lib/braintree/address/country_names.rb
56
+ - lib/braintree/transaction/credit_card_details.rb
57
+ - lib/braintree/transaction/venmo_account_details.rb
58
+ - lib/braintree/transaction/paypal_details.rb
59
+ - lib/braintree/transaction_search.rb
60
+ - lib/braintree/version.rb
74
61
  - lib/braintree/settlement_batch.rb
75
- - lib/braintree/validation_error.rb
76
- - lib/braintree/webhook_notification.rb
77
- - lib/braintree/client_token_gateway.rb
78
- - lib/braintree/subscription_gateway.rb
79
- - lib/braintree/testing_gateway.rb
80
- - lib/braintree/address_gateway.rb
81
- - lib/braintree/payment_method.rb
82
- - lib/braintree/webhook_notification_gateway.rb
62
+ - lib/braintree/payment_instrument_type.rb
63
+ - lib/braintree/paypal_account.rb
64
+ - lib/braintree/transparent_redirect.rb
65
+ - lib/braintree/test/venmo_sdk.rb
66
+ - lib/braintree/test/merchant_account.rb
67
+ - lib/braintree/test/nonce.rb
68
+ - lib/braintree/test/credit_card.rb
69
+ - lib/braintree/test/transaction_amounts.rb
70
+ - lib/braintree/merchant_gateway.rb
71
+ - lib/braintree/client_token.rb
72
+ - lib/braintree/plan.rb
73
+ - lib/braintree/xml/libxml.rb
74
+ - lib/braintree/xml/rexml.rb
75
+ - lib/braintree/xml/generator.rb
76
+ - lib/braintree/xml/parser.rb
77
+ - lib/braintree/successful_result.rb
78
+ - lib/braintree/util.rb
83
79
  - lib/braintree/webhook_testing.rb
80
+ - lib/braintree/digest.rb
81
+ - lib/braintree/europe_bank_account_gateway.rb
82
+ - lib/braintree/settlement_batch_summary_gateway.rb
83
+ - lib/braintree/gateway.rb
84
84
  - lib/braintree/base_module.rb
85
- - lib/braintree/oauth_credentials.rb
85
+ - lib/braintree/customer.rb
86
+ - lib/braintree/settlement_batch_summary.rb
87
+ - lib/braintree/amex_express_checkout_card.rb
88
+ - lib/braintree/credit_card_gateway.rb
89
+ - lib/braintree/discount_gateway.rb
90
+ - lib/braintree/test_transaction.rb
91
+ - lib/braintree/resource_collection.rb
92
+ - lib/braintree/risk_data.rb
93
+ - lib/braintree/dispute.rb
86
94
  - lib/braintree/customer_gateway.rb
87
- - lib/braintree/modification.rb
88
- - lib/braintree/payment_method_nonce_gateway.rb
95
+ - lib/braintree/credit_card_verification_gateway.rb
96
+ - lib/braintree/errors.rb
97
+ - lib/braintree/facilitator_details.rb
89
98
  - lib/braintree/plan_gateway.rb
90
- - lib/braintree/credit_card.rb
91
- - lib/braintree/merchant.rb
92
- - lib/braintree/advanced_search.rb
93
- - lib/braintree/test_transaction.rb
94
- - lib/braintree/transaction_gateway.rb
95
- - lib/braintree/payment_method_gateway.rb
96
- - lib/braintree/settlement_batch_summary.rb
97
- - lib/braintree/merchant_account/funding_details.rb
99
+ - lib/braintree/subscription/status_details.rb
100
+ - lib/braintree/europe_bank_account.rb
101
+ - lib/braintree/add_on.rb
98
102
  - lib/braintree/merchant_account/address_details.rb
99
103
  - lib/braintree/merchant_account/business_details.rb
100
104
  - lib/braintree/merchant_account/individual_details.rb
101
- - lib/braintree/dispute/transaction_details.rb
102
- - lib/braintree/facilitator_details.rb
103
- - lib/braintree/validation_error_collection.rb
105
+ - lib/braintree/merchant_account/funding_details.rb
104
106
  - lib/braintree/sha256_digest.rb
105
- - lib/braintree/europe_bank_account.rb
106
- - lib/braintree/transaction.rb
107
- - lib/braintree/subscription.rb
107
+ - lib/braintree/transaction_gateway.rb
108
108
  - lib/braintree/xml.rb
109
109
  - lib/braintree/merchant_account.rb
110
- - lib/braintree/apple_pay_card.rb
111
- - lib/braintree/error_result.rb
112
- - lib/braintree/payment_method_nonce.rb
113
- - lib/braintree/oauth_gateway.rb
110
+ - lib/braintree/transaction.rb
111
+ - lib/braintree/configuration.rb
112
+ - lib/braintree/payment_method_nonce_gateway.rb
113
+ - lib/braintree/subscription.rb
114
+ - lib/braintree/discount.rb
115
+ - lib/braintree/subscription_search.rb
116
+ - lib/braintree/http.rb
117
+ - lib/braintree/dispute/transaction_details.rb
118
+ - lib/braintree/oauth_credentials.rb
119
+ - lib/braintree/advanced_search.rb
120
+ - lib/braintree/transparent_redirect_gateway.rb
121
+ - lib/braintree/validation_error.rb
122
+ - lib/braintree/client_token_gateway.rb
123
+ - lib/braintree/venmo_account.rb
124
+ - lib/braintree/paypal_account_gateway.rb
125
+ - lib/braintree/webhook_notification_gateway.rb
126
+ - lib/braintree/signature_service.rb
127
+ - lib/braintree/testing_gateway.rb
114
128
  - lib/braintree/descriptor.rb
115
- - lib/braintree/add_on.rb
116
- - lib/braintree/resource_collection.rb
129
+ - lib/braintree/address.rb
130
+ - lib/braintree/subscription_gateway.rb
131
+ - lib/braintree/error_codes.rb
117
132
  - lib/braintree/coinbase_account.rb
118
- - lib/braintree/digest.rb
119
- - lib/braintree/gateway.rb
120
- - lib/braintree/amex_express_checkout_card.rb
121
- - lib/braintree/customer.rb
122
- - lib/braintree/client_token.rb
123
- - lib/braintree/paypal_account_gateway.rb
124
- - lib/braintree/europe_bank_account_gateway.rb
125
- - lib/braintree/transparent_redirect.rb
133
+ - lib/braintree/error_result.rb
134
+ - lib/braintree/apple_pay_card.rb
126
135
  - lib/braintree/credentials_parser.rb
127
- - lib/braintree/errors.rb
128
- - lib/braintree/unknown_payment_method.rb
136
+ - lib/braintree/merchant.rb
137
+ - lib/braintree/validation_error_collection.rb
138
+ - lib/braintree/modification.rb
129
139
  - lib/braintree/customer_search.rb
130
- - lib/braintree/error_codes.rb
131
- - lib/braintree/discount_gateway.rb
132
- - lib/braintree/subscription_search.rb
133
- - lib/braintree/http.rb
134
- - lib/braintree/address.rb
135
- - lib/braintree/credit_card_gateway.rb
136
- - lib/braintree/credit_card_verification_gateway.rb
140
+ - lib/braintree/disbursement.rb
141
+ - lib/braintree/add_on_gateway.rb
142
+ - lib/braintree/credit_card.rb
143
+ - lib/braintree/credit_card_verification_search.rb
137
144
  - lib/braintree/merchant_account_gateway.rb
138
- - lib/braintree/android_pay_card.rb
139
- - lib/braintree/paypal_account.rb
140
- - lib/braintree/signature_service.rb
141
- - lib/braintree/settlement_batch_summary_gateway.rb
142
- - lib/braintree/discount.rb
143
- - lib/braintree/xml/rexml.rb
144
- - lib/braintree/xml/generator.rb
145
- - lib/braintree/xml/libxml.rb
146
- - lib/braintree/xml/parser.rb
145
+ - lib/braintree/address/country_names.rb
146
+ - lib/braintree/oauth_gateway.rb
147
+ - lib/braintree/payment_method.rb
148
+ - lib/braintree/address_gateway.rb
147
149
  - lib/braintree.rb
148
- - lib/ssl/www_braintreegateway_com.ca.crt
149
- - lib/ssl/api_braintreegateway_com.ca.crt
150
- - lib/ssl/securetrust_ca.crt
151
150
  - lib/ssl/sandbox_braintreegateway_com.ca.crt
152
- - spec/httpsd.pid
151
+ - lib/ssl/securetrust_ca.crt
152
+ - lib/ssl/api_braintreegateway_com.ca.crt
153
+ - lib/ssl/www_braintreegateway_com.ca.crt
154
+ - spec/oauth_test_helper.rb
155
+ - spec/spec.opts
156
+ - spec/hacks/tcp_socket.rb
153
157
  - spec/script/httpsd.rb
154
- - spec/unit/braintree/base_module_spec.rb
155
- - spec/unit/braintree/signature_service_spec.rb
156
- - spec/unit/braintree/http_spec.rb
157
- - spec/unit/braintree/modification_spec.rb
158
- - spec/unit/braintree/credit_card_verification_search_spec.rb
158
+ - spec/integration/braintree/discount_spec.rb
159
+ - spec/integration/braintree/merchant_spec.rb
160
+ - spec/integration/braintree/payment_method_spec.rb
161
+ - spec/integration/braintree/test/transaction_amounts_spec.rb
162
+ - spec/integration/braintree/http_spec.rb
163
+ - spec/integration/braintree/advanced_search_spec.rb
164
+ - spec/integration/braintree/test_transaction_spec.rb
165
+ - spec/integration/braintree/disbursement_spec.rb
166
+ - spec/integration/braintree/add_on_spec.rb
167
+ - spec/integration/braintree/coinbase_spec.rb
168
+ - spec/integration/braintree/oauth_spec.rb
169
+ - spec/integration/braintree/credit_card_spec.rb
170
+ - spec/integration/braintree/paypal_account_spec.rb
171
+ - spec/integration/braintree/customer_search_spec.rb
172
+ - spec/integration/braintree/error_codes_spec.rb
173
+ - spec/integration/braintree/transaction_search_spec.rb
174
+ - spec/integration/braintree/merchant_account_spec.rb
175
+ - spec/integration/braintree/credit_card_verification_search_spec.rb
176
+ - spec/integration/braintree/plan_spec.rb
177
+ - spec/integration/braintree/settlement_batch_summary_spec.rb
178
+ - spec/integration/braintree/payment_method_nonce_spec.rb
179
+ - spec/integration/braintree/transaction_spec.rb
180
+ - spec/integration/braintree/address_spec.rb
181
+ - spec/integration/braintree/client_api/client_token_spec.rb
182
+ - spec/integration/braintree/client_api/spec_helper.rb
183
+ - spec/integration/braintree/credit_card_verification_spec.rb
184
+ - spec/integration/braintree/customer_spec.rb
185
+ - spec/integration/braintree/transparent_redirect_spec.rb
186
+ - spec/integration/braintree/subscription_spec.rb
187
+ - spec/integration/spec_helper.rb
188
+ - spec/ssl/certificate.crt
189
+ - spec/ssl/privateKey.key
190
+ - spec/ssl/geotrust_global.crt
191
+ - spec/httpsd.pid
192
+ - spec/spec_helper.rb
193
+ - spec/unit/braintree/dispute_spec.rb
194
+ - spec/unit/braintree/util_spec.rb
195
+ - spec/unit/braintree/resource_collection_spec.rb
196
+ - spec/unit/braintree/validation_error_collection_spec.rb
197
+ - spec/unit/braintree/transaction/credit_card_details_spec.rb
159
198
  - spec/unit/braintree/transaction/deposit_details_spec.rb
160
199
  - spec/unit/braintree/transaction/customer_details_spec.rb
161
- - spec/unit/braintree/transaction/credit_card_details_spec.rb
200
+ - spec/unit/braintree/payment_method_spec.rb
201
+ - spec/unit/braintree/base_module_spec.rb
202
+ - spec/unit/braintree/http_spec.rb
203
+ - spec/unit/braintree/xml/libxml_spec.rb
204
+ - spec/unit/braintree/xml/parser_spec.rb
205
+ - spec/unit/braintree/xml/rexml_spec.rb
206
+ - spec/unit/braintree/digest_spec.rb
207
+ - spec/unit/braintree/sha256_digest_spec.rb
208
+ - spec/unit/braintree/disbursement_spec.rb
209
+ - spec/unit/braintree/xml_spec.rb
210
+ - spec/unit/braintree/client_token_spec.rb
162
211
  - spec/unit/braintree/error_result_spec.rb
163
- - spec/unit/braintree/unknown_payment_method_spec.rb
164
212
  - spec/unit/braintree/credit_card_spec.rb
165
- - spec/unit/braintree/disbursement_spec.rb
213
+ - spec/unit/braintree/paypal_account_spec.rb
214
+ - spec/unit/braintree/webhook_notification_spec.rb
166
215
  - spec/unit/braintree/credentials_parser_spec.rb
167
- - spec/unit/braintree/subscription_spec.rb
168
- - spec/unit/braintree/successful_result_spec.rb
169
- - spec/unit/braintree/merchant_account_spec.rb
170
- - spec/unit/braintree/sha256_digest_spec.rb
171
216
  - spec/unit/braintree/transaction_search_spec.rb
172
- - spec/unit/braintree/util_spec.rb
173
- - spec/unit/braintree/validation_error_spec.rb
217
+ - spec/unit/braintree/errors_spec.rb
218
+ - spec/unit/braintree/merchant_account_spec.rb
219
+ - spec/unit/braintree/credit_card_verification_search_spec.rb
220
+ - spec/unit/braintree/configuration_spec.rb
221
+ - spec/unit/braintree/three_d_secure_info_spec.rb
222
+ - spec/unit/braintree/unknown_payment_method_spec.rb
223
+ - spec/unit/braintree/modification_spec.rb
224
+ - spec/unit/braintree/risk_data_spec.rb
225
+ - spec/unit/braintree/signature_service_spec.rb
226
+ - spec/unit/braintree/apple_pay_card_spec.rb
174
227
  - spec/unit/braintree/transaction_spec.rb
175
- - spec/unit/braintree/resource_collection_spec.rb
176
- - spec/unit/braintree/paypal_account_spec.rb
228
+ - spec/unit/braintree/successful_result_spec.rb
177
229
  - spec/unit/braintree/address_spec.rb
178
- - spec/unit/braintree/webhook_notification_spec.rb
179
- - spec/unit/braintree/transparent_redirect_spec.rb
180
- - spec/unit/braintree/configuration_spec.rb
181
230
  - spec/unit/braintree/credit_card_verification_spec.rb
182
- - spec/unit/braintree/client_token_spec.rb
183
- - spec/unit/braintree/apple_pay_card_spec.rb
184
- - spec/unit/braintree/risk_data_spec.rb
185
- - spec/unit/braintree/customer_spec.rb
186
- - spec/unit/braintree/xml_spec.rb
187
- - spec/unit/braintree/validation_error_collection_spec.rb
188
- - spec/unit/braintree/payment_method_spec.rb
231
+ - spec/unit/braintree/validation_error_spec.rb
189
232
  - spec/unit/braintree/subscription_search_spec.rb
190
- - spec/unit/braintree/three_d_secure_info_spec.rb
191
- - spec/unit/braintree/digest_spec.rb
192
- - spec/unit/braintree/errors_spec.rb
193
- - spec/unit/braintree/dispute_spec.rb
194
- - spec/unit/braintree/xml/parser_spec.rb
195
- - spec/unit/braintree/xml/libxml_spec.rb
196
- - spec/unit/braintree/xml/rexml_spec.rb
233
+ - spec/unit/braintree/customer_spec.rb
234
+ - spec/unit/braintree/transparent_redirect_spec.rb
235
+ - spec/unit/braintree/subscription_spec.rb
197
236
  - spec/unit/braintree_spec.rb
198
237
  - spec/unit/spec_helper.rb
199
- - spec/hacks/tcp_socket.rb
200
- - spec/oauth_test_helper.rb
201
- - spec/integration/braintree/http_spec.rb
202
- - spec/integration/braintree/credit_card_verification_search_spec.rb
203
- - spec/integration/braintree/payment_method_nonce_spec.rb
204
- - spec/integration/braintree/test/transaction_amounts_spec.rb
205
- - spec/integration/braintree/client_api/client_token_spec.rb
206
- - spec/integration/braintree/client_api/spec_helper.rb
207
- - spec/integration/braintree/test_transaction_spec.rb
208
- - spec/integration/braintree/merchant_spec.rb
209
- - spec/integration/braintree/add_on_spec.rb
210
- - spec/integration/braintree/credit_card_spec.rb
211
- - spec/integration/braintree/disbursement_spec.rb
212
- - spec/integration/braintree/subscription_spec.rb
213
- - spec/integration/braintree/merchant_account_spec.rb
214
- - spec/integration/braintree/advanced_search_spec.rb
215
- - spec/integration/braintree/transaction_search_spec.rb
216
- - spec/integration/braintree/transaction_spec.rb
217
- - spec/integration/braintree/plan_spec.rb
218
- - spec/integration/braintree/paypal_account_spec.rb
219
- - spec/integration/braintree/discount_spec.rb
220
- - spec/integration/braintree/address_spec.rb
221
- - spec/integration/braintree/transparent_redirect_spec.rb
222
- - spec/integration/braintree/credit_card_verification_spec.rb
223
- - spec/integration/braintree/coinbase_spec.rb
224
- - spec/integration/braintree/customer_spec.rb
225
- - spec/integration/braintree/payment_method_spec.rb
226
- - spec/integration/braintree/settlement_batch_summary_spec.rb
227
- - spec/integration/braintree/oauth_spec.rb
228
- - spec/integration/braintree/error_codes_spec.rb
229
- - spec/integration/braintree/customer_search_spec.rb
230
- - spec/integration/spec_helper.rb
231
- - spec/spec_helper.rb
232
- - spec/spec.opts
233
- - spec/ssl/geotrust_global.crt
234
- - spec/ssl/privateKey.key
235
- - spec/ssl/certificate.crt
236
238
  - braintree.gemspec
237
239
  homepage: http://www.braintreepayments.com/
238
240
  licenses: