braintree 4.13.0 → 4.15.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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/credit_card.rb +13 -0
  3. data/lib/braintree/credit_card_gateway.rb +15 -3
  4. data/lib/braintree/payment_method_gateway.rb +15 -3
  5. data/lib/braintree/test/nonce.rb +1 -0
  6. data/lib/braintree/test/venmo_sdk.rb +2 -0
  7. data/lib/braintree/transaction/credit_card_details.rb +3 -0
  8. data/lib/braintree/transaction/local_payment_details.rb +2 -0
  9. data/lib/braintree/transaction/payment_receipt/card_present_data.rb +36 -0
  10. data/lib/braintree/transaction/payment_receipt/merchant_address.rb +19 -0
  11. data/lib/braintree/transaction/payment_receipt.rb +31 -0
  12. data/lib/braintree/transaction/us_bank_account_details.rb +1 -0
  13. data/lib/braintree/transaction.rb +7 -4
  14. data/lib/braintree/transaction_gateway.rb +15 -3
  15. data/lib/braintree/transaction_search.rb +6 -5
  16. data/lib/braintree/version.rb +1 -1
  17. data/lib/braintree/webhook_notification.rb +1 -0
  18. data/lib/braintree/webhook_testing_gateway.rb +17 -0
  19. data/lib/braintree.rb +3 -0
  20. data/spec/integration/braintree/add_on_spec.rb +9 -9
  21. data/spec/integration/braintree/address_spec.rb +69 -69
  22. data/spec/integration/braintree/advanced_search_spec.rb +45 -45
  23. data/spec/integration/braintree/apple_pay_spec.rb +8 -8
  24. data/spec/integration/braintree/client_api/client_token_spec.rb +15 -15
  25. data/spec/integration/braintree/credit_card_spec.rb +223 -223
  26. data/spec/integration/braintree/credit_card_verification_search_spec.rb +16 -16
  27. data/spec/integration/braintree/credit_card_verification_spec.rb +52 -52
  28. data/spec/integration/braintree/customer_search_spec.rb +20 -20
  29. data/spec/integration/braintree/customer_spec.rb +313 -313
  30. data/spec/integration/braintree/disbursement_spec.rb +2 -2
  31. data/spec/integration/braintree/discount_spec.rb +9 -9
  32. data/spec/integration/braintree/dispute_spec.rb +87 -87
  33. data/spec/integration/braintree/document_upload_spec.rb +17 -17
  34. data/spec/integration/braintree/error_codes_spec.rb +2 -2
  35. data/spec/integration/braintree/http_spec.rb +28 -28
  36. data/spec/integration/braintree/merchant_account_spec.rb +127 -127
  37. data/spec/integration/braintree/merchant_spec.rb +103 -103
  38. data/spec/integration/braintree/oauth_spec.rb +61 -61
  39. data/spec/integration/braintree/payment_method_nonce_spec.rb +73 -73
  40. data/spec/integration/braintree/payment_method_spec.rb +389 -389
  41. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +78 -78
  42. data/spec/integration/braintree/paypal_account_spec.rb +38 -38
  43. data/spec/integration/braintree/plan_spec.rb +15 -15
  44. data/spec/integration/braintree/samsung_pay_card_spec.rb +65 -65
  45. data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +51 -51
  46. data/spec/integration/braintree/settlement_batch_summary_spec.rb +11 -11
  47. data/spec/integration/braintree/subscription_spec.rb +364 -364
  48. data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
  49. data/spec/integration/braintree/test_transaction_spec.rb +19 -19
  50. data/spec/integration/braintree/transaction_line_item_spec.rb +6 -6
  51. data/spec/integration/braintree/transaction_search_spec.rb +198 -165
  52. data/spec/integration/braintree/transaction_spec.rb +1319 -1151
  53. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -32
  54. data/spec/integration/braintree/us_bank_account_spec.rb +30 -30
  55. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +18 -18
  56. data/spec/integration/braintree/us_bank_account_verification_spec.rb +33 -33
  57. data/spec/integration/braintree/visa_checkout_card_spec.rb +57 -57
  58. data/spec/spec_helper.rb +9 -8
  59. data/spec/unit/braintree/address_spec.rb +8 -8
  60. data/spec/unit/braintree/base_module_spec.rb +4 -4
  61. data/spec/unit/braintree/client_token_spec.rb +2 -2
  62. data/spec/unit/braintree/configuration_spec.rb +57 -57
  63. data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
  64. data/spec/unit/braintree/credit_card_spec.rb +31 -29
  65. data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +28 -28
  66. data/spec/unit/braintree/credit_card_verification_search_spec.rb +9 -9
  67. data/spec/unit/braintree/credit_card_verification_spec.rb +17 -17
  68. data/spec/unit/braintree/customer_spec.rb +41 -40
  69. data/spec/unit/braintree/digest_spec.rb +5 -5
  70. data/spec/unit/braintree/disbursement_spec.rb +11 -11
  71. data/spec/unit/braintree/dispute_search_spec.rb +2 -2
  72. data/spec/unit/braintree/dispute_spec.rb +56 -56
  73. data/spec/unit/braintree/document_upload_spec.rb +8 -8
  74. data/spec/unit/braintree/enriched_customer_data_spec.rb +2 -2
  75. data/spec/unit/braintree/error_result_spec.rb +5 -5
  76. data/spec/unit/braintree/errors_spec.rb +9 -9
  77. data/spec/unit/braintree/http_spec.rb +8 -8
  78. data/spec/unit/braintree/local_payment_completed_spec.rb +11 -11
  79. data/spec/unit/braintree/local_payment_expired_spec.rb +2 -2
  80. data/spec/unit/braintree/local_payment_funded_spec.rb +6 -6
  81. data/spec/unit/braintree/merchant_account_spec.rb +4 -4
  82. data/spec/unit/braintree/modification_spec.rb +1 -1
  83. data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +6 -6
  84. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +7 -7
  85. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +14 -14
  86. data/spec/unit/braintree/payment_method_spec.rb +19 -19
  87. data/spec/unit/braintree/paypal_account_spec.rb +4 -4
  88. data/spec/unit/braintree/resource_collection_spec.rb +7 -7
  89. data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +1 -1
  90. data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
  91. data/spec/unit/braintree/signature_service_spec.rb +2 -2
  92. data/spec/unit/braintree/subscription_search_spec.rb +17 -17
  93. data/spec/unit/braintree/subscription_spec.rb +8 -8
  94. data/spec/unit/braintree/successful_result_spec.rb +5 -5
  95. data/spec/unit/braintree/three_d_secure_info_spec.rb +20 -20
  96. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +5 -5
  97. data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
  98. data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
  99. data/spec/unit/braintree/transaction/local_payment_details_spec.rb +30 -0
  100. data/spec/unit/braintree/transaction/payment_receipt_spec.rb +73 -0
  101. data/spec/unit/braintree/transaction_gateway_spec.rb +9 -6
  102. data/spec/unit/braintree/transaction_search_spec.rb +2 -2
  103. data/spec/unit/braintree/transaction_spec.rb +101 -93
  104. data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
  105. data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
  106. data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
  107. data/spec/unit/braintree/us_bank_account_verification_spec.rb +7 -7
  108. data/spec/unit/braintree/util_spec.rb +27 -27
  109. data/spec/unit/braintree/validation_error_collection_spec.rb +34 -34
  110. data/spec/unit/braintree/validation_error_spec.rb +4 -4
  111. data/spec/unit/braintree/venmo_profile_data_spec.rb +5 -5
  112. data/spec/unit/braintree/webhook_notification_spec.rb +206 -191
  113. data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
  114. data/spec/unit/braintree/xml/parser_spec.rb +8 -8
  115. data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
  116. data/spec/unit/braintree/xml_spec.rb +17 -17
  117. data/spec/unit/braintree_spec.rb +2 -2
  118. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 44371fa440317aa474b358a279682d0e79ad05565d4b1f583dabb77c237a5d34
