braintree 4.21.0 → 4.23.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/client_token_gateway.rb +2 -2
  3. data/lib/braintree/configuration.rb +1 -1
  4. data/lib/braintree/credit_card_gateway.rb +1 -0
  5. data/lib/braintree/credit_card_verification.rb +16 -12
  6. data/lib/braintree/customer.rb +2 -1
  7. data/lib/braintree/customer_gateway.rb +2 -0
  8. data/lib/braintree/error_codes.rb +3 -0
  9. data/lib/braintree/local_payment_completed/blik_alias.rb +23 -0
  10. data/lib/braintree/local_payment_completed.rb +6 -1
  11. data/lib/braintree/payment_instrument_type.rb +1 -0
  12. data/lib/braintree/payment_method_gateway.rb +3 -0
  13. data/lib/braintree/payment_method_parser.rb +1 -0
  14. data/lib/braintree/paypal_account.rb +1 -0
  15. data/lib/braintree/samsung_pay_card.rb +2 -0
  16. data/lib/braintree/test/nonce.rb +1 -0
  17. data/lib/braintree/transaction/local_payment_details.rb +1 -0
  18. data/lib/braintree/transaction/samsung_pay_card_details.rb +2 -0
  19. data/lib/braintree/transaction.rb +3 -1
  20. data/lib/braintree/transaction_gateway.rb +48 -46
  21. data/lib/braintree/version.rb +1 -1
  22. data/lib/braintree/webhook_testing_gateway.rb +36 -0
  23. data/lib/braintree.rb +1 -0
  24. data/lib/ssl/api_braintreegateway_com.ca.crt +401 -168
  25. data/spec/integration/braintree/apple_pay_spec.rb +1 -1
  26. data/spec/integration/braintree/client_api/client_token_spec.rb +229 -38
  27. data/spec/integration/braintree/credit_card_spec.rb +2 -2
  28. data/spec/integration/braintree/credit_card_verification_spec.rb +20 -1
  29. data/spec/integration/braintree/customer_spec.rb +23 -2
  30. data/spec/integration/braintree/merchant_account_spec.rb +2 -2
  31. data/spec/integration/braintree/merchant_spec.rb +17 -138
  32. data/spec/integration/braintree/payment_method_spec.rb +29 -2
  33. data/spec/integration/braintree/paypal_account_spec.rb +1 -0
  34. data/spec/integration/braintree/samsung_pay_card_spec.rb +3 -1
  35. data/spec/integration/braintree/transaction_spec.rb +56 -22
  36. data/spec/unit/braintree/client_token_spec.rb +1 -1
  37. data/spec/unit/braintree/configuration_spec.rb +1 -1
  38. data/spec/unit/braintree/credit_card_spec.rb +2 -2
  39. data/spec/unit/braintree/credit_card_verification_spec.rb +13 -2
  40. data/spec/unit/braintree/customer_spec.rb +1 -0
  41. data/spec/unit/braintree/error_result_spec.rb +1 -1
  42. data/spec/unit/braintree/local_payment_completed_spec.rb +44 -4
  43. data/spec/unit/braintree/paypal_account_spec.rb +9 -0
  44. data/spec/unit/braintree/transaction/local_payment_details_spec.rb +6 -0
  45. data/spec/unit/braintree/transaction_gateway_spec.rb +50 -48
  46. data/spec/unit/braintree/webhook_notification_spec.rb +22 -1
  47. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abb377057ff689e5a04a7a2dbfa201a3243b5008898ab343ec76d02200d4ffba
4
- data.tar.gz: 128bed5617e3793b7353fd10e76dd06afce28143f4ac5def37bc28c4efb07ce4
3
+ metadata.gz: 80f9d00b4dec8e85066f61cecaf04c5863399c8c6552d5158d0fe69f8b81a64f
4
+ data.tar.gz: 4664e8431f59bf1293d6cafbaf3623b6fe2069aa81af17520384b5e85c34a0a5
5
5
  SHA512:
