braintree 2.99.0 → 2.104.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/address_gateway.rb +2 -2
  3. data/lib/braintree/amex_express_checkout_card.rb +2 -0
  4. data/lib/braintree/android_pay_card.rb +5 -0
  5. data/lib/braintree/base_module.rb +4 -0
  6. data/lib/braintree/credit_card.rb +5 -1
  7. data/lib/braintree/credit_card_gateway.rb +14 -0
  8. data/lib/braintree/credit_card_verification.rb +2 -0
  9. data/lib/braintree/customer.rb +5 -2
  10. data/lib/braintree/dispute.rb +1 -0
  11. data/lib/braintree/dispute/transaction.rb +2 -0
  12. data/lib/braintree/error_codes.rb +76 -33
  13. data/lib/braintree/graphql_client.rb +7 -1
  14. data/lib/braintree/masterpass_card.rb +2 -0
  15. data/lib/braintree/payment_instrument_type.rb +2 -1
  16. data/lib/braintree/payment_method_gateway.rb +14 -0
  17. data/lib/braintree/payment_method_nonce.rb +2 -0
  18. data/lib/braintree/payment_method_nonce_gateway.rb +13 -2
  19. data/lib/braintree/payment_method_parser.rb +1 -0
  20. data/lib/braintree/risk_data.rb +4 -1
  21. data/lib/braintree/test/authentication_id.rb +21 -0
  22. data/lib/braintree/test/credit_card.rb +1 -0
  23. data/lib/braintree/test/nonce.rb +18 -0
  24. data/lib/braintree/three_d_secure_info.rb +2 -0
  25. data/lib/braintree/transaction.rb +15 -1
  26. data/lib/braintree/transaction/address_details.rb +11 -0
  27. data/lib/braintree/transaction/android_pay_details.rb +5 -0
  28. data/lib/braintree/transaction/apple_pay_details.rb +1 -0
  29. data/lib/braintree/transaction/masterpass_card_details.rb +2 -0
  30. data/lib/braintree/transaction/paypal_details.rb +2 -0
  31. data/lib/braintree/transaction_gateway.rb +12 -3
  32. data/lib/braintree/version.rb +1 -1
  33. data/lib/braintree/webhook_notification.rb +3 -0
  34. data/lib/braintree/webhook_testing_gateway.rb +243 -0
  35. data/spec/integration/braintree/client_api/spec_helper.rb +98 -46
  36. data/spec/integration/braintree/credit_card_spec.rb +135 -2
  37. data/spec/integration/braintree/credit_card_verification_spec.rb +2 -0
  38. data/spec/integration/braintree/customer_spec.rb +116 -0
  39. data/spec/integration/braintree/dispute_search_spec.rb +1 -1
  40. data/spec/integration/braintree/dispute_spec.rb +1 -0
  41. data/spec/integration/braintree/document_upload_spec.rb +12 -0
  42. data/spec/integration/braintree/merchant_spec.rb +2 -2
  43. data/spec/integration/braintree/payment_method_nonce_spec.rb +83 -2
  44. data/spec/integration/braintree/payment_method_spec.rb +113 -18
  45. data/spec/integration/braintree/paypal_account_spec.rb +1 -1
  46. data/spec/integration/braintree/transaction_spec.rb +437 -45
  47. data/spec/spec_helper.rb +1 -1
  48. data/spec/unit/braintree/credit_card_spec.rb +51 -3
  49. data/spec/unit/braintree/credit_card_verification_spec.rb +7 -0
  50. data/spec/unit/braintree/customer_spec.rb +28 -2
  51. data/spec/unit/braintree/dispute_spec.rb +3 -0
  52. data/spec/unit/braintree/three_d_secure_info_spec.rb +3 -1
  53. data/spec/unit/braintree/transaction/paypal_details_spec.rb +57 -0
  54. data/spec/unit/braintree/transaction_spec.rb +16 -2
  55. data/spec/unit/braintree/webhook_notification_spec.rb +48 -0
  56. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35130c66d5071330674c5341da2e1586416f802a696845c1d81c8076fde0899c