4
- data.tar.gz: 8487685b45da286097e7f366ca1b26820f89da15008a1f6555409e1c2605f61a
3
+ metadata.gz: 71fab9e9404ac3f2c30216aca3642baecbd01c942a25c16c70b6748563f32435
4
+ data.tar.gz: b8900d8aa7aac3716db035478510532bb82edd40ba599626d7cbe770fa939849
5
5
  SHA512:
6
- metadata.gz: '0584f71fb953b0b73071bb368481873e3948fb55a3de2cc91b8d2c443aaf2544b739534d4283e6d50ad85d532eb3cfe2126338eebb92359c74f19185f55ceaf9'
7
- data.tar.gz: 2d98c343dd94fdb128fdc09bd1e1688e12b82f0055b9666869c9f88c5fe74d9accf736f8ec3876e8d6ef6965874a3a8618a8bbe63df0e5146e30d2c7d723956e
6
+ metadata.gz: 9470b1e652814a7ae2fda1250b2c9f670069f1ef98a601ce2a382a4e3430017eaeaeaf7dabe4bc1b456c755d1b0fb258b06fc0593432d2b35c2ce9fc02671d5a
7
+ data.tar.gz: e376876f7c6ae2c5a1ce588c847d3494e828b29c4f2aee273d5e2c97348577db364b4bcc48ba0588074d87644a39f771b45c7eb56e7865be1cec730a76e72162
@@ -23,6 +23,16 @@ module Braintree
23
23
  All = constants.map { |c| const_get(c) }