6
- metadata.gz: 1034c8cb638f8ecd4df2533fb4e22bc21710df5ce5b8c56da4801028b91322dbd0e690108081e7745e1c74c06be7290484872eb5a55f128c23cd3e5fc480bf3c
7
- data.tar.gz: 36f48a290b8ffcfab8467d8b5b582b96d40320cf9929d996d5d703bab0cedaa0d033865c81e9b6434669fb5ca82bee911c591de5c4a9bfe0ced6c0c46fe761cd
6
+ metadata.gz: 73131e462a1c99744d967f82cecdda88dc2780e04c3bb69f51cd7149fc8e747d7e487e31cc5e5e3fe7f4440d6da3ef42a90ee7e027c7fa0f567ad2b84a6119dd
7
+ data.tar.gz: a17216eb8f219f33af17d79accae60eccc23e059753ac159aed34063ec7f8abb0566c6268097647bb1a657fabf507d4f9d1d90c39e3c73b0e66f9d4c1a29c8bc
@@ -30,12 +30,12 @@ module Braintree
30
30
  :address_id, :customer_id, :proxy_merchant_id, :merchant_account_id,
31
31
  :version,
32
32
  {:domains => [:_any_key_]},
33
- {:options => [:make_default, :verify_card, :fail_on_duplicate_payment_method]}
33
+ {:options => [:fail_on_duplicate_payment_method, :fail_on_duplicate_payment_method_for_customer, :make_default, :verify_card]}
34
34
  ]
35
35
  end
36
36
 
37
37
  def _validate_options(options)
38
- [:make_default, :fail_on_duplicate_payment_method, :verify_card].each do |credit_card_option|
38
+ [:fail_on_duplicate_payment_method, :fail_on_duplicate_payment_method_for_customer, :make_default, :verify_card].each do |credit_card_option|
39
39
  if options[credit_card_option]
40
40
  raise ArgumentError.new("cannot specify #{credit_card_option} without a customer_id") unless options[:customer_id]
41
41
  end
@@ -239,7 +239,7 @@ module Braintree
239
239
  when :production
240
240
  "#{endpoint}.braintreegateway.com"
241
241
  when :qa
242
- "gateway.qa.braintreepayments.com"
242
+ "gateway.qa2.braintreepayments.com"
243
243
  when :sandbox
244
244
  "api.sandbox.braintreegateway.com"
245
245
  end
@@ -97,6 +97,7 @@ module Braintree
97
97
  # The old venmo SDK class has been deprecated
98
98
  options = [
99
99
  :fail_on_duplicate_payment_method,
100
+ :fail_on_duplicate_payment_method_for_customer,
100
101
  :make_default,
101
102
  :skip_advanced_fraud_checking,
102
103
  :venmo_sdk_session, # Deprecated
@@ -26,6 +26,8 @@ module Braintree
26
26
  end
27
27
 
28
28
  attr_reader :amount
29
+ attr_reader :ani_first_name_response_code
30
+ attr_reader :ani_last_name_response_code
29
31
  attr_reader :avs_error_response_code
30
32
  attr_reader :avs_postal_code_response_code
31
33
  attr_reader :avs_street_address_response_code
@@ -45,8 +47,8 @@ module Braintree
45
47
  attr_reader :processor_response_text
46
48
  attr_reader :processor_response_type
47
49
  attr_reader :risk_data
48
- attr_reader :three_d_secure_info
49
50
  attr_reader :status
51
+ attr_reader :three_d_secure_info
50
52
 
51
53
  def initialize(attributes)
52
54
  set_instance_variables_from_hash(attributes)
@@ -59,23 +61,25 @@ module Braintree
59
61
 
60
62
  def inspect
61
63
  attr_order = [
62
- :status,
63
- :processor_response_code,
64
- :processor_response_text,
65
64
  :amount,
66
- :currency_iso_code,
67
- :cvv_response_code,
65
+ :ani_first_name_response_code,
66
+ :ani_last_name_response_code,
68
67
  :avs_error_response_code,
69
68
  :avs_postal_code_response_code,
70
69
  :avs_street_address_response_code,
71
- :network_response_code,
72
- :network_response_text,
73
- :merchant_account_id,
70
+ :billing,
71
+ :created_at,
72
+ :credit_card,
73
+ :currency_iso_code,
74
+ :cvv_response_code,
74
75
  :gateway_rejection_reason,
75
76
  :id,
76
- :credit_card,
77
- :billing,
78
- :created_at
77
+ :merchant_account_id,
78
+ :network_response_code,
79
+ :network_response_text,
80
+ :processor_response_code,
81
+ :processor_response_text,
82
+ :status
79
83
  ]
80
84
  formatted_attrs = attr_order.map do |attr|
81
85
  if attr == :amount
@@ -80,6 +80,7 @@ module Braintree
80
80
  Configuration.gateway.customer.update!(*args)
81
81
  end
82
82
 
83
+ # NEXT_MAJOR_VERSION remove samsung_pay_cards
83
84
  def initialize(gateway, attributes)
84
85
  @gateway = gateway
85
86
  set_instance_variables_from_hash(attributes)
@@ -91,7 +92,7 @@ module Braintree
91
92
  @us_bank_accounts = (@us_bank_accounts || []).map { |pm| UsBankAccount._new gateway, pm }
92
93
  @visa_checkout_cards = (@visa_checkout_cards|| []).map { |pm| VisaCheckoutCard._new gateway, pm }
93
94
  @sepa_direct_debit_accounts = (@sepa_debit_accounts || []).map { |pm| SepaDirectDebitAccount._new gateway, pm }
94
- @samsung_pay_cards = (@samsung_pay_cards|| []).map { |pm| SamsungPayCard._new gateway, pm }
95
+ @samsung_pay_cards = (@samsung_pay_cards|| []).map { |pm| SamsungPayCard._new gateway, pm } # Deprecated
95
96
  @addresses = (@addresses || []).map { |addr| Address._new gateway, addr }
96
97
  @tax_identifiers = (@tax_identifiers || []).map { |addr| TaxIdentifier._new gateway, addr }
97
98
  @custom_fields = attributes[:custom_fields].is_a?(Hash) ? attributes[:custom_fields] : {}
@@ -62,6 +62,8 @@ module Braintree
62
62
 
63
63
  def self._create_signature
64
64
  credit_card_signature = CreditCardGateway._create_signature - [:customer_id]
65
+ credit_card_options = credit_card_signature.find { |item| item.respond_to?(:keys) && item.keys == [:options] }
66
+ credit_card_options[:options].delete_if { |option| option == :fail_on_duplicate_payment_method_for_customer }
65
67
  paypal_account_signature = PayPalAccountGateway._create_nested_signature
66
68
  paypal_options_shipping_signature = AddressGateway._shared_signature
67
69
  options = [
@@ -75,6 +75,7 @@ module Braintree
75
75
  CvvIsRequired = "81706"
76
76
  CvvVerificationFailed = "81736"
77
77
  DuplicateCardExists = "81724"
78
+ DuplicateCardExistsForCustomer = "81763"
78
79
  ExpirationDateConflict = "91708"
79
80
  ExpirationDateIsInvalid = "81710"
80
81
  ExpirationDateIsRequired = "81709"
@@ -83,6 +84,7 @@ module Braintree
83
84
  ExpirationYearIsInvalid = "81713"
84
85
  InvalidParamsForCreditCardUpdate = "91745"
85
86
  InvalidVenmoSDKPaymentMethodCode = "91727"
87
+ LimitExceededforDuplicatePaymentMethodCheckForCustomer = "81764"
86
88
  NetworkTokenizationAttributeCryptogramIsRequired = "81762"
87
89
  NumberIsInvalid = "81715"
88
90
  NumberIsProhibited = "81750"
@@ -712,6 +714,7 @@ module Braintree
712
714
  module ClientToken
713
715
  CustomerDoesNotExist = "92804"
714
716
  FailOnDuplicatePaymentMethodRequiresCustomerId = "92803"
717
+ FailOnDuplicatePaymentMethodForCustomerRequiresCustomerId = "92805"
715
718
  InvalidDomainFormat = "92011"
716
719
  MakeDefaultRequiresCustomerId = "92801"
717
720
  MerchantAccountDoesNotExist = "92807"
@@ -0,0 +1,23 @@
1
+ module Braintree
2
+ class LocalPaymentCompleted
3
+ class BlikAlias
4
+ include BaseModule
5
+
6
+ attr_reader :key
7
+ attr_reader :label
8
+
9
+ def initialize(attributes)
10
+ set_instance_variables_from_hash attributes unless attributes.nil?
11
+ end
12
+
13
+ def inspect
14
+ attrs = [:key, :label]
15
+ formatted_attrs = attrs.map do |attr|
16
+ "#{attr}: #{send(attr).inspect}"
17
+ end
18
+
19
+ "#<#{formatted_attrs.join(", ")}>"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -2,14 +2,19 @@ module Braintree
2
2
  class LocalPaymentCompleted
3
3
  include BaseModule
4
4
 
5
- attr_reader :payment_id
5
+ attr_reader :bic
6
+ attr_reader :blik_aliases
7
+ attr_reader :iban_last_chars
6
8
  attr_reader :payer_id
9
+ attr_reader :payer_name
10
+ attr_reader :payment_id
7
11
  attr_reader :payment_method_nonce
8
12
  attr_reader :transaction
9
13
 
10
14
  def initialize(attributes)
11
15
  set_instance_variables_from_hash(attributes)
12
16
  @transaction = Transaction._new(Configuration.gateway, transaction) unless transaction.nil?
17
+ blik_aliases.map { |attrs| BlikAlias.new(attrs) } if blik_aliases
13
18
  end
14
19
 
15
20
  class << self
@@ -8,6 +8,7 @@ module Braintree
8
8
  MetaCheckoutToken = "meta_checkout_token"
9
9
  PayPalAccount = "paypal_account"
10
10
  PayPalHere = "paypal_here"
11
+ # NEXT_MAJOR_VERSION remove SamsungPayCard
11
12
  SamsungPayCard = "samsung_pay_card"
12
13
  SepaDirectDebitAccount = "sepa_debit_account"
13
14
  UsBankAccount = "us_bank_account"
@@ -204,9 +204,12 @@ module Braintree
204
204
  case type
205
205
  when :create
206
206
  options << :fail_on_duplicate_payment_method
207
+ options << :fail_on_duplicate_payment_method_for_customer
207
208
  signature << :customer_id
208
209
  signature << :paypal_refresh_token
209
210
  when :update
211
+ options << :fail_on_duplicate_payment_method
212
+ options << :fail_on_duplicate_payment_method_for_customer
210
213
  billing_address_params << {:options => [:update_existing]}
211
214
  else
212
215
  raise ArgumentError
@@ -17,6 +17,7 @@ module Braintree
17
17
  elsif attributes[:visa_checkout_card]
18
18
  VisaCheckoutCard._new(gateway, attributes[:visa_checkout_card])
19
19
  elsif attributes[:samsung_pay_card]
20
+ warn "[DEPRECATED] SamsungPayCard is no longer a supported payment method type"
20
21
  SamsungPayCard._new(gateway, attributes[:samsung_pay_card])
21
22
  elsif attributes[:sepa_debit_account]
22
23
  SepaDirectDebitAccount._new(gateway, attributes[:sepa_debit_account])
@@ -5,6 +5,7 @@ module Braintree
5
5
  attr_reader :billing_agreement_id
6
6
  attr_reader :created_at
7
7
  attr_reader :customer_id
8
+ attr_reader :edit_paypal_vault_id
8
9
  attr_reader :email
9
10
  attr_reader :funding_source_description
10
11
  attr_reader :image_url
@@ -1,4 +1,6 @@
1
1
  module Braintree
2
+ # NEXT_MAJOR_VERSION remove this class
3
+ # SamsungPayCard has been deprecated
2
4
  class SamsungPayCard
3
5
  include BaseModule
4
6
  include Braintree::Util::TokenEquality
@@ -69,6 +69,7 @@ module Braintree
69
69
  VisaCheckoutDiscover = "fake-visa-checkout-discover-nonce"
70
70
  VisaCheckoutMasterCard = "fake-visa-checkout-mastercard-nonce"
71
71
  VisaCheckoutVisa = "fake-visa-checkout-visa-nonce"
72
+ # NEXT_MAJOR_VERSION SamsungPay is deprecated, remove all associated nonces
72
73
  SamsungPayAmEx = "tokensam_fake_american_express"
73
74
  SamsungPayDiscover = "tokensam_fake_discover"
74
75
  SamsungPayMasterCard = "tokensam_fake_mastercard"
@@ -3,6 +3,7 @@ module Braintree
3
3
  class LocalPaymentDetails
4
4
  include BaseModule
5
5
 
6
+ attr_reader :blik_aliases
6
7
  attr_reader :capture_id
7
8
  attr_reader :custom_field
8
9
  attr_reader :debug_id
@@ -1,5 +1,7 @@
1
1
  module Braintree
2
2
  class Transaction
3
+ # NEXT_MAJOR_VERSION remove this class
4
+ # SamsungPayCard has been deprecated
3
5
  class SamsungPayCardDetails
4
6
  include BaseModule
5
7
 
@@ -171,6 +171,7 @@ module Braintree
171
171
  attr_reader :settlement_batch_id
172
172
  attr_reader :shipping_amount
173
173
  attr_reader :shipping_details
174
+ attr_reader :shipping_tax_amount
174
175
  attr_reader :ships_from_postal_code
175
176
  attr_reader :status # See Transaction::Status
176
177
  attr_reader :status_history
@@ -310,6 +311,7 @@ module Braintree
310
311
  Configuration.gateway.transaction.void!(*args)
311
312
  end
312
313
 
314
+ # NEXT_MAJOR_VERSION remove SamsungPayCardDetails
313
315
  def initialize(gateway, attributes)
314
316
  @gateway = gateway
315
317
  set_instance_variables_from_hash(attributes)
@@ -331,7 +333,7 @@ module Braintree
331
333
  @payment_receipt = PaymentReceipt.new(attributes[:payment_receipt]) if attributes[:payment_receipt]
332
334
  @paypal_details = PayPalDetails.new(@paypal)
333
335
  @paypal_here_details = PayPalHereDetails.new(@paypal_here)
334
- @samsung_pay_card_details = SamsungPayCardDetails.new(attributes[:samsung_pay_card])
336
+ @samsung_pay_card_details = SamsungPayCardDetails.new(attributes[:samsung_pay_card]) #Deprecated
335
337
  @sca_exemption_requested = attributes[:sca_exemption_requested]
336
338
  @sepa_direct_debit_account_details = SepaDirectDebitAccountDetails.new(@sepa_debit_account_detail)
337
339
  @service_fee_amount = Util.to_big_decimal(service_fee_amount)
@@ -214,36 +214,45 @@ module Braintree
214
214
  # three_d_secure_token has been deprecated in favor of three_d_secure_authentication_id
215
215
  def self._create_signature
216
216
  [
217
- :amount, :billing_address_id, :channel, :customer_id, :device_data, :discount_amount,
217
+ :amount, :billing_address_id, :channel, :currency_iso_code, :customer_id, :device_data,
218
+ :discount_amount, :exchange_rate_quote_id, :foreign_retailer,
218
219
  :merchant_account_id, :order_id, :payment_method_nonce, :payment_method_token,
219
220
  :product_sku, :purchase_order_number, :service_fee_amount, :shared_billing_address_id,
220
221
  :shared_customer_id, :shared_payment_method_nonce, :shared_payment_method_token,
221
- :shared_shipping_address_id, :shipping_address_id, :shipping_amount,
222
+ :shared_shipping_address_id, :shipping_address_id, :shipping_amount, :shipping_tax_amount,
222
223
  :ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,:three_d_secure_token, #Deprecated
223
224
  :transaction_source, :type, :venmo_sdk_payment_method_code, # Deprecated
224
- :sca_exemption, :currency_iso_code, :exchange_rate_quote_id, :foreign_retailer,
225
- {:line_items => [:commodity_code, :description, :discount_amount, :image_url, :kind, :name, :product_code, :quantity, :tax_amount, :total_amount, :unit_amount, :unit_of_measure, :unit_tax_amount, :upc_code, :upc_type, :url]},
226
- {:risk_data => [:customer_browser, :customer_device_id, :customer_ip, :customer_location_zip, :customer_tenure]},
227
- {:credit_card => [:token, :cardholder_name, :cvv, :expiration_date, :expiration_month, :expiration_year, :number, {:payment_reader_card_details => [:encrypted_card_data, :key_serial_number]}, {:network_tokenization_attributes => [:cryptogram, :ecommerce_indicator, :token_requestor_id]}]},
228
- {:customer => [:id, :company, :email, :fax, :first_name, :last_name, :phone, :website]},
225
+ :sca_exemption,
226
+ {:apple_pay_card => [:number, :cardholder_name, :cryptogram, :expiration_month, :expiration_year, :eci_indicator]},
229
227
  {
230
228
  :billing => AddressGateway._shared_signature
231
229
  },
232
- {
233
- :shipping => AddressGateway._shared_signature + [:shipping_method],
234
- },
235
- {
236
- :three_d_secure_pass_thru => [
237
- :eci_flag,
238
- :cavv,
239
- :xid,
240
- :three_d_secure_version,
241
- :authentication_response,
242
- :directory_response,
243
- :cavv_algorithm,
244
- :ds_transaction_id,
245
- ]
246
- },
230
+ {:credit_card => [:token, :cardholder_name, :cvv, :expiration_date, :expiration_month, :expiration_year, :number, {:payment_reader_card_details => [:encrypted_card_data, :key_serial_number]}, {:network_tokenization_attributes => [:cryptogram, :ecommerce_indicator, :token_requestor_id]}]},
231
+ {:customer => [:id, :company, :email, :fax, :first_name, :last_name, :phone, :website]},
232
+ {:custom_fields => :_any_key_},
233
+ {:descriptor => [:name, :phone, :url]},
234
+ {:external_vault => [
235
+ :status,
236
+ :previous_network_transaction_id,
237
+ ]},
238
+ {:google_pay_card => [:number, :cryptogram, :google_transaction_id, :expiration_month, :expiration_year, :source_card_type, :source_card_last_four, :eci_indicator]},
239
+ {:industry => [
240
+ :industry_type,
241
+ {:data => [
242
+ :country_code, :date_of_birth, :folio_number, :check_in_date, :check_out_date, :travel_package, :lodging_check_in_date, :lodging_check_out_date, :departure_date, :lodging_name, :room_rate, :room_tax,
243
+ :passenger_first_name, :passenger_last_name, :passenger_middle_initial, :passenger_title, :issued_date, :travel_agency_name, :travel_agency_code, :ticket_number,
244
+ :issuing_carrier_code, :customer_code, :fare_amount, :fee_amount, :tax_amount, :restricted_ticket, :no_show, :advanced_deposit, :fire_safe, :property_phone, :ticket_issuer_address, :arrival_date,
245
+ {:legs => [
246
+ :conjunction_ticket, :exchange_ticket, :coupon_number, :service_class, :carrier_code, :fare_basis_code, :flight_number, :departure_date, :departure_airport_code, :departure_time,
247
+ :arrival_airport_code, :arrival_time, :stopover_permitted, :fare_amount, :fee_amount, :tax_amount, :endorsement_or_restrictions,
248
+ ]},
249
+ {:additional_charges => [
250
+ :kind, :amount,
251
+ ]},
252
+ ]},
253
+ ]},
254
+ {:installments => [:count]},
255
+ {:line_items => [:commodity_code, :description, :discount_amount, :image_url, :kind, :name, :product_code, :quantity, :tax_amount, :total_amount, :unit_amount, :unit_of_measure, :unit_tax_amount, :upc_code, :upc_type, :url]},
247
256
  {:options => [
248
257
  :hold_in_escrow,
249
258
  :store_in_vault,
@@ -265,31 +274,23 @@ module Braintree
265
274
  {:credit_card => [:account_type, :process_debit_as_credit]},
266
275
  ]
267
276
  },
268
- {:external_vault => [
269
- :status,
270
- :previous_network_transaction_id,
271
- ]},
272
- {:custom_fields => :_any_key_},
273
- {:descriptor => [:name, :phone, :url]},
274
277
  {:paypal_account => [:email, :token, :paypal_data, :payee_id, :payee_email, :payer_id, :payment_id]},
275
- {:industry => [
276
- :industry_type,
277
- {:data => [
278
- :country_code, :date_of_birth, :folio_number, :check_in_date, :check_out_date, :travel_package, :lodging_check_in_date, :lodging_check_out_date, :departure_date, :lodging_name, :room_rate, :room_tax,
279
- :passenger_first_name, :passenger_last_name, :passenger_middle_initial, :passenger_title, :issued_date, :travel_agency_name, :travel_agency_code, :ticket_number,
280
- :issuing_carrier_code, :customer_code, :fare_amount, :fee_amount, :tax_amount, :restricted_ticket, :no_show, :advanced_deposit, :fire_safe, :property_phone, :ticket_issuer_address, :arrival_date,
281
- {:legs => [
282
- :conjunction_ticket, :exchange_ticket, :coupon_number, :service_class, :carrier_code, :fare_basis_code, :flight_number, :departure_date, :departure_airport_code, :departure_time,
283
- :arrival_airport_code, :arrival_time, :stopover_permitted, :fare_amount, :fee_amount, :tax_amount, :endorsement_or_restrictions,
284
- ]},
285
- {:additional_charges => [
286
- :kind, :amount,
287
- ]},
288
- ]},
289
- ]},
290
- {:apple_pay_card => [:number, :cardholder_name, :cryptogram, :expiration_month, :expiration_year, :eci_indicator]},
291
- {:google_pay_card => [:number, :cryptogram, :google_transaction_id, :expiration_month, :expiration_year, :source_card_type, :source_card_last_four, :eci_indicator]},
292
- {:installments => [:count]},
278
+ {:risk_data => [:customer_browser, :customer_device_id, :customer_ip, :customer_location_zip, :customer_tenure]},
279
+ {
280
+ :shipping => AddressGateway._shared_signature + [:shipping_method],
281
+ },
282
+ {
283
+ :three_d_secure_pass_thru => [
284
+ :eci_flag,
285
+ :cavv,
286
+ :xid,
287
+ :three_d_secure_version,
288
+ :authentication_response,
289
+ :directory_response,
290
+ :cavv_algorithm,
291
+ :ds_transaction_id,
292
+ ]
293
+ },
293
294
  ]
294
295
  end
295
296
 
@@ -317,6 +318,7 @@ module Braintree
317
318
  :tax_exempt,
318
319
  :discount_amount,
319
320
  :shipping_amount,
321
+ :shipping_tax_amount,
320
322
  :ships_from_postal_code,
321
323
  :line_items => [:commodity_code, :description, :discount_amount, :image_url, :kind, :name, :product_code, :quantity, :tax_amount, :total_amount, :unit_amount, :unit_of_measure, :unit_tax_amount, :upc_code, :upc_type, :url],
322
324
  ]
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 4
4
- Minor = 21
4
+ Minor = 23
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -1094,10 +1094,46 @@ module Braintree
1094
1094
  end
1095
1095
 
1096
1096
  def _local_payment_completed_sample_xml(id)
1097
+ if id == "blik_one_click_id"
1098
+ _blik_one_click_local_payment_completed_sample_xml(id)
1099
+ else
1100
+ _default_local_payment_completed_sample_xml(id)
1101
+ end
1102
+ end
1103
+
1104
+ def _default_local_payment_completed_sample_xml(id)
1097
1105
  <<-XML
1098
1106
  <local-payment>
1107
+ <bic>BIC</bic>
1108
+ <iban_last_chars>1234</iban_last_chars>
1109
+ <payer-id>ABCPAYER</payer-id>
1110
+ <payer-name>PAYERNAME</payer-name>
1099
1111
  <payment-id>PAY-XYZ123</payment-id>
1112
+ <payment-method-nonce>ee257d98-de40-47e8-96b3-a6954ea7a9a4</payment-method-nonce>
1113
+ <transaction>
1114
+ <id>#{id}</id>
1115
+ <status>authorized</status>
1116
+ <amount>49.99</amount>
1117
+ <order-id>order4567</order-id>
1118
+ </transaction>
1119
+ </local-payment>
1120
+ XML
1121
+ end
1122
+
1123
+ def _blik_one_click_local_payment_completed_sample_xml(id)
1124
+ <<-XML
1125
+ <local-payment>
1126
+ <bic>BIC</bic>
1127
+ <blik-aliases type='array'>
1128
+ <blik-alias>
1129
+ <key>alias-key-1</key>
1130
+ <label>alias-label-1</label>
1131
+ </blik-alias>
1132
+ </blik-aliases>
1133
+ <iban_last_chars>1234</iban_last_chars>
1100
1134
  <payer-id>ABCPAYER</payer-id>
1135
+ <payer-name>PAYERNAME</payer-name>
1136
+ <payment-id>PAY-XYZ123</payment-id>
1101
1137
  <payment-method-nonce>ee257d98-de40-47e8-96b3-a6954ea7a9a4</payment-method-nonce>
1102
1138
  <transaction>
1103
1139
  <id>#{id}</id>
data/lib/braintree.rb CHANGED
@@ -78,6 +78,7 @@ require "braintree/gateway"
78
78
  require "braintree/graphql_client"
79
79
  require "braintree/google_pay_card"
80
80
  require "braintree/local_payment_completed"
81
+ require "braintree/local_payment_completed/blik_alias"
81
82
  require "braintree/local_payment_reversed"
82
83
  require "braintree/local_payment_expired"
83
84
  require "braintree/local_payment_funded"