braintree 4.27.0 → 4.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/apple_pay_card.rb +4 -0
  3. data/lib/braintree/bin_data.rb +7 -2
  4. data/lib/braintree/credit_card.rb +11 -5
  5. data/lib/braintree/credit_card_gateway.rb +1 -0
  6. data/lib/braintree/credit_card_verification_gateway.rb +1 -0
  7. data/lib/braintree/customer_session_gateway.rb +11 -10
  8. data/lib/braintree/google_pay_card.rb +4 -0
  9. data/lib/braintree/graphql/enums/recommendations.rb +2 -0
  10. data/lib/braintree/graphql/enums/recommended_payment_option.rb +2 -0
  11. data/lib/braintree/graphql/inputs/create_customer_session_input.rb +10 -1
  12. data/lib/braintree/graphql/inputs/customer_recommendations_input.rb +7 -8
  13. data/lib/braintree/graphql/inputs/customer_session_input.rb +6 -0
  14. data/lib/braintree/graphql/inputs/monetary_amount_input.rb +28 -0
  15. data/lib/braintree/graphql/inputs/paypal_payee_input.rb +28 -0
  16. data/lib/braintree/graphql/inputs/paypal_purchase_unit_input.rb +31 -0
  17. data/lib/braintree/graphql/inputs/phone_input.rb +2 -0
  18. data/lib/braintree/graphql/inputs/update_customer_session_input.rb +5 -0
  19. data/lib/braintree/graphql/types/customer_recommendations_payload.rb +112 -18
  20. data/lib/braintree/graphql/types/payment_options.rb +2 -0
  21. data/lib/braintree/graphql/types/payment_recommendations.rb +35 -0
  22. data/lib/braintree/graphql/unions/customer_recommendations.rb +38 -25
  23. data/lib/braintree/meta_checkout_card.rb +8 -4
  24. data/lib/braintree/meta_checkout_token.rb +10 -6
  25. data/lib/braintree/payment_method_gateway.rb +3 -0
  26. data/lib/braintree/test/credit_card.rb +4 -0
  27. data/lib/braintree/transaction/apple_pay_details.rb +4 -0
  28. data/lib/braintree/transaction/credit_card_details.rb +8 -0
  29. data/lib/braintree/transaction/google_pay_details.rb +4 -0
  30. data/lib/braintree/transaction/meta_checkout_card_details.rb +9 -3
  31. data/lib/braintree/transaction/meta_checkout_token_details.rb +11 -5
  32. data/lib/braintree/transaction/visa_checkout_card_details.rb +8 -3
  33. data/lib/braintree/version.rb +1 -1
  34. data/lib/braintree/visa_checkout_card.rb +9 -4
  35. data/lib/braintree.rb +4 -0
  36. data/spec/integration/braintree/credit_card_spec.rb +101 -0
  37. data/spec/integration/braintree/credit_card_verification_spec.rb +118 -0
  38. data/spec/integration/braintree/customer_session_spec.rb +59 -49
  39. data/spec/integration/braintree/customer_spec.rb +71 -4
  40. data/spec/integration/braintree/payment_method_nonce_spec.rb +44 -0
  41. data/spec/integration/braintree/payment_method_spec.rb +47 -0
  42. data/spec/integration/braintree/transaction_spec.rb +61 -25
  43. data/spec/unit/braintree/apple_pay_card_spec.rb +4 -0
  44. data/spec/unit/braintree/credit_card_spec.rb +22 -2
  45. data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +1 -0
  46. data/spec/unit/braintree/customer_session_gateway_spec.rb +10 -9
  47. data/spec/unit/braintree/customer_spec.rb +2 -1
  48. data/spec/unit/braintree/google_pay_card_spec.rb +20 -0
  49. data/spec/unit/braintree/graphql/create_customer_session_input_spec.rb +25 -4
  50. data/spec/unit/braintree/graphql/customer_recommendations_input_spec.rb +21 -51
  51. data/spec/unit/braintree/graphql/customer_recommendations_spec.rb +40 -0
  52. data/spec/unit/braintree/graphql/update_customer_session_input_spec.rb +21 -7
  53. data/spec/unit/braintree/meta_checkout_card_spec.rb +8 -0
  54. data/spec/unit/braintree/meta_checkout_token_spec.rb +4 -0
  55. data/spec/unit/braintree/payment_method_nonce_spec.rb +9 -2
  56. data/spec/unit/braintree/payment_method_spec.rb +12 -0
  57. data/spec/unit/braintree/transaction/apple_pay_details_spec.rb +20 -0
  58. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +5 -1
  59. data/spec/unit/braintree/transaction/google_pay_details_spec.rb +20 -0
  60. data/spec/unit/braintree/transaction/meta_checkout_card_details_spec.rb +20 -0
  61. data/spec/unit/braintree/transaction/meta_checkout_token_details_spec.rb +20 -0
  62. data/spec/unit/braintree/transaction/visa_checkout_card_details_spec.rb +20 -0
  63. data/spec/unit/braintree/transaction_spec.rb +8 -0
  64. data/spec/unit/braintree/visa_checkout_card_spec.rb +20 -0
  65. data/spec/unit/credit_card_details_spec.rb +20 -0
  66. metadata +7 -2
@@ -25,6 +25,18 @@ describe Braintree::PaymentMethod do
25
25
  expect(result.payment_method.token).to eq(1234)
26
26
  expect(result.payment_method).to be_instance_of(Braintree::UnknownPaymentMethod)
27
27
  end
28
+
29
+ it "handles an payment method type for account information inquiry" do
30
+ unknown_response = {:unknown_payment_method => {:token => 1234, :default => true}}
31
+ http_instance = double(:put => unknown_response)
32
+ allow(Braintree::Http).to receive(:new).and_return(http_instance)
33
+ result = Braintree::PaymentMethod.update(:unknown,
34
+ {:options => {:verify_card => true, :accountInformationInquiry => "send_data"}})
35
+
36
+ expect(result).to be_success
37
+ expect(result.payment_method.token).to eq(1234)
38
+ expect(result.payment_method).to be_instance_of(Braintree::UnknownPaymentMethod)
39
+ end
28
40
  end
29
41
 
30
42
  describe "delete" do
@@ -5,4 +5,24 @@ describe Braintree::ApplePayDetails do
5
5
  card = Braintree::ApplePayDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::ApplePayDetails._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::ApplePayDetails._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::ApplePayDetails._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::ApplePayDetails._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
@@ -15,6 +15,7 @@ describe Braintree::Transaction::CreditCardDetails do
15
15
  it "inspects" do
16
16
  details = Braintree::Transaction::CreditCardDetails.new(
17
17
  :bin => "123456",
18
+ :business => "No",
18
19
  :card_type => "Visa",
19
20
  :cardholder_name => "The Cardholder",
20
21
  :expiration_month => "05",
@@ -28,14 +29,17 @@ describe Braintree::Transaction::CreditCardDetails do
28
29
  :durbin_regulated => "No",
29
30
  :debit => "Yes",
30
31
  :commercial => "Unknown",
32
+ :consumer => "Unknown",
33
+ :corporate => "Unknown",
31
34
  :payroll => "Unknown",
35
+ :purchase => "Unknown",
32
36
  :product_id => "Unknown",
33
37
  :country_of_issuance => "Lilliput",
34
38
  :issuing_bank => "Gulliver Bank",
35
39
  :image_url => "example.com/visa.png",
36
40
  :unique_number_identifier => "abc123",
37
41
  )
38
- expect(details.inspect).to eq(%(#<token: "token", bin: "123456", last_4: "6789", card_type: "Visa", commercial: "Unknown", country_of_issuance: "Lilliput", customer_location: "US", debit: "Yes", durbin_regulated: "No", expiration_date: "05/2012", healthcare: "No", image_url: "example.com/visa.png", issuing_bank: "Gulliver Bank", payroll: "Unknown", prepaid: "Yes", prepaid_reloadable: "Yes", product_id: "Unknown", cardholder_name: "The Cardholder", unique_number_identifier: "abc123">))
42
+ expect(details.inspect).to eq(%(#<token: "token", bin: "123456", business: "No", last_4: "6789", card_type: "Visa", commercial: "Unknown", consumer: "Unknown", corporate: "Unknown", country_of_issuance: "Lilliput", customer_location: "US", debit: "Yes", durbin_regulated: "No", expiration_date: "05/2012", healthcare: "No", image_url: "example.com/visa.png", issuing_bank: "Gulliver Bank", payroll: "Unknown", prepaid: "Yes", prepaid_reloadable: "Yes", product_id: "Unknown", purchase: "Unknown", cardholder_name: "The Cardholder", unique_number_identifier: "abc123">))
39
43
  end
40
44
  end
41
45
 
@@ -5,4 +5,24 @@ describe Braintree::GooglePayDetails do
5
5
  card = Braintree::GooglePayDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::GooglePayDetails._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::GooglePayDetails._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::GooglePayDetails._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::GooglePayDetails._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
@@ -5,4 +5,24 @@ describe Braintree::MetaCheckoutCardDetails do
5
5
  card = Braintree::MetaCheckoutCardDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::MetaCheckoutCardDetails._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::MetaCheckoutCardDetails._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::MetaCheckoutCardDetails._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::MetaCheckoutCardDetails._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
@@ -5,4 +5,24 @@ describe Braintree::MetaCheckoutTokenDetails do
5
5
  card = Braintree::MetaCheckoutTokenDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::MetaCheckoutTokenDetails._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::MetaCheckoutTokenDetails._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::MetaCheckoutTokenDetails._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::MetaCheckoutTokenDetails._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
@@ -5,4 +5,24 @@ describe Braintree::VisaCheckoutCardDetails do
5
5
  card = Braintree::VisaCheckoutCardDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::VisaCheckoutCardDetails._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::VisaCheckoutCardDetails._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::VisaCheckoutCardDetails._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::VisaCheckoutCardDetails._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
@@ -123,9 +123,13 @@ describe Braintree::Transaction do
123
123
  :healthcare => "Yes",
124
124
  :durbin_regulated => "Yes",
125
125
  :debit => "Yes",
126
+ :business => "Yes",
126
127
  :commercial => "No",
128
+ :consumer => "No",
129
+ :corporate => "No",
127
130
  :payroll => "Unknown",
128
131
  :product_id => "Unknown",
132
+ :purchase => "No",
129
133
  :country_of_issuance => "Narnia",
130
134
  :issuing_bank => "Mr Tumnus"
131
135
  },
@@ -142,9 +146,13 @@ describe Braintree::Transaction do
142
146
  expect(transaction.credit_card_details.healthcare).to eq(Braintree::CreditCard::Healthcare::Yes)
143
147
  expect(transaction.credit_card_details.durbin_regulated).to eq(Braintree::CreditCard::DurbinRegulated::Yes)
144
148
  expect(transaction.credit_card_details.debit).to eq(Braintree::CreditCard::Debit::Yes)
149
+ expect(transaction.credit_card_details.business).to eq(Braintree::CreditCard::Business::Yes)
145
150
  expect(transaction.credit_card_details.commercial).to eq(Braintree::CreditCard::Commercial::No)
151
+ expect(transaction.credit_card_details.consumer).to eq(Braintree::CreditCard::Consumer::No)
152
+ expect(transaction.credit_card_details.corporate).to eq(Braintree::CreditCard::Corporate::No)
146
153
  expect(transaction.credit_card_details.payroll).to eq(Braintree::CreditCard::Payroll::Unknown)
147
154
  expect(transaction.credit_card_details.product_id).to eq(Braintree::CreditCard::ProductId::Unknown)
155
+ expect(transaction.credit_card_details.purchase).to eq(Braintree::CreditCard::Purchase::No)
148
156
  expect(transaction.credit_card_details.country_of_issuance).to eq("Narnia")
149
157
  expect(transaction.credit_card_details.issuing_bank).to eq("Mr Tumnus")
150
158
  end
@@ -5,4 +5,24 @@ describe Braintree::VisaCheckoutCard do
5
5
  card = Braintree::VisaCheckoutCard._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::VisaCheckoutCard._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::VisaCheckoutCard._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::VisaCheckoutCard._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::VisaCheckoutCard._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
@@ -5,4 +5,24 @@ describe Braintree::CreditCardDetails do
5
5
  card = Braintree::CreditCardDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
6
  expect(card.prepaid_reloadable).to eq("No")
7
7
  end
8
+
9
+ it "initializes business correctly" do
10
+ card = Braintree::CreditCardDetails._new(:gateway, {:business => "No"})
11
+ expect(card.business).to eq("No")
12
+ end
13
+
14
+ it "initializes consumer correctly" do
15
+ card = Braintree::CreditCardDetails._new(:gateway, {:consumer => "No"})
16
+ expect(card.consumer).to eq("No")
17
+ end
18
+
19
+ it "initializes corporate correctly" do
20
+ card = Braintree::CreditCardDetails._new(:gateway, {:corporate => "No"})
21
+ expect(card.corporate).to eq("No")
22
+ end
23
+
24
+ it "initializes purchase correctly" do
25
+ card = Braintree::CreditCardDetails._new(:gateway, {:purchase => "No"})
26
+ expect(card.purchase).to eq("No")
27
+ end
8
28
  end
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: 4.27.0
4
+ version: 4.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braintree
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-01 00:00:00.000000000 Z
11
+ date: 2025-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -114,10 +114,14 @@ files:
114
114
  - lib/braintree/graphql/inputs/create_customer_session_input.rb
115
115
  - lib/braintree/graphql/inputs/customer_recommendations_input.rb
116
116
  - lib/braintree/graphql/inputs/customer_session_input.rb
117
+ - lib/braintree/graphql/inputs/monetary_amount_input.rb
118
+ - lib/braintree/graphql/inputs/paypal_payee_input.rb
119
+ - lib/braintree/graphql/inputs/paypal_purchase_unit_input.rb
117
120
  - lib/braintree/graphql/inputs/phone_input.rb
118
121
  - lib/braintree/graphql/inputs/update_customer_session_input.rb
119
122
  - lib/braintree/graphql/types/customer_recommendations_payload.rb
120
123
  - lib/braintree/graphql/types/payment_options.rb
124
+ - lib/braintree/graphql/types/payment_recommendations.rb
121
125
  - lib/braintree/graphql/unions/customer_recommendations.rb
122
126
  - lib/braintree/graphql_client.rb
123
127
  - lib/braintree/http.rb
@@ -320,6 +324,7 @@ files:
320
324
  - spec/unit/braintree/google_pay_card_spec.rb
321
325
  - spec/unit/braintree/graphql/create_customer_session_input_spec.rb
322
326
  - spec/unit/braintree/graphql/customer_recommendations_input_spec.rb
327
+ - spec/unit/braintree/graphql/customer_recommendations_spec.rb
323
328
  - spec/unit/braintree/graphql/customer_session_input_spec.rb
324
329
  - spec/unit/braintree/graphql/phone_input_spec.rb
325
330
  - spec/unit/braintree/graphql/update_customer_session_input_spec.rb