braintree 4.24.0 → 4.26.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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/apple_pay_card.rb +1 -0
  3. data/lib/braintree/bin_data.rb +2 -1
  4. data/lib/braintree/credit_card.rb +6 -5
  5. data/lib/braintree/customer_session_gateway.rb +194 -0
  6. data/lib/braintree/error_codes.rb +41 -0
  7. data/lib/braintree/error_result.rb +1 -1
  8. data/lib/braintree/errors.rb +2 -1
  9. data/lib/braintree/gateway.rb +8 -0
  10. data/lib/braintree/google_pay_card.rb +1 -0
  11. data/lib/braintree/graphql/enums/recommendations.rb +7 -0
  12. data/lib/braintree/graphql/enums/recommended_payment_option.rb +8 -0
  13. data/lib/braintree/graphql/inputs/create_customer_session_input.rb +35 -0
  14. data/lib/braintree/graphql/inputs/customer_recommendations_input.rb +41 -0
  15. data/lib/braintree/graphql/inputs/customer_session_input.rb +39 -0
  16. data/lib/braintree/graphql/inputs/phone_input.rb +32 -0
  17. data/lib/braintree/graphql/inputs/update_customer_session_input.rb +37 -0
  18. data/lib/braintree/graphql/types/customer_recommendations_payload.rb +32 -0
  19. data/lib/braintree/graphql/types/payment_options.rb +33 -0
  20. data/lib/braintree/graphql/unions/customer_recommendations.rb +34 -0
  21. data/lib/braintree/graphql_client.rb +16 -0
  22. data/lib/braintree/meta_checkout_card.rb +6 -5
  23. data/lib/braintree/meta_checkout_token.rb +6 -5
  24. data/lib/braintree/paypal_payment_resource.rb +22 -0
  25. data/lib/braintree/paypal_payment_resource_gateway.rb +36 -0
  26. data/lib/braintree/successful_result.rb +2 -0
  27. data/lib/braintree/test/credit_card.rb +1 -0
  28. data/lib/braintree/transaction/apple_pay_details.rb +1 -0
  29. data/lib/braintree/transaction/credit_card_details.rb +12 -10
  30. data/lib/braintree/transaction/google_pay_details.rb +11 -10
  31. data/lib/braintree/transaction/meta_checkout_card_details.rb +5 -2
  32. data/lib/braintree/transaction/meta_checkout_token_details.rb +6 -2
  33. data/lib/braintree/transaction/visa_checkout_card_details.rb +5 -2
  34. data/lib/braintree/version.rb +1 -1
  35. data/lib/braintree/visa_checkout_card.rb +5 -5
  36. data/lib/braintree.rb +13 -0
  37. data/spec/integration/braintree/credit_card_spec.rb +12 -0
  38. data/spec/integration/braintree/credit_card_verification_spec.rb +24 -0
  39. data/spec/integration/braintree/customer_session_spec.rb +143 -0
  40. data/spec/integration/braintree/customer_spec.rb +22 -6
  41. data/spec/integration/braintree/payment_method_nonce_spec.rb +11 -0
  42. data/spec/integration/braintree/paypal_payment_resource_spec.rb +141 -0
  43. data/spec/integration/braintree/transaction_spec.rb +15 -0
  44. data/spec/unit/braintree/apple_pay_card_spec.rb +1 -0
  45. data/spec/unit/braintree/credit_card_spec.rb +5 -0
  46. data/spec/unit/braintree/customer_session_gateway_spec.rb +120 -0
  47. data/spec/unit/braintree/google_pay_card_spec.rb +8 -0
  48. data/spec/unit/braintree/graphql/create_customer_session_input_spec.rb +81 -0
  49. data/spec/unit/braintree/graphql/customer_recommendations_input_spec.rb +110 -0
  50. data/spec/unit/braintree/graphql/customer_session_input_spec.rb +81 -0
  51. data/spec/unit/braintree/graphql/phone_input_spec.rb +51 -0
  52. data/spec/unit/braintree/graphql/update_customer_session_input_spec.rb +93 -0
  53. data/spec/unit/braintree/graphql_client_spec.rb +37 -0
  54. data/spec/unit/braintree/meta_checkout_card_spec.rb +53 -51
  55. data/spec/unit/braintree/meta_checkout_token_spec.rb +3 -1
  56. data/spec/unit/braintree/payment_method_nonce_spec.rb +4 -1
  57. data/spec/unit/braintree/paypal_payment_resource_spec.rb +125 -0
  58. data/spec/unit/braintree/transaction/apple_pay_details_spec.rb +8 -0
  59. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +2 -1
  60. data/spec/unit/braintree/transaction/google_pay_details_spec.rb +8 -0
  61. data/spec/unit/braintree/transaction/meta_checkout_card_details_spec.rb +8 -0
  62. data/spec/unit/braintree/transaction/meta_checkout_token_details_spec.rb +8 -0
  63. data/spec/unit/braintree/transaction/visa_checkout_card_details_spec.rb +8 -0
  64. data/spec/unit/braintree/transaction_spec.rb +2 -0
  65. data/spec/unit/braintree/visa_checkout_card_spec.rb +8 -0
  66. data/spec/unit/credit_card_details_spec.rb +8 -0
  67. metadata +33 -2