24
24
  end
25
25
 
26
+ module DebitNetwork
27
+ Accel = "ACCEL"
28
+ Nyce = "NYCE"
29
+ Pulse = "PULSE"
30
+ Star = "STAR"
31
+ Star_Access = "STAR_ACCESS"
32
+
33
+ All = constants.map { |c| const_get(c) }
34
+ end
35
+
26
36
  module CustomerLocation
27
37
  International = "international"
28
38
  US = "us"
@@ -160,7 +170,10 @@ module Braintree
160
170
  end
161
171
 
162
172
  # Returns true if the card is associated with Venmo SDK
173
+ # NEXT_MAJOR_VERSION Remove this method
174
+ # The old venmo SDK class has been deprecated
163
175
  def venmo_sdk?
176
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
164
177
  @venmo_sdk
165
178
  end
166
179
 
@@ -12,6 +12,10 @@ module Braintree
12
12
  if attributes.has_key?(:expiration_date) && (attributes.has_key?(:expiration_month) || attributes.has_key?(:expiration_year))
13
13
  raise ArgumentError.new("create with both expiration_month and expiration_year or only expiration_date")
14
14
  end
15
+ # NEXT_MAJOR_VERSION remove this check
16
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
17
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
18
+ end
15
19
  Util.verify_keys(CreditCardGateway._create_signature, attributes)
16
20
  _do_create("/payment_methods", :credit_card => attributes)
17
21
  end
@@ -61,6 +65,10 @@ module Braintree
61
65
  end
62
66
 
63
67
  def update(token, attributes)
68
+ # NEXT_MAJOR_VERSION remove this check
69
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
70
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
71
+ end
64
72
  Util.verify_keys(CreditCardGateway._update_signature, attributes)
65
73
  _do_update(:put, "/payment_methods/credit_card/#{token}", :credit_card => attributes)
66
74
  end
@@ -79,21 +87,25 @@ module Braintree
79
87
 
80
88
  def self._signature(type) # :nodoc:
81
89
  billing_address_params = AddressGateway._shared_signature