4
- data.tar.gz: 7d5f478974b02500f9866f650d6d5f3fdcc700d979aacf64dc7806bf331e6c34
3
+ metadata.gz: d5e73505966566953ef5df2f2e366b104d0ba4bae9fe485759a4cd2048100d75
4
+ data.tar.gz: 5909d63f9c589f1c0ac70bd55c8b4eda61cd52fcaf53d46c1030ef7b18ffe1ec
5
5
  SHA512:
6
- metadata.gz: 4a58351bfeed6f12c5988bae9af906a5aa73ff287494e6df8bd01f990140adde54dbe9c1ac9c0afd97a44b4f9dca9d5ffff115be76a7278242d6ff17c3cc397a
7
- data.tar.gz: e6b523d6609ed0ae3784b9ddaa43e1fb3e65c5dc05df67e65b752e0b01d104331aedfce100e6244da10099ef1fa80252959d0c3b3473a7488c0fe3ddd8878c3d
6
+ metadata.gz: e2012367a1bc709459b1a65828ea01aa851d0e491e9071dee4ce8797603b75cf3f412f6ededf628e713d55bdc095762f50fc500e77519d8ec485679aa0033a92
7
+ data.tar.gz: f7724b06f9b4447fe2051f50fa0c0f62e96d43342cf09e048fc8522ee0bb29e38d0fe35ab938fe1b16202e3a77be67d20b038d920eb4acc4e82db2416d555537
@@ -76,8 +76,8 @@ module Braintree
76
76
 
77
77
  def self._shared_signature # :nodoc:
78
78
  [:company, :country_code_alpha2, :country_code_alpha3, :country_code_numeric,
79
- :country_name, :extended_address, :first_name,
80
- :last_name, :locality, :postal_code, :region, :street_address]
79
+ :country_name, :extended_address, :first_name, :last_name, :locality, :phone_number,
80
+ :postal_code, :region, :street_address]
81
81
  end
82
82
 
83
83
  def self._update_signature # :nodoc:
@@ -1,4 +1,6 @@
1
1
  module Braintree
2
+ # NEXT_MAJOR_VERSION Remove this class.
3
+ # DEPRECATED The American Express Checkout payment method is deprecated.
2
4
  class AmexExpressCheckoutCard
3
5
  include BaseModule # :nodoc:
4
6
 
@@ -1,4 +1,5 @@
1
1
  module Braintree
2
+ # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
2
3
  class AndroidPayCard
3
4
  include BaseModule # :nodoc:
4
5
 
@@ -29,6 +30,10 @@ module Braintree
29
30
  @default
30
31
  end
31
32
 
33
+ def is_network_tokenized?
34
+ @is_network_tokenized
35
+ end
36
+
32
37
  def card_type
33
38
  virtual_card_type
34
39
  end
@@ -18,6 +18,10 @@ module Braintree
18
18
 
19
19
  def set_instance_variables_from_hash(hash)
20
20
  hash.each do |key, value|
21
+ if key == :global_id
22
+ instance_variable_set "@graphql_id", value
23
+ end
24
+
21
25
  instance_variable_set "@#{key}", value
22
26
  end
23
27
  end
@@ -239,6 +239,10 @@ module Braintree
239
239
  @venmo_sdk
240
240
  end
241
241
 
242
+ def is_network_tokenized?
243
+ @is_network_tokenized
244
+ end
245
+
242
246
  class << self
243
247
  protected :new
244
248
  end
@@ -247,7 +251,7 @@ module Braintree
247
251
  [
248
252
  :billing_address, :bin, :card_type, :cardholder_name, :created_at, :customer_id, :expiration_month,
249
253
  :expiration_year, :last_4, :token, :updated_at, :prepaid, :payroll, :product_id, :commercial, :debit, :durbin_regulated,
250
- :healthcare, :country_of_issuance, :issuing_bank, :image_url
254
+ :healthcare, :country_of_issuance, :issuing_bank, :image_url, :is_network_tokenized?
251
255
  ]
252
256
  end
253
257
 
@@ -113,10 +113,24 @@ module Braintree
113
113
  :billing_address_id, :cardholder_name, :cvv, :device_session_id, :expiration_date,
114
114
  :expiration_month, :expiration_year, :number, :token, :venmo_sdk_payment_method_code,