@@ -0,0 +1,93 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+
4
+ describe Braintree::UpdateCustomerSessionInput do
5
+ let(:input_data) do
6
+ {
7
+ merchant_account_id: "merchant-account-id",
8
+ session_id: "session-id",
9
+ customer: {email: "test@example.com"}
10
+ }
11
+ end
12
+ describe "#initialize" do
13
+ it "initializes with attributes" do
14
+ input = Braintree::UpdateCustomerSessionInput.new(input_data)
15
+
16
+ expect(input.attrs).to eq(input_data.keys)
17
+ expect(input.merchant_account_id).to eq("merchant-account-id")
18
+ expect(input.session_id).to eq("session-id")
19
+ expect(input.customer).to be_a(Braintree::CustomerSessionInput)
20
+ expect(input.customer.email).to eq("test@example.com")
21
+ end
22
+
23
+ it "disallows nil session id" do
24
+ attributes = {
25
+ merchant_account_id: "merchant-account-id",
26
+ }
27
+ expect do
28
+ Braintree::UpdateCustomerSessionInput.new(attributes)
29
+ end.to raise_error(ArgumentError, "Expected hash to contain a :session_id")
30
+ end
31
+
32
+ it "handles nil customer" do
33
+ attributes = {
34
+ merchant_account_id: "merchant-account-id",
35
+ session_id: "session-id",
36
+ }
37
+ input = Braintree::UpdateCustomerSessionInput.new(attributes)
38
+
39
+ expect(input.customer).to be_nil
40
+ end
41
+ end
42
+
43
+
44
+ describe "#inspect" do
45
+ it "returns a string representation of the object" do
46
+ input = Braintree::UpdateCustomerSessionInput.new(input_data)
47
+ expected_string = "#<Braintree::UpdateCustomerSessionInput merchant_account_id:\"merchant-account-id\" session_id:\"session-id\" customer:#<Braintree::CustomerSessionInput email:\"test@example.com\">>"
48
+ expect(input.inspect).to eq(expected_string)
49
+
50
+ end
51
+
52
+ it "handles nil values" do
53
+ attributes = {
54
+ merchant_account_id: "merchant-account-id",
55
+ session_id: "session-id",
56
+ }
57
+ input = Braintree::UpdateCustomerSessionInput.new(attributes)
58
+ expected_string = "#<Braintree::UpdateCustomerSessionInput merchant_account_id:\"merchant-account-id\" session_id:\"session-id\">"
59
+
60
+ expect(input.inspect).to eq(expected_string)
61
+ end
62
+
63
+ end
64
+
65
+ describe "#to_graphql_variables" do
66
+ it "converts the input to graphql variables" do
67
+ input = Braintree::UpdateCustomerSessionInput.new(input_data)
68
+ expected_variables = {
69
+ "merchantAccountId" => "merchant-account-id",
70
+ "sessionId" => "session-id",
71
+ "customer" => {"email" => "test@example.com"},
72
+ }
73
+
74
+ expect(input.to_graphql_variables).to eq(expected_variables)
75
+ end
76
+
77
+ it "handles nil values" do
78
+ attributes = {
79
+ merchant_account_id: "merchant-account-id",
80
+ session_id: "session-id",
81
+ }
82
+ input = Braintree::UpdateCustomerSessionInput.new(attributes)
83
+
84
+ expected_variables = {
85
+ "merchantAccountId" => "merchant-account-id",
86
+ "sessionId" => "session-id",
87
+ }
88
+
89
+ expect(input.to_graphql_variables).to eq(expected_variables)
90
+ end
91
+ end
92
+
93
+ end
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::GraphQLClient do
4
+
5
+ describe ".get_validation_errors" do
6
+ it "returns nil if no errors" do
7
+ expect(Braintree::GraphQLClient.get_validation_errors({})).to be_nil
8
+ end
9
+
10
+ it "returns nil if errors is not an array" do
11
+ expect(Braintree::GraphQLClient.get_validation_errors({:errors => "string"})).to be_nil
12
+ end
13
+
14
+ it "returns validation errors" do
15
+ response = {
16
+ :errors => [
17
+ {:message => "Invalid input", :extensions => {:legacyCode => "81803"}},
18
+ {:message => "Another error", :extensions => {:legacyCode => "91903"}}
19
+ ]
20
+ }
21
+ expected_errors = {
22
+ :errors => [
23
+ {:attribute => "", :code => "81803", :message => "Invalid input"},
24
+ {:attribute => "", :code => "91903", :message => "Another error"}
25
+ ]
26
+ }
27
+ expect(Braintree::GraphQLClient.get_validation_errors(response)).to eq(expected_errors)
28
+ end
29
+
30
+
31
+ it "handles missing legacyCode" do
32
+ response = {:errors => [{:message => "Invalid input"}]}
33
+ expected_errors = {:errors => [{:attribute => "", :code => nil, :message => "Invalid input"}]}
34
+ expect(Braintree::GraphQLClient.get_validation_errors(response)).to eq(expected_errors)
35
+ end
36
+ end
37
+ end
@@ -1,60 +1,62 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
2
 