90
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_session
91
+ # The old venmo SDK class has been deprecated
82
92
  options = [
83
93
  :fail_on_duplicate_payment_method,
84
94
  :make_default,
85
95
  :skip_advanced_fraud_checking,
86
- :venmo_sdk_session,
96
+ :venmo_sdk_session, # Deprecated
87
97
  :verification_account_type,
88
98
  :verification_amount,
89
99
  :verification_currency_iso_code,
90
100
  :verification_merchant_account_id,
91
101
  :verify_card
92
102
  ]
103
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code
104
+ # The old venmo SDK class has been deprecated
93
105
  signature = [
94
106
  :billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
95
- :expiration_year, :number, :token, :venmo_sdk_payment_method_code, :device_data,
96
- :payment_method_nonce,
107
+ :expiration_year, :number, :token, :venmo_sdk_payment_method_code, # Deprecated
108
+ :device_data, :payment_method_nonce,
97
109
  {:external_vault => [:network_transaction_id]},
98
110
  {:options => options},
99
111
  {:billing_address => billing_address_params}
@@ -9,6 +9,10 @@ module Braintree
9
9
  end
10
10
 
11
11
  def create(attributes)
12
+ # NEXT_MAJOR_VERSION remove this check
13
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
14
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
15
+ end
12
16
  Util.verify_keys(PaymentMethodGateway._create_signature, attributes)
13
17
  _do_create("/payment_methods", :payment_method => attributes)
14
18
  end
@@ -60,6 +64,10 @@ module Braintree
60
64
  end
61
65
 
62
66
  def update(token, attributes)
67
+ # NEXT_MAJOR_VERSION remove this check
68
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
69
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
70
+ end
63
71
  Util.verify_keys(PaymentMethodGateway._update_signature, attributes)
64
72
  _do_update(:put, "/payment_methods/any/#{token}", :payment_method => attributes)
65
73
  end
@@ -149,11 +157,13 @@ module Braintree
149
157
  def self._signature(type) # :nodoc:
150
158
  billing_address_params = AddressGateway._shared_signature
151
159
  paypal_options_shipping_signature = AddressGateway._shared_signature
160
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_session
161
+ # The old venmo SDK class has been deprecated
152
162
  options = [
153
163
  :make_default,
154
164
  :skip_advanced_fraud_checking,
155
165
  :us_bank_account_verification_method,
156
- :venmo_sdk_session,
166
+ :venmo_sdk_session, # Deprecated
157
167
  :verification_account_type,
158
168
  :verification_amount,
159
169
  :verification_currency_iso_code,
@@ -168,10 +178,12 @@ module Braintree
168
178
  {:shipping => paypal_options_shipping_signature}
169
179
  ],
170
180
  ]
181
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code
182
+ # The old venmo SDK class has been deprecated
171
183
  signature = [
172
184
  :billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
173
- :expiration_year, :number, :token, :venmo_sdk_payment_method_code, :device_data,
174
- :payment_method_nonce,
185
+ :expiration_year, :number, :token, :venmo_sdk_payment_method_code, # Deprecated
186
+ :device_data, :payment_method_nonce,
175
187
  {:options => options},
176
188
  {:billing_address => billing_address_params}
177
189
  ]
@@ -53,6 +53,7 @@ module Braintree
53
53
  TransactableCountryOfIssuanceUSA = "fake-valid-country-of-issuance-usa-nonce"
54
54
  TransactableCountryOfIssuanceCAD = "fake-valid-country-of-issuance-cad-nonce"
55
55
  TransactableIssuingBankNetworkOnly = "fake-valid-issuing-bank-network-only-nonce"
56
+ TransactablePinlessDebitVisa = "fake-pinless-debit-visa-nonce"
56
57
  ProcessorDeclinedVisa = "fake-processor-declined-visa-nonce"
57
58
  ProcessorDeclinedMasterCard = "fake-processor-declined-mastercard-nonce"