115
115
  :device_data, :fraud_merchant_id, :payment_method_nonce,
116
+ {:external_vault => [:network_transaction_id]},
116
117
  {:options => options},
117
118
  {:billing_address => billing_address_params}
118
119
  ]
119
120
 
121
+ signature << {
122
+ :three_d_secure_pass_thru => [
123
+ :eci_flag,
124
+ :cavv,
125
+ :xid,
126
+ :three_d_secure_version,
127
+ :authentication_response,
128
+ :directory_response,
129
+ :cavv_algorithm,
130
+ :ds_transaction_id,
131
+ ]
132
+ }
133
+
120
134
  case type
121
135
  when :create
122
136
  signature << :customer_id
@@ -22,10 +22,12 @@ module Braintree
22
22
  attr_reader :currency_iso_code
23
23
  attr_reader :cvv_response_code
24
24
  attr_reader :gateway_rejection_reason
25
+ attr_reader :graphql_id
25
26
  attr_reader :id
26
27
  attr_reader :merchant_account_id
27
28
  attr_reader :network_response_code
28
29
  attr_reader :network_response_text
30
+ attr_reader :network_transaction_id
29
31
  attr_reader :processor_response_code
30
32
  attr_reader :processor_response_text
31
33
  attr_reader :processor_response_type
@@ -4,7 +4,8 @@ module Braintree
4
4
  include Braintree::Util::IdEquality
5
5
 
6
6
  attr_reader :addresses
7
- attr_reader :amex_express_checkout_cards
7
+ attr_reader :amex_express_checkout_cards # Deprecated
8
+ # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
8
9
  attr_reader :android_pay_cards
9
10
  attr_reader :apple_pay_cards
10
11
  attr_reader :coinbase_accounts
@@ -15,9 +16,10 @@ module Braintree
15
16
  attr_reader :email
16
17
  attr_reader :fax
17
18
  attr_reader :first_name
19
+ attr_reader :graphql_id
18
20
  attr_reader :id
19
21
  attr_reader :last_name
20
- attr_reader :masterpass_cards
22
+ attr_reader :masterpass_cards # Deprecated
21
23
  attr_reader :paypal_accounts
22
24
  attr_reader :phone
23
25
  attr_reader :samsung_pay_cards
@@ -112,6 +114,7 @@ module Braintree
112
114
  @coinbase_accounts = (@coinbase_accounts || []).map { |pm| CoinbaseAccount._new gateway, pm }
113
115
  @apple_pay_cards = (@apple_pay_cards || []).map { |pm| ApplePayCard._new gateway, pm }
114
116
  @europe_bank_accounts = (@europe_bank_Accounts || []).map { |pm| EuropeBankAccount._new gateway, pm }
117
+ # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
115
118
  @android_pay_cards = (@android_pay_cards || []).map { |pm| AndroidPayCard._new gateway, pm }
116
119
  @amex_express_checkout_cards = (@amex_express_checkout_cards || []).map { |pm| AmexExpressCheckoutCard._new gateway, pm }
117
120
  @venmo_accounts = (@venmo_accounts || []).map { |pm| VenmoAccount._new gateway, pm }
@@ -12,6 +12,7 @@ module Braintree
12
12
  attr_reader :date_opened
13
13
  attr_reader :date_won
14
14
  attr_reader :evidence
15
+ attr_reader :graphql_id
15
16
  attr_reader :id
16
17
  attr_reader :kind
17
18
  attr_reader :merchant_account_id
@@ -4,7 +4,9 @@ module Braintree
4
4
  include BaseModule
5
5
 
6
6
  attr_reader :amount
7
+ attr_reader :created_at
7
8
  attr_reader :id
9
+ attr_reader :installment_count
8
10
  attr_reader :order_id
9
11
  attr_reader :purchase_order_number
10
12
  attr_reader :payment_instrument_subtype
@@ -181,6 +181,7 @@ module Braintree
181
181
  FileTypeIsInvalid = "84903"
182
182
  FileIsMalformedOrEncrypted = "84904"
183
183
  FileIsTooLong = "84905"
184
+ FileIsEmpty = "84906"
184
185
  end
185
186
 
186
187
  module PayPalAccount