3
3
  describe Braintree::MetaCheckoutCard do
4
- let(:attributes) do {
4
+ let(:attributes) do {
5
5
 
6
- :bin => "abc1234",
7
- :container_id => "a-container-id",
8
- :card_type => "Visa",
9
- :cardholder_name => "Meta Checkout Card CardHolder",
10
- :commercial => "NO",
11
- :country_of_issuance => "US",
12
- :created_at => "2023-05-05T21:28:37Z",
13
- :debit => "NO",
14
- :durbin_regulated => "NO",
15
- :expiration_month => "05",
16
- :expiration_year => "2024",
17
- :healthcare => "NO",
18
- :last_4 => "1234",
19
- :payroll => "NO",
20
- :prepaid => "NO",
21
- :token => "token1",
22
- :unique_number_identifier => "abc1234",
23
- :updated_at => "2023-05-05T21:28:37Z"
24
- }
25
- end
6
+ :bin => "abc1234",
7
+ :card_type => "Visa",
8
+ :cardholder_name => "Meta Checkout Card CardHolder",
9
+ :commercial => "NO",
10
+ :container_id => "a-container-id",
11
+ :country_of_issuance => "US",
12
+ :created_at => "2023-05-05T21:28:37Z",
13
+ :debit => "NO",
14
+ :durbin_regulated => "NO",
15
+ :expiration_month => "05",
16
+ :expiration_year => "2024",
17
+ :healthcare => "NO",
18
+ :last_4 => "1234",
19
+ :payroll => "NO",
20
+ :prepaid => "NO",
21
+ :prepaid_reloadable => "NO",
22
+ :token => "token1",
23
+ :unique_number_identifier => "abc1234",
24
+ :updated_at => "2023-05-05T21:28:37Z"
25
+ }
26
+ end
26
27
 