58
59
  ProcessorDeclinedAmEx = "fake-processor-declined-amex-nonce"
@@ -1,3 +1,5 @@
1
+ # NEXT_MAJOR_VERSION Remove this class
2
+ # The old venmo SDK class has been deprecated
1
3
  module Braintree
2
4
  module Test
3
5
  module VenmoSDK
@@ -64,7 +64,10 @@ module Braintree
64
64
  "#{bin}******#{last_4}"
65
65
  end
66
66
 
67
+ # NEXT_MAJOR_VERSION Remove this method
68
+ # The old venmo SDK class has been deprecated
67
69
  def venmo_sdk?
70
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
68
71
  @venmo_sdk
69
72
  end
70
73
 
@@ -8,6 +8,8 @@ module Braintree
8
8
  attr_reader :debug_id
9
9
  attr_reader :description
10
10
  attr_reader :funding_source
11
+ attr_reader :implicitly_vaulted_payment_method_global_id
12
+ attr_reader :implicitly_vaulted_payment_method_token
11
13
  attr_reader :payer_id
12
14
  attr_reader :payment_id
13
15
  attr_reader :refund_from_transaction_fee_amount
@@ -0,0 +1,36 @@
1
+ module Braintree
2
+ class Transaction
3
+ class PaymentReceipt
4
+ class CardPresentData
5
+ include BaseModule
6
+
7
+ attr_reader :application_cryptogram
8
+ attr_reader :application_identifier
9
+ attr_reader :application_interchange_profile
10
+ attr_reader :application_name
11
+ attr_reader :application_transaction_counter
12
+ attr_reader :application_usage_control
13
+ attr_reader :authorization_mode
14
+ attr_reader :authorization_response_code
15
+ attr_reader :card_entry_method
16
+ attr_reader :card_sequence_number
17
+ attr_reader :cardholder_verification_method_results
18
+ attr_reader :cashback_amount
19
+ attr_reader :cryptogram_information_data
20
+ attr_reader :issuer_action_code_default
21
+ attr_reader :issuer_action_code_denial
22
+ attr_reader :issuer_action_code_online
23
+ attr_reader :issuer_authentication_data
24
+ attr_reader :terminal_country_code
25
+ attr_reader :terminal_transaction_date
26
+ attr_reader :terminal_transaction_type
27
+ attr_reader :terminal_verification_result
28
+ attr_reader :unpredictable_number
29
+
30
+ def initialize(attributes)
31
+ set_instance_variables_from_hash attributes unless attributes.nil?
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ module Braintree
2
+ class Transaction
3
+ class PaymentReceipt
4
+ class MerchantAddress
5
+ include BaseModule
6
+
7
+ attr_reader :locality
8
+ attr_reader :phone
9
+ attr_reader :postal_code
10
+ attr_reader :region
11
+ attr_reader :street_address
12
+
13
+ def initialize(attributes)
14
+ set_instance_variables_from_hash attributes unless attributes.nil?
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,31 @@
1
+ module Braintree
2
+ class Transaction
3
+ class PaymentReceipt
4
+ include BaseModule
5
+
6
+ attr_reader :account_balance
7
+ attr_reader :amount
8
+ attr_reader :card_last_4
9
+ attr_reader :card_present_data
10
+ attr_reader :card_type
11
+ attr_reader :currency_iso_code
12
+ attr_reader :global_id
13
+ attr_reader :id
14
+ attr_reader :merchant_address
15
+ attr_reader :merchant_identification_number
16
+ attr_reader :merchant_name
17
+ attr_reader :pin_verified
18
+ attr_reader :processor_authorization_code
19
+ attr_reader :processor_response_code
20
+ attr_reader :processor_response_text
21
+ attr_reader :terminal_identification_number
22
+ attr_reader :type
23
+
24
+ def initialize(attributes)
25
+ set_instance_variables_from_hash attributes unless attributes.nil?
26
+ @card_present_data = CardPresentData.new(attributes[:card_present_date]) if attributes[:card_present_data]
27
+ @merchant_address = MerchantAddress.new(attributes[:merchant_address]) if attributes[:merchant_address]
28
+ end
29
+ end
30
+ end
31
+ end
@@ -7,6 +7,7 @@ module Braintree
7
7
  attr_reader :account_type