@@ -302,6 +303,7 @@ module Braintree
302
303
  AmountMustBeGreaterThanZero = "81531"
303
304
  AmountNotSupportedByProcessor = "815193"
304
305
  BillingAddressConflict = "91530"
306
+ BillingPhoneNumberIsInvalid = "915206"
305
307
  CannotBeVoided = "91504"
306
308
  CannotCancelRelease = "91562"
307
309
  CannotCloneCredit = "91543"
@@ -323,29 +325,21 @@ module Braintree
323
325
  CannotUpdateTransactionDetailsNotSubmittedForSettlement = "915129"
324
326
  ChannelIsTooLong = "91550"
325
327
  CreditCardIsRequired = "91508"
326
- CustomFieldIsInvalid = "91526"
327
- CustomFieldIsTooLong = "81527"
328
328
  CustomerDefaultPaymentMethodCardTypeIsNotAccepted = "81509"
329
329
  CustomerDoesNotHaveCreditCard = "91511"
330
330
  CustomerIdIsInvalid = "91510"
331
+ CustomFieldIsInvalid = "91526"
332
+ CustomFieldIsTooLong = "81527"
333
+ DiscountAmountCannotBeNegative = "915160"
334
+ DiscountAmountFormatIsInvalid = "915159"
335
+ DiscountAmountIsTooLarge = "915161"
331
336
  FailedAuthAdjustmentAllowRetry = "95603"
332
337
  FailedAuthAdjustmentHardDecline = "95602"
333
338
  FinalAuthSubmitForSettlementForDifferentAmount = "95601"
334
339
  HasAlreadyBeenRefunded = "91512"
335
340
  IdealPaymentNotComplete = "815141"
336
- PaymentInstrumentWithExternalVaultIsInvalid = "915176"
337
- TooManyLineItems = "915157"
338
- LineItemsExpected = "915158"
339
- DiscountAmountFormatIsInvalid = "915159"
340
- DiscountAmountCannotBeNegative = "915160"
341
- DiscountAmountIsTooLarge = "915161"
342
- ShippingAmountFormatIsInvalid = "915162"
343
- ShippingAmountCannotBeNegative = "915163"
344
- ShippingAmountIsTooLarge = "915164"
345
- ShipsFromPostalCodeIsTooLong = "915165"
346
- ShipsFromPostalCodeIsInvalid = "915166"
347
- ShipsFromPostalCodeInvalidCharacters = "915167"
348
341
  IdealPaymentsCannotBeVaulted = "915150"
342
+ LineItemsExpected = "915158"
349
343
  MerchantAccountDoesNotMatch3DSecureMerchantAccount = "91584"
350
344
  MerchantAccountDoesNotMatchIdealPaymentMerchantAccount = "915143"
351
345
  MerchantAccountDoesNotSupportMOTO = "91558"
@@ -353,14 +347,12 @@ module Braintree
353
347
  MerchantAccountIdDoesNotMatchSubscription = "915180"
354
348
  MerchantAccountIdIsInvalid = "91513"
355
349
  MerchantAccountIsSuspended = "91514"
356
- OrderIdIsTooLong = "91501"
357
- OrderIdIsRequiredWithIdealPayment = "91502"
358
350
  OrderIdDoesNotMatchIdealPaymentOrderId = "91503"
359
- PayPalAuthExpired = "91579"
360
- PayPalNotEnabled = "91576"
361
- PayPalVaultRecordMissingData = "91583"
351
+ OrderIdIsRequiredWithIdealPayment = "91502"
352
+ OrderIdIsTooLong = "91501"
362
353
  PaymentInstrumentNotSupportedByMerchantAccount = "91577"
363
354
  PaymentInstrumentTypeIsNotAccepted = "915101"
355
+ PaymentInstrumentWithExternalVaultIsInvalid = "915176"
364
356
  PaymentMethodConflict = "91515"
365
357
  PaymentMethodConflictWithVenmoSDK = "91549"
366
358
  PaymentMethodDoesNotBelongToCustomer = "91516"
@@ -368,24 +360,29 @@ module Braintree
368
360
  PaymentMethodNonceCardTypeIsNotAccepted = "91567"
369
361
  PaymentMethodNonceConsumed = "91564"