27
- describe "unit tests" do
28
- it "initializes with the correct attributes" do
29
- card = Braintree::MetaCheckoutCard._new(:gateway, attributes)
28
+ describe "unit tests" do
29
+ it "initializes with the correct attributes" do
30
+ card = Braintree::MetaCheckoutCard._new(:gateway, attributes)
30
31
 
31
- card.bin.should == "abc1234"
32
- card.container_id.should == "a-container-id"
33
- card.card_type.should == "Visa"
34
- card.cardholder_name.should == "Meta Checkout Card CardHolder"
35
- card.commercial == "NO"
36
- card.country_of_issuance == "US"
37
- card.created_at == "2023-05-05T21:28:37Z"
38
- card.updated_at == "2023-05-05T21:28:37Z"
39
- card.debit == "NO"
40
- card.payroll == "NO"
41
- card.prepaid == "NO"
42
- card.healthcare == "NO"
43
- card.token == "token1"
44
- card.unique_number_identifier == "abc1234"
45
- card.expiration_month.should == "05"
46
- card.expiration_year.should == "2024"
47
- card.last_4.should == "1234"
48
- end
32
+ card.bin.should == "abc1234"
33
+ card.card_type.should == "Visa"
34
+ card.cardholder_name.should == "Meta Checkout Card CardHolder"
35
+ card.commercial == "NO"
36
+ card.container_id.should == "a-container-id"
37
+ card.country_of_issuance == "US"
38
+ card.created_at == "2023-05-05T21:28:37Z"
39
+ card.debit == "NO"
40
+ card.expiration_month.should == "05"
41
+ card.expiration_year.should == "2024"
42
+ card.healthcare == "NO"
43
+ card.last_4.should == "1234"
44
+ card.payroll == "NO"
45
+ card.prepaid == "NO"
46
+ card.prepaid_reloadable == "NO"
47
+ card.token == "token1"
48
+ card.unique_number_identifier == "abc1234"
49
+ card.updated_at == "2023-05-05T21:28:37Z"
50
+ end
49
51
 
50
- it "sets expiration date correctly" do
51
- card = Braintree::MetaCheckoutCard._new(:gateway, attributes)
52
- card.expiration_date.should == "05/2024"
53
- end
52
+ it "sets expiration date correctly" do
53
+ card = Braintree::MetaCheckoutCard._new(:gateway, attributes)
54
+ card.expiration_date.should == "05/2024"
55
+ end
54
56
 
55
- it "masks the card number correctly" do
56
- card = Braintree::MetaCheckoutCard._new(:gateway, attributes)
57
- card.masked_number.should == "abc1234******1234"
58
- end
57
+ it "masks the card number correctly" do
58
+ card = Braintree::MetaCheckoutCard._new(:gateway, attributes)
59
+ card.masked_number.should == "abc1234******1234"
59
60
  end
60
- end
61
+ end
62
+ end
@@ -17,6 +17,7 @@ describe Braintree::MetaCheckoutToken do
17
17
  :last_4 => "1234",
18
18
  :payroll => "NO",
19
19
  :prepaid => "NO",
20
+ :prepaid_reloadable => "NO",
20
21
  :token => "token1",
21
22
  :unique_number_identifier => "abc1234",
22
23
  :updated_at => "2023-05-05T21:28:37Z",
@@ -40,6 +41,7 @@ describe Braintree::MetaCheckoutToken do
40
41
  card.debit == "NO"
41
42
  card.payroll == "NO"
42
43
  card.prepaid == "NO"
44
+ card.prepaid_reloadable == "NO"
43
45
  card.healthcare == "NO"
44
46
  card.token == "token1"
45
47
  card.unique_number_identifier == "abc1234"
@@ -60,4 +62,4 @@ describe Braintree::MetaCheckoutToken do
60
62
  card.masked_number.should == "abc1234******1234"
61
63
  end
62
64
  end