8
8
  attr_reader :ach_mandate
9
9
  attr_reader :bank_name
10
+ attr_reader :global_id
10
11
  attr_reader :image_url
11
12
  attr_reader :last_4
12
13
  attr_reader :routing_number
@@ -91,8 +91,9 @@ module Braintree
91
91
  end
92
92
  end
93
93
 
94
- attr_reader :acquirer_reference_number
95
94
  attr_reader :ach_return_code
95
+ attr_reader :ach_return_responses
96
+ attr_reader :acquirer_reference_number
96
97
  attr_reader :add_ons
97
98
  attr_reader :additional_processor_response # The raw response from the processor.
98
99
  attr_reader :amount
@@ -111,6 +112,7 @@ module Braintree
111
112
  attr_reader :custom_fields
112
113
  attr_reader :customer_details
113
114
  attr_reader :cvv_response_code
115
+ attr_reader :debit_network
114
116
  attr_reader :descriptor
115
117
  attr_reader :disbursement_details
116
118
  attr_reader :discount_amount
@@ -136,6 +138,7 @@ module Braintree
136
138
  attr_reader :order_id
137
139
  attr_reader :partial_settlement_transaction_ids
138
140
  attr_reader :payment_instrument_type
141
+ attr_reader :payment_receipt
139
142
  attr_reader :paypal_details
140
143
  attr_reader :paypal_here_details
141
144
  attr_reader :plan_id
@@ -149,8 +152,8 @@ module Braintree
149
152
  attr_reader :purchase_order_number
150
153
  attr_reader :recurring
151
154
  attr_reader :refund_ids
152
- attr_reader :refunded_transaction_id
153
155
  attr_reader :refunded_installments
156
+ attr_reader :refunded_transaction_id
154
157
  attr_reader :retried
155
158
  attr_reader :retried_transaction_id # the primary/parent transaction id of any retried transaction
156
159
  attr_reader :retrieval_reference_number
@@ -158,9 +161,9 @@ module Braintree
158
161
  attr_reader :risk_data
159
162
  attr_reader :samsung_pay_card_details
160
163
  attr_reader :sca_exemption_requested
161
- attr_reader :service_fee_amount
162
164
  attr_reader :sepa_direct_debit_account_details
163
165
  attr_reader :sepa_direct_debit_return_code
166
+ attr_reader :service_fee_amount
164
167
  attr_reader :settlement_batch_id
165
168
  attr_reader :shipping_amount
166
169
  attr_reader :shipping_details
@@ -178,7 +181,6 @@ module Braintree
178
181
  attr_reader :venmo_account_details
179
182
  attr_reader :visa_checkout_card_details
180
183
  attr_reader :voice_referral_number
181
- attr_reader :ach_return_responses
182
184
 
183
185
  def self.adjust_authorization(*args)
184
186
  Configuration.gateway.transaction.adjust_authorization(*args)
@@ -312,6 +314,7 @@ module Braintree
312
314
  @google_pay_details = GooglePayDetails.new(@google_pay_card)
313
315
  @local_payment_details = LocalPaymentDetails.new(@local_payment)
314
316
  @payment_instrument_type = attributes[:payment_instrument_type]
317
+ @payment_receipt = PaymentReceipt.new(attributes[:payment_receipt]) if attributes[:payment_receipt]
315
318
  @paypal_details = PayPalDetails.new(@paypal)
316
319
  @paypal_here_details = PayPalHereDetails.new(@paypal_here)
317
320
  @samsung_pay_card_details = SamsungPayCardDetails.new(attributes[:samsung_pay_card])
@@ -9,6 +9,14 @@ module Braintree
9
9
  end
10
10
 
11
11
  def create(attributes)
12
+ # NEXT_MAJOR_VERSION remove this check
13
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
14
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
15
+ end
16
+ # NEXT_MAJOR_VERSION remove this check
17
+ if attributes.has_key?(:three_d_secure_token)
18
+ warn "[DEPRECATED] Passing :three_d_secure_token to create is deprecated. Please use :three_d_secure_authentication_id"
19
+ end
12
20
  Util.verify_keys(TransactionGateway._create_signature, attributes)
13
21
  _do_create "/transactions", :transaction => attributes
14
22
  end
@@ -183,6 +191,10 @@ module Braintree
183
191
  [:amount, :channel, {:options => [:submit_for_settlement]}]
184
192
  end
185
193
 
194
+
195
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code, venmo_sdk_session, and three_d_secure_token
196
+ # The old venmo SDK class has been deprecated
197
+ # three_d_secure_token has been deprecated in favor of three_d_secure_authentication_id
186
198
  def self._create_signature # :nodoc:
187
199
  [
188
200
  :amount, :billing_address_id, :channel, :customer_id, :device_data, :discount_amount,
@@ -190,8 +202,8 @@ module Braintree
190
202
  :product_sku, :purchase_order_number, :service_fee_amount, :shared_billing_address_id,
191
203
  :shared_customer_id, :shared_payment_method_nonce, :shared_payment_method_token,
192
204
  :shared_shipping_address_id, :shipping_address_id, :shipping_amount,
193
- :ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,
194
- :three_d_secure_token, :transaction_source, :type, :venmo_sdk_payment_method_code,
205
+ :ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,:three_d_secure_token, #Deprecated
206
+ :transaction_source, :type, :venmo_sdk_payment_method_code, # Deprecated
195
207
  :sca_exemption, :currency_iso_code, :exchange_rate_quote_id,
196
208
  {:line_items => [:quantity, :name, :description, :kind, :unit_amount, :unit_tax_amount, :total_amount, :discount_amount, :tax_amount, :unit_of_measure, :product_code, :commodity_code, :url]},
197
209
  {:risk_data => [:customer_browser, :customer_device_id, :customer_ip, :customer_location_zip, :customer_tenure]},
@@ -222,7 +234,7 @@ module Braintree
222
234
  :submit_for_settlement,
223
235
  :add_billing_address_to_payment_method,
224
236
  :store_shipping_address_in_vault,
225
- :venmo_sdk_session,
237
+ :venmo_sdk_session, # Deprecated
226
238
  :payee_id,
227
239
  :payee_email,
228
240
  :skip_advanced_fraud_checking,
@@ -54,15 +54,16 @@ module Braintree
54
54
  CreditCard::CustomerLocation::International,
55
55
  CreditCard::CustomerLocation::US
56
56
  ]
57
+ multiple_value_field :debit_network, :allows => CreditCard::DebitNetwork::All
57
58
  multiple_value_field :ids
58
- multiple_value_field :payment_instrument_type
59
- multiple_value_field :user
60
59
  multiple_value_field :merchant_account_id
61
- multiple_value_field :status, :allows => Transaction::Status::All
60
+ multiple_value_field :payment_instrument_type
61
+ multiple_value_field :reason_code
62
62
  multiple_value_field :source
63
- multiple_value_field :type, :allows => Transaction::Type::All
63
+ multiple_value_field :status, :allows => Transaction::Status::All
64
64
  multiple_value_field :store_ids
65
- multiple_value_field :reason_code
65
+ multiple_value_field :type, :allows => Transaction::Type::All
66
+ multiple_value_field :user
66
67
 
67
68
  key_value_fields :refund
68
69
 
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 4
4
- Minor = 13
4
+ Minor = 15
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -45,6 +45,7 @@ module Braintree
45
45
 
46
46
  RecipientUpdatedGrantedPaymentMethod = "recipient_updated_granted_payment_method"
47
47
 
48
+ SubscriptionBillingSkipped = "subscription_billing_skipped"
48
49
  SubscriptionCanceled = "subscription_canceled"
49
50
  SubscriptionChargedSuccessfully = "subscription_charged_successfully"
50
51
  SubscriptionChargedUnsuccessfully = "subscription_charged_unsuccessfully"
@@ -72,6 +72,8 @@ module Braintree
72
72
  _disbursement_exception_sample_xml(id)
73
73
  when Braintree::WebhookNotification::Kind::Disbursement
74
74
  _disbursement_sample_xml(id)
75
+ when Braintree::WebhookNotification::Kind::SubscriptionBillingSkipped
76
+ _subscription_billing_skipped(id)
75
77
  when Braintree::WebhookNotification::Kind::SubscriptionChargedSuccessfully
76
78
  _subscription_charged_successfully(id)
77
79
  when Braintree::WebhookNotification::Kind::SubscriptionChargedUnsuccessfully
@@ -112,6 +114,21 @@ module Braintree
112
114
  XML
113
115
  end
114
116
 
117
+ def _subscription_billing_skipped(id)
118
+
119
+ <<-XML
120
+ <subscription>
121
+ <id>#{id}</id>
122
+ <transactions type="array">
123
+ </transactions>
124
+ <add_ons type="array">
125
+ </add_ons>
126
+ <discounts type="array">
127
+ </discounts>
128
+ </subscription>
129
+ XML
130
+ end
131
+
115
132
  def _subscription_charged_successfully(id)
116
133
 
117
134
  <<-XML
data/lib/braintree.rb CHANGED
@@ -150,6 +150,9 @@ require "braintree/transaction/disbursement_details"
150
150
  require "braintree/transaction/google_pay_details"
151
151
  require "braintree/transaction/installment"
152
152
  require "braintree/transaction/installment/adjustment"
153
+ require "braintree/transaction/payment_receipt"
154
+ require "braintree/transaction/payment_receipt/card_present_data.rb"
155
+ require "braintree/transaction/payment_receipt/merchant_address.rb"
153
156
  require "braintree/transaction/paypal_details"
154
157
  require "braintree/transaction/paypal_here_details"
155
158
  require "braintree/transaction/samsung_pay_card_details"
@@ -20,15 +20,15 @@ describe Braintree::AddOn do
20
20
  add_ons = Braintree::AddOn.all
21
21
  add_on = add_ons.select { |add_on| add_on.id == id }.first
22
22
 
23
- add_on.should_not be_nil
24
- add_on.amount.should == BigDecimal(expected[:amount])
25
- add_on.created_at.should_not be_nil
26
- add_on.description.should == expected[:description]
27
- add_on.kind.should == expected[:kind]
28
- add_on.name.should == expected[:name]
29
- add_on.never_expires.should == expected[:never_expires]
30
- add_on.number_of_billing_cycles.should == expected[:number_of_billing_cycles]
31
- add_on.updated_at.should_not be_nil
23
+ expect(add_on).not_to be_nil
24
+ expect(add_on.amount).to eq(BigDecimal(expected[:amount]))
25
+ expect(add_on.created_at).not_to be_nil
26
+ expect(add_on.description).to eq(expected[:description])
27
+ expect(add_on.kind).to eq(expected[:kind])
28
+ expect(add_on.name).to eq(expected[:name])
29
+ expect(add_on.never_expires).to eq(expected[:never_expires])
30
+ expect(add_on.number_of_billing_cycles).to eq(expected[:number_of_billing_cycles])
31
+ expect(add_on.updated_at).not_to be_nil
32
32
  end
33
33
 
34
34
  it "raises with a helpful error if public_key and private_key are not set" do