370
362
  PaymentMethodNonceHasNoValidPaymentInstrumentType = "91569"
371
- UsBankAccountNonceMustBePlaidVerified = "915171"
372
- UsBankAccountNotVerified = "915172"
373
363
  PaymentMethodNonceLocked = "91566"
374
364
  PaymentMethodNonceUnknown = "91565"
375
365
  PaymentMethodTokenCardTypeIsNotAccepted = "91517"
376
366
  PaymentMethodTokenIsInvalid = "91518"
367
+ PayPalAuthExpired = "91579"
368
+ PayPalNotEnabled = "91576"
369
+ PayPalVaultRecordMissingData = "91583"
377
370
  ProcessorAuthorizationCodeCannotBeSet = "91519"
378
371
  ProcessorAuthorizationCodeIsInvalid = "81520"
379
372
  ProcessorDoesNotSupportAuths = "915104"
380
- ProcessorDoesNotSupportUpdatingOrderId = "915107"
381
- ProcessorDoesNotSupportUpdatingDescriptor = "915108"
382
- ProcessorDoesNotSupportUpdatingTransactionDetails = "915130"
383
373
  ProcessorDoesNotSupportCredits = "91546"
374
+ ProcessorDoesNotSupportMotoForCardType = "915195"
384
375
  ProcessorDoesNotSupportPartialSettlement = "915102"
376
+ ProcessorDoesNotSupportUpdatingDescriptor = "915108"
377
+ ProcessorDoesNotSupportUpdatingOrderId = "915107"
378
+ ProcessorDoesNotSupportUpdatingTransactionDetails = "915130"
385
379
  ProcessorDoesNotSupportVoiceAuthorizations = "91545"
380
+ ProductSkuIsInvalid = "915202"
386
381
  PurchaseOrderNumberIsInvalid = "91548"
387
382
  PurchaseOrderNumberIsTooLong = "91537"
388
383
  RefundAmountIsTooLarge = "91521"
384
+ RefundAuthHardDeclined = "915200"
385
+ RefundAuthSoftDeclined = "915201"
389
386
  ServiceFeeAmountCannotBeNegative = "91554"
390
387
  ServiceFeeAmountFormatIsInvalid = "91555"
391
388
  ServiceFeeAmountIsTooLarge = "91556"
@@ -395,6 +392,14 @@ module Braintree
395
392
  SettlementAmountIsLessThanServiceFeeAmount = "91551"
396
393
  SettlementAmountIsTooLarge = "91522"
397
394
  ShippingAddressDoesntMatchCustomer = "91581"
395
+ ShippingAmountCannotBeNegative = "915163"
396
+ ShippingAmountFormatIsInvalid = "915162"
397
+ ShippingAmountIsTooLarge = "915164"
398
+ ShippingMethodIsInvalid = "915203"
399
+ ShippingPhoneNumberIsInvalid = "915204"
400
+ ShipsFromPostalCodeInvalidCharacters = "915167"
401
+ ShipsFromPostalCodeIsInvalid = "915166"
402
+ ShipsFromPostalCodeIsTooLong = "915165"
398
403
  SubMerchantAccountRequiresServiceFeeAmount = "91553"
399
404
  SubscriptionDoesNotBelongToCustomer = "91529"
400
405
  SubscriptionIdIsInvalid = "91528"
@@ -403,21 +408,28 @@ module Braintree
403
408
  TaxAmountFormatIsInvalid = "81535"
404
409
  TaxAmountIsTooLarge = "81536"
405
410
  ThreeDSecureAuthenticationFailed = "81571"
406
- ThreeDSecureTokenIsInvalid = "91568"
407
- ThreeDSecureTransactionDataDoesntMatchVerify = "91570"
408
- ThreeDSecureEciFlagIsRequired = "915113"
409
- ThreeDSecureCavvIsRequired = "915116"
410
- ThreeDSecureXidIsRequired = "915115"
411
- ThreeDSecureEciFlagIsInvalid = "915114"
412
- ThreeDSecureThreeDSecureVersionIsInvalid = "915119"
411
+ ThreeDSecureAuthenticationIdDoesntMatchNonceThreeDSecureAuthentication = "915198"
412
+ ThreeDSecureAuthenticationIdIsInvalid = "915196"
413
+ ThreeDSecureAuthenticationIdWithThreeDSecurePassThruIsInvalid = "915199"
413
414
  ThreeDSecureAuthenticationResponseIsInvalid = "915120"
414
- ThreeDSecureDirectoryResponseIsInvalid = "915121"
415
415
  ThreeDSecureCavvAlgorithmIsInvalid = "915122"
416
+ ThreeDSecureCavvIsRequired = "915116"
417
+ ThreeDSecureDirectoryResponseIsInvalid = "915121"
418
+ ThreeDSecureEciFlagIsInvalid = "915114"
419
+ ThreeDSecureEciFlagIsRequired = "915113"
416
420
  ThreeDSecureMerchantAccountDoesNotSupportCardType = "915131"
421
+ ThreeDSecureThreeDSecureVersionIsInvalid = "915119"
422
+ ThreeDSecureTokenIsInvalid = "91568"
423
+ ThreeDSecureTransactionDataDoesntMatchVerify = "91570"
424
+ ThreeDSecureTransactionPaymentMethodDoesntMatchThreeDSecureAuthenticationPaymentMethod = "915197"
425
+ ThreeDSecureXidIsRequired = "915115"
426
+ TooManyLineItems = "915157"
427
+ TransactionSourceIsInvalid = "915133"
417
428
  TypeIsInvalid = "91523"
418
429
  TypeIsRequired = "91524"
419
430
  UnsupportedVoiceAuthorization = "91539"
420
- TransactionSourceIsInvalid = "915133"
431
+ UsBankAccountNonceMustBePlaidVerified = "915171"
432
+ UsBankAccountNotVerified = "915172"
421
433
 
422
434
  module Options
423
435
  SubmitForSettlementIsRequiredForCloning = "91544"
@@ -760,6 +772,28 @@ module Braintree
760
772
  AccountTypeIsInvalid = "942184"
761
773
  AccountTypeNotSupported = "942185"
762
774
  end
775
+
776
+ ThreeDSecureAuthenticationIdIsInvalid = "942196"
777
+ ThreeDSecureAuthenticationIdDoesntMatchNonceThreeDSecureAuthentication = "942198"
778
+ ThreeDSecureTransactionPaymentMethodDoesntMatchThreeDSecureAuthenticationPaymentMethod = "942197"
779
+ ThreeDSecureAuthenticationIdWithThreeDSecurePassThruIsInvalid = "942199"
780
+ ThreeDSecureAuthenticationFailed = "94271"
781
+ ThreeDSecureTokenIsInvalid = "94268"
782
+ ThreeDSecureVerificationDataDoesntMatchVerify = "94270"
783
+ MerchantAccountDoesNotSupport3DSecure = "942169"
784
+ MerchantAcountDoesNotMatch3DSecureMerchantAccount = "94284"
785
+ AmountDoesNotMatch3DSecureAmount = "94285"
786
+
787
+ module ThreeDSecurePassThru
788
+ EciFlagIsRequired = "942113"
789
+ EciFlagIsInvalid = "942114"
790
+ CavvIsRequired = "942116"
791
+ ThreeDSecureVersionIsRequired = "942117"
792
+ ThreeDSecureVersionIsInvalid = "942119"
793
+ AuthenticationResponseIsInvalid = "942120"
794
+ DirectoryResponseIsInvalid = "942121"
795
+ CavvAlgorithmIsInvalid = "942122"
796
+ end
763
797
  end
764
798
 
765
799
  module UsBankAccountVerification
@@ -770,5 +804,14 @@ module Braintree
770
804
  UnableToConfirmDepositAmounts = "96105"
771
805
  InvalidDepositAmounts = "96106"
772
806
  end
807
+
808
+ module RiskData
809
+ CustomerBrowserIsTooLong = "94701"
810
+ CustomerDeviceIdIsTooLong = "94702"
811
+ CustomerLocationZipInvalidCharacters = "94703"
812
+ CustomerLocationZipIsInvalid = "94704"
813
+ CustomerLocationZipIsTooLong = "94705"
814
+ CustomerTenureIsTooLong = "94706"
815
+ end
773
816
  end
774
817
  end
@@ -19,10 +19,16 @@ module Braintree
19
19
  request['variables'] = variables
20
20
 
21
21
  response = _http_do Net::HTTP::Post, @config.graphql_base_url, request.to_json, nil, graphql_connection, @graphql_headers
22
- data = JSON.parse(response.body, :symbolize_names => true)
22
+ data = _parse_response(response)
23
23
  Util.raise_exception_for_graphql_error(data)
24
24
 
25
25
  data
26
26
  end
27
+
28
+ def _parse_response(response)
29
+ body = response.body
30
+ body = Zlib::GzipReader.new(StringIO.new(body)).read if response.header['Content-Encoding'] == "gzip"
31
+ JSON.parse(body, :symbolize_names => true)
32
+ end
27
33
  end
28
34
  end
@@ -1,4 +1,6 @@
1
1
  module Braintree
2
+ # NEXT_MAJOR_VERSION Remove this class.
3
+ # DEPRECATED The Masterpass Card payment method is deprecated.
2
4
  class MasterpassCard
3
5
  include BaseModule # :nodoc:
4
6
  include Braintree::Util::TokenEquality
@@ -5,11 +5,12 @@ module Braintree
5
5
  CreditCard = 'credit_card'
6
6
  CoinbaseAccount = 'coinbase_account'
7
7
  ApplePayCard = 'apple_pay_card'
8
+ # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
8
9
  AndroidPayCard = 'android_pay_card'
9
10
  VenmoAccount = 'venmo_account'
10
11
  UsBankAccount = 'us_bank_account'
11
12
  VisaCheckoutCard = 'visa_checkout_card'
12
- MasterpassCard = 'masterpass_card'
13
+ MasterpassCard = 'masterpass_card' # Deprecated
13
14
  SamsungPayCard = 'samsung_pay_card'
14
15
  LocalPayment = 'local_payment'
15
16
  PayPalHere = 'paypal_here'
@@ -52,6 +52,7 @@ module Braintree
52
52
  elsif response.has_key?(:apple_pay_card)
53
53
  ApplePayCard._new(@gateway, response[:apple_pay_card])
54
54
  elsif response.has_key?(:android_pay_card)
55
+ # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
55
56
  AndroidPayCard._new(@gateway, response[:android_pay_card])
56
57
  elsif response.has_key?(:venmo_account)
57
58
  VenmoAccount._new(@gateway, response[:venmo_account])
@@ -172,12 +173,25 @@ module Braintree
172
173
  {:options => options},
173
174
  {:billing_address => billing_address_params}
174
175
  ]
176
+ signature << {
177
+ :three_d_secure_pass_thru => [
178
+ :eci_flag,
179
+ :cavv,
180
+ :xid,
181
+ :three_d_secure_version,
182
+ :authentication_response,
183
+ :directory_response,
184
+ :cavv_algorithm,
185
+ :ds_transaction_id,
186
+ ]
187
+ }
175
188
 
176
189
  case type
177
190
  when :create
178
191
  options << :fail_on_duplicate_payment_method
179
192
  signature << :customer_id
180
193
  signature << :paypal_refresh_token
194
+ # NEXT_MAJOR_VERSION remove this from the signature
181
195
  signature << :paypal_vault_without_upgrade
182
196
  when :update
183
197
  billing_address_params << {:options => [:update_existing]}
@@ -19,12 +19,14 @@ module Braintree
19
19
  attr_reader :nonce
20
20
  attr_reader :three_d_secure_info
21
21
  attr_reader :type
22
+ attr_reader :authentication_insight
22
23
 
23
24
  def initialize(gateway, attributes) # :nodoc:
24
25
  @gateway = gateway
25
26
  @nonce = attributes.fetch(:nonce)
26
27
  @type = attributes.fetch(:type)
27
28
  @details = attributes.fetch(:details)
29
+ @authentication_insight = attributes.fetch(:authentication_insight, nil)
28
30
  @three_d_secure_info = ThreeDSecureInfo.new(attributes[:three_d_secure_info]) if attributes[:three_d_secure_info]
29
31
  @bin_data = BinData.new(attributes[:bin_data]) if attributes[:bin_data]
30
32
  end