63
- end
65
+ end
@@ -15,7 +15,8 @@ describe Braintree::PaymentMethodNonce do
15
15
  :liability_shifted => false
16
16
  },
17
17
  :bin_data => {
18
- :country_of_issuance => "USA"
18
+ :country_of_issuance => "USA",
19
+ :prepaid_reloadable => "Yes"
19
20
  },
20
21
  )
21
22
  }
@@ -29,6 +30,8 @@ describe Braintree::PaymentMethodNonce do
29
30
  expect(payment_method_nonce.three_d_secure_info.liability_shift_possible).to be false
30
31
  expect(payment_method_nonce.three_d_secure_info.liability_shifted).to be false
31
32
  expect(payment_method_nonce.bin_data.country_of_issuance).to eq("USA")
33
+ expect(payment_method_nonce.bin_data.prepaid_reloadable).to eq("Yes")
34
+
32
35
  end
33
36
  end
34
37
 
@@ -0,0 +1,125 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::PayPalPaymentResource do
4
+
5
+ describe "#update" do
6
+ it "successfully updates a paypal payment request" do
7
+ paypal_payment_resource_request = {
8
+ :amount => 55.00,
9
+ :amount_breakdown => {
10
+ :discount => 15_00,
11
+ :handling => 0,
12
+ :insurance => 5_00,
13
+ :item_total => 45_00,
14
+ :shipping => 10_00,
15
+ :shipping_discount => 0,
16
+ :tax_total => 10_00
17
+ },
18
+ :currency_iso_code => "USD",
19
+ :description => "This is a test",
20
+ :custom_field => "0437",
21
+ :line_items => [{
22
+ :description => "Shoes",
23
+ :image_url => "https://example.com/products/23434/pic.png",
24
+ :kind => "debit",
25
+ :name => "Name #1",
26
+ :product_code => "23434",
27
+ :quantity => 1_00,
28
+ :total_amount => 45_00,
29
+ :unit_amount => 45_00,
30
+ :unit_tax_amount => 10_00,
31
+ :url => "https://example.com/products/23434",
32
+ }],
33
+ :order_id => "order-123456789",
34
+ :payee_email => "bt_buyer_us@paypal.com",
35
+ :payment_method_nonce => "1234",
36
+ :shipping => {
37
+ :country_name => "United States",
38
+ :country_code_alpha2 => "US",
39
+ :country_code_alpha3 => "USA",
40
+ :country_code_numeric => "484",
41
+ :extended_address => "Apt. #1",
42
+ :first_name => "John",
43
+ :international_phone => {
44
+ :country_code => "1",
45
+ :national_number => "4081111111",
46
+ },
47
+ :last_name => "Doe",
48
+ :locality => "Chicago",
49
+ :postal_code => "60618",
50
+ :region => "IL",
51
+ :street_address => "123 Division Street",
52
+ },
53
+ :shipping_options => [{
54
+ :amount => "10.00",
55
+ :id => "option1",
56
+ :label => "fast",
57
+ :selected => true,
58
+ :type => "SHIPPING"
59
+ }]
60
+ }
61
+
62
+ unknown_response = {:payment_method_nonce => {}}
63
+ http_instance = double(:put => unknown_response)
64
+ allow(Braintree::Http).to receive(:new).and_return(http_instance)
65
+ result = Braintree::PayPalPaymentResource.update(paypal_payment_resource_request)
66
+ expect(result).to be_success
67
+ end
68
+ it "should match the update signature" do
69
+ expect(Braintree::PayPalPaymentResourceGateway._update_signature).to match([
70
+ :amount,
71
+ {:amount_breakdown => [
72
+ :discount,
73
+ :handling,
74
+ :insurance,
75
+ :item_total,
76
+ :shipping,
77
+ :shipping_discount,
78
+ :tax_total
79
+ ]},
80
+ :currency_iso_code,
81
+ :custom_field,
82
+ :description,
83
+ {:line_items => [
84
+ :description,
85
+ :image_url,
86
+ :kind,
87
+ :name,
88
+ :product_code,
89
+ :quantity,
90
+ :total_amount,
91
+ :unit_amount,
92
+ :unit_tax_amount,
93
+ :url,
94
+ ]},
95
+ :order_id,
96
+ :payee_email,
97
+ :payment_method_nonce,
98
+ {:shipping => [
99
+ :country_name,
100
+ :country_code_alpha2,
101
+ :country_code_alpha3,
102
+ :country_code_numeric,
103
+ :extended_address,
104
+ :first_name,
105
+ {:international_phone => [
106
+ :country_code,
107
+ :national_number]},
108
+ :last_name,
109
+ :locality,
110
+ :postal_code,
111
+ :region,
112
+ :street_address,
113
+ ]},
114
+ {:shipping_options => [
115
+ :amount,
116
+ :id,
117
+ :label,
118
+ :selected,
119
+ :type
120
+ ]},
121
+ ],
122
+ )
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::ApplePayDetails do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::ApplePayDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ end
@@ -24,6 +24,7 @@ describe Braintree::Transaction::CreditCardDetails do
24
24
  :customer_location => "US",
25
25
  :healthcare => "No",
26
26
  :prepaid => "Yes",
27
+ :prepaid_reloadable => "Yes",
27
28
  :durbin_regulated => "No",
28
29
  :debit => "Yes",
29
30
  :commercial => "Unknown",
@@ -34,7 +35,7 @@ describe Braintree::Transaction::CreditCardDetails do
34
35
  :image_url => "example.com/visa.png",
35
36
  :unique_number_identifier => "abc123",
36
37
  )
37
- expect(details.inspect).to eq(%(#<token: "token", bin: "123456", last_4: "6789", card_type: "Visa", expiration_date: "05/2012", cardholder_name: "The Cardholder", customer_location: "US", prepaid: "Yes", healthcare: "No", durbin_regulated: "No", debit: "Yes", commercial: "Unknown", payroll: "Unknown", product_id: "Unknown", country_of_issuance: "Lilliput", issuing_bank: "Gulliver Bank", image_url: "example.com/visa.png", unique_number_identifier: "abc123">))
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">))
38
39
  end
39
40
  end
40
41
 
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::GooglePayDetails do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::GooglePayDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::MetaCheckoutCardDetails do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::MetaCheckoutCardDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::MetaCheckoutTokenDetails do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::MetaCheckoutTokenDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::VisaCheckoutCardDetails do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::VisaCheckoutCardDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ end
@@ -119,6 +119,7 @@ describe Braintree::Transaction do
119
119
  :expiration_year => "2009",
120
120
  :customer_location => "US",
121
121
  :prepaid => "Yes",
122
+ :prepaid_reloadable => "Yes",
122
123
  :healthcare => "Yes",
123
124
  :durbin_regulated => "Yes",
124
125
  :debit => "Yes",
@@ -137,6 +138,7 @@ describe Braintree::Transaction do
137
138
  expect(transaction.credit_card_details.expiration_year).to eq("2009")
138
139
  expect(transaction.credit_card_details.customer_location).to eq("US")
139
140
  expect(transaction.credit_card_details.prepaid).to eq(Braintree::CreditCard::Prepaid::Yes)
141
+ expect(transaction.credit_card_details.prepaid_reloadable).to eq(Braintree::CreditCard::PrepaidReloadable::Yes)
140
142
  expect(transaction.credit_card_details.healthcare).to eq(Braintree::CreditCard::Healthcare::Yes)
141
143
  expect(transaction.credit_card_details.durbin_regulated).to eq(Braintree::CreditCard::DurbinRegulated::Yes)
142
144
  expect(transaction.credit_card_details.debit).to eq(Braintree::CreditCard::Debit::Yes)
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::VisaCheckoutCard do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::VisaCheckoutCard._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::CreditCardDetails do
4
+ it "initializes prepaid reloadable correctly" do
5
+ card = Braintree::CreditCardDetails._new(:gateway, {:prepaid_reloadable => "No"})
6
+ expect(card.prepaid_reloadable).to eq("No")
7
+ end
8
+ 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.24.0
4
+ version: 4.26.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-01-23 00:00:00.000000000 Z
11
+ date: 2025-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder
@@ -77,6 +77,7 @@ files:
77
77
  - lib/braintree/customer.rb
78
78
  - lib/braintree/customer_gateway.rb
79
79
  - lib/braintree/customer_search.rb
80
+ - lib/braintree/customer_session_gateway.rb
80
81
  - lib/braintree/descriptor.rb
81
82
  - lib/braintree/digest.rb
82
83
  - lib/braintree/disbursement.rb
@@ -108,6 +109,16 @@ files:
108
109
  - lib/braintree/gateway.rb
109
110
  - lib/braintree/google_pay_card.rb
110
111
  - lib/braintree/granted_payment_instrument_update.rb
112
+ - lib/braintree/graphql/enums/recommendations.rb
113
+ - lib/braintree/graphql/enums/recommended_payment_option.rb
114
+ - lib/braintree/graphql/inputs/create_customer_session_input.rb
115
+ - lib/braintree/graphql/inputs/customer_recommendations_input.rb
116
+ - lib/braintree/graphql/inputs/customer_session_input.rb
117
+ - lib/braintree/graphql/inputs/phone_input.rb
118
+ - lib/braintree/graphql/inputs/update_customer_session_input.rb
119
+ - lib/braintree/graphql/types/customer_recommendations_payload.rb
120
+ - lib/braintree/graphql/types/payment_options.rb
121
+ - lib/braintree/graphql/unions/customer_recommendations.rb
111
122
  - lib/braintree/graphql_client.rb
112
123
  - lib/braintree/http.rb
113
124
  - lib/braintree/local_payment_completed.rb
@@ -141,6 +152,8 @@ files:
141
152
  - lib/braintree/payment_method_parser.rb
142
153
  - lib/braintree/paypal_account.rb
143
154
  - lib/braintree/paypal_account_gateway.rb
155
+ - lib/braintree/paypal_payment_resource.rb
156
+ - lib/braintree/paypal_payment_resource_gateway.rb
144
157
  - lib/braintree/plan.rb
145
158
  - lib/braintree/plan_gateway.rb
146
159
  - lib/braintree/processor_response_types.rb
@@ -239,6 +252,7 @@ files:
239
252
  - spec/integration/braintree/credit_card_verification_search_spec.rb
240
253
  - spec/integration/braintree/credit_card_verification_spec.rb
241
254
  - spec/integration/braintree/customer_search_spec.rb
255
+ - spec/integration/braintree/customer_session_spec.rb
242
256
  - spec/integration/braintree/customer_spec.rb
243
257
  - spec/integration/braintree/disbursement_spec.rb
244
258
  - spec/integration/braintree/discount_spec.rb
@@ -257,6 +271,7 @@ files:
257
271
  - spec/integration/braintree/payment_method_spec.rb
258
272
  - spec/integration/braintree/payment_method_us_bank_account_spec.rb
259
273
  - spec/integration/braintree/paypal_account_spec.rb
274
+ - spec/integration/braintree/paypal_payment_resource_spec.rb
260
275
  - spec/integration/braintree/plan_spec.rb
261
276
  - spec/integration/braintree/samsung_pay_card_spec.rb
262
277
  - spec/integration/braintree/sepa_direct_debit_account_spec.rb
@@ -290,6 +305,7 @@ files:
290
305
  - spec/unit/braintree/credit_card_verification_gateway_spec.rb
291
306
  - spec/unit/braintree/credit_card_verification_search_spec.rb
292
307
  - spec/unit/braintree/credit_card_verification_spec.rb
308
+ - spec/unit/braintree/customer_session_gateway_spec.rb
293
309
  - spec/unit/braintree/customer_spec.rb
294
310
  - spec/unit/braintree/digest_spec.rb
295
311
  - spec/unit/braintree/disbursement_spec.rb
@@ -304,6 +320,13 @@ files:
304
320
  - spec/unit/braintree/exchange_rate_quote_response_spec.rb
305
321
  - spec/unit/braintree/exchange_rate_quote_spec.rb
306
322
  - spec/unit/braintree/exchange_rate_spec.rb
323
+ - spec/unit/braintree/google_pay_card_spec.rb
324
+ - spec/unit/braintree/graphql/create_customer_session_input_spec.rb
325
+ - spec/unit/braintree/graphql/customer_recommendations_input_spec.rb
326
+ - spec/unit/braintree/graphql/customer_session_input_spec.rb
327
+ - spec/unit/braintree/graphql/phone_input_spec.rb
328
+ - spec/unit/braintree/graphql/update_customer_session_input_spec.rb
329
+ - spec/unit/braintree/graphql_client_spec.rb
307
330
  - spec/unit/braintree/http_spec.rb
308
331
  - spec/unit/braintree/local_payment_completed_spec.rb
309
332
  - spec/unit/braintree/local_payment_expired_spec.rb
@@ -321,6 +344,7 @@ files:
321
344
  - spec/unit/braintree/payment_method_nonce_spec.rb
322
345
  - spec/unit/braintree/payment_method_spec.rb
323
346
  - spec/unit/braintree/paypal_account_spec.rb
347
+ - spec/unit/braintree/paypal_payment_resource_spec.rb
324
348
  - spec/unit/braintree/resource_collection_spec.rb
325
349
  - spec/unit/braintree/risk_data/liability_shift.rb
326
350
  - spec/unit/braintree/risk_data_spec.rb
@@ -332,14 +356,19 @@ files:
332
356
  - spec/unit/braintree/subscription_spec.rb
333
357
  - spec/unit/braintree/successful_result_spec.rb
334
358
  - spec/unit/braintree/three_d_secure_info_spec.rb
359
+ - spec/unit/braintree/transaction/apple_pay_details_spec.rb
335
360
  - spec/unit/braintree/transaction/credit_card_details_spec.rb
336
361
  - spec/unit/braintree/transaction/customer_details_spec.rb
337
362
  - spec/unit/braintree/transaction/deposit_details_spec.rb
363
+ - spec/unit/braintree/transaction/google_pay_details_spec.rb
338
364
  - spec/unit/braintree/transaction/installment_spec.rb
339
365
  - spec/unit/braintree/transaction/local_payment_details_spec.rb
366
+ - spec/unit/braintree/transaction/meta_checkout_card_details_spec.rb
367
+ - spec/unit/braintree/transaction/meta_checkout_token_details_spec.rb
340
368
  - spec/unit/braintree/transaction/payment_receipt_spec.rb
341
369
  - spec/unit/braintree/transaction/paypal_details_spec.rb
342
370
  - spec/unit/braintree/transaction/sepa_direct_debit_account_details_spec.rb
371
+ - spec/unit/braintree/transaction/visa_checkout_card_details_spec.rb
343
372
  - spec/unit/braintree/transaction_gateway_spec.rb
344
373
  - spec/unit/braintree/transaction_search_spec.rb
345
374
  - spec/unit/braintree/transaction_spec.rb
@@ -351,12 +380,14 @@ files:
351
380
  - spec/unit/braintree/validation_error_collection_spec.rb
352
381
  - spec/unit/braintree/validation_error_spec.rb
353
382
  - spec/unit/braintree/venmo_profile_data_spec.rb
383
+ - spec/unit/braintree/visa_checkout_card_spec.rb
354
384
  - spec/unit/braintree/webhook_notification_spec.rb
355
385
  - spec/unit/braintree/xml/libxml_spec.rb
356
386
  - spec/unit/braintree/xml/parser_spec.rb
357
387
  - spec/unit/braintree/xml/rexml_spec.rb
358
388
  - spec/unit/braintree/xml_spec.rb
359
389
  - spec/unit/braintree_spec.rb
390
+ - spec/unit/credit_card_details_spec.rb
360
391
  - spec/unit/spec_helper.rb
361
392
  homepage: https://www.braintreepayments.com/
362
393
  licenses: