braintree 2.104.1 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/braintree.gemspec +7 -4
  4. data/lib/braintree.rb +7 -18
  5. data/lib/braintree/account_updater_daily_report.rb +1 -1
  6. data/lib/braintree/address.rb +1 -23
  7. data/lib/braintree/apple_pay.rb +1 -1
  8. data/lib/braintree/apple_pay_card.rb +1 -1
  9. data/lib/braintree/apple_pay_options.rb +1 -1
  10. data/lib/braintree/authorization_adjustment.rb +1 -1
  11. data/lib/braintree/base_module.rb +6 -0
  12. data/lib/braintree/bin_data.rb +9 -2
  13. data/lib/braintree/client_token.rb +1 -1
  14. data/lib/braintree/configuration.rb +12 -12
  15. data/lib/braintree/connected_merchant_paypal_status_changed.rb +1 -1
  16. data/lib/braintree/connected_merchant_status_transitioned.rb +1 -1
  17. data/lib/braintree/credit_card.rb +2 -77
  18. data/lib/braintree/credit_card_gateway.rb +7 -36
  19. data/lib/braintree/credit_card_verification.rb +18 -5
  20. data/lib/braintree/credit_card_verification_search.rb +1 -1
  21. data/lib/braintree/customer.rb +5 -76
  22. data/lib/braintree/customer_gateway.rb +0 -23
  23. data/lib/braintree/customer_search.rb +1 -1
  24. data/lib/braintree/disbursement.rb +1 -1
  25. data/lib/braintree/dispute.rb +2 -8
  26. data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
  27. data/lib/braintree/dispute_gateway.rb +4 -9
  28. data/lib/braintree/dispute_search.rb +2 -2
  29. data/lib/braintree/document_upload.rb +1 -1
  30. data/lib/braintree/error_codes.rb +151 -170
  31. data/lib/braintree/exceptions.rb +5 -3
  32. data/lib/braintree/gateway.rb +0 -14
  33. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +2 -3
  34. data/lib/braintree/granted_payment_instrument_update.rb +1 -1
  35. data/lib/braintree/graphql_client.rb +7 -7
  36. data/lib/braintree/http.rb +3 -3
  37. data/lib/braintree/local_payment_completed.rb +1 -1
  38. data/lib/braintree/local_payment_reversed.rb +19 -0
  39. data/lib/braintree/merchant.rb +1 -1
  40. data/lib/braintree/merchant_account.rb +1 -1
  41. data/lib/braintree/merchant_account_gateway.rb +3 -1
  42. data/lib/braintree/merchant_gateway.rb +1 -1
  43. data/lib/braintree/modification.rb +1 -1
  44. data/lib/braintree/oauth_credentials.rb +1 -1
  45. data/lib/braintree/oauth_gateway.rb +5 -5
  46. data/lib/braintree/payment_instrument_type.rb +10 -14
  47. data/lib/braintree/payment_method_gateway.rb +8 -13
  48. data/lib/braintree/payment_method_nonce_gateway.rb +1 -1
  49. data/lib/braintree/payment_method_parser.rb +1 -8
  50. data/lib/braintree/plan.rb +1 -1
  51. data/lib/braintree/processor_response_types.rb +3 -3
  52. data/lib/braintree/resource_collection.rb +8 -3
  53. data/lib/braintree/revoked_payment_method_metadata.rb +1 -1
  54. data/lib/braintree/risk_data.rb +3 -1
  55. data/lib/braintree/samsung_pay_card.rb +1 -1
  56. data/lib/braintree/settlement_batch_summary.rb +2 -2
  57. data/lib/braintree/subscription.rb +11 -11
  58. data/lib/braintree/successful_result.rb +0 -1
  59. data/lib/braintree/test/credit_card.rb +1 -0
  60. data/lib/braintree/test/nonce.rb +4 -23
  61. data/lib/braintree/three_d_secure_info.rb +22 -12
  62. data/lib/braintree/transaction.rb +44 -104
  63. data/lib/braintree/transaction/disbursement_details.rb +1 -0
  64. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
  65. data/lib/braintree/transaction/installment.rb +28 -0
  66. data/lib/braintree/transaction/installment/adjustment.rb +33 -0
  67. data/lib/braintree/transaction/paypal_details.rb +1 -0
  68. data/lib/braintree/transaction/subscription_details.rb +2 -0
  69. data/lib/braintree/transaction_gateway.rb +37 -25
  70. data/lib/braintree/transaction_line_item.rb +1 -1
  71. data/lib/braintree/transaction_search.rb +3 -2
  72. data/lib/braintree/unknown_payment_method.rb +1 -1
  73. data/lib/braintree/us_bank_account.rb +3 -3
  74. data/lib/braintree/us_bank_account_verification.rb +1 -1
  75. data/lib/braintree/us_bank_account_verification_gateway.rb +1 -1
  76. data/lib/braintree/util.rb +21 -6
  77. data/lib/braintree/venmo_account.rb +1 -1
  78. data/lib/braintree/version.rb +3 -3
  79. data/lib/braintree/visa_checkout_card.rb +2 -2
  80. data/lib/braintree/webhook_notification.rb +28 -29
  81. data/lib/braintree/webhook_notification_gateway.rb +5 -5
  82. data/lib/braintree/webhook_testing_gateway.rb +10 -43
  83. data/lib/braintree/xml/generator.rb +5 -4
  84. data/lib/braintree/xml/libxml.rb +1 -0
  85. data/lib/braintree/xml/parser.rb +21 -44
  86. data/spec/integration/braintree/add_on_spec.rb +1 -1
  87. data/spec/integration/braintree/address_spec.rb +26 -113
  88. data/spec/integration/braintree/advanced_search_spec.rb +45 -45
  89. data/spec/integration/braintree/apple_pay_spec.rb +3 -3
  90. data/spec/integration/braintree/braintree_gateway_spec.rb +2 -1
  91. data/spec/integration/braintree/client_api/client_token_spec.rb +14 -14
  92. data/spec/integration/braintree/client_api/spec_helper.rb +5 -31
  93. data/spec/integration/braintree/credit_card_spec.rb +130 -593
  94. data/spec/integration/braintree/credit_card_verification_search_spec.rb +2 -2
  95. data/spec/integration/braintree/credit_card_verification_spec.rb +1 -1
  96. data/spec/integration/braintree/customer_search_spec.rb +8 -8
  97. data/spec/integration/braintree/customer_spec.rb +336 -509
  98. data/spec/integration/braintree/dispute_search_spec.rb +6 -6
  99. data/spec/integration/braintree/dispute_spec.rb +6 -7
  100. data/spec/integration/braintree/error_codes_spec.rb +1 -1
  101. data/spec/integration/braintree/http_spec.rb +2 -2
  102. data/spec/integration/braintree/merchant_account_spec.rb +25 -26
  103. data/spec/integration/braintree/merchant_spec.rb +14 -14
  104. data/spec/integration/braintree/oauth_spec.rb +11 -11
  105. data/spec/integration/braintree/payment_method_nonce_spec.rb +12 -12
  106. data/spec/integration/braintree/payment_method_spec.rb +403 -269
  107. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +17 -13
  108. data/spec/integration/braintree/paypal_account_spec.rb +28 -28
  109. data/spec/integration/braintree/samsung_pay_card_spec.rb +9 -9
  110. data/spec/integration/braintree/settlement_batch_summary_spec.rb +8 -8
  111. data/spec/integration/braintree/subscription_spec.rb +144 -149
  112. data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
  113. data/spec/integration/braintree/test_transaction_spec.rb +10 -10
  114. data/spec/integration/braintree/transaction_search_spec.rb +96 -70
  115. data/spec/integration/braintree/transaction_spec.rb +832 -904
  116. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -26
  117. data/spec/integration/braintree/us_bank_account_spec.rb +6 -6
  118. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +7 -7
  119. data/spec/integration/braintree/us_bank_account_verification_spec.rb +8 -8
  120. data/spec/integration/braintree/visa_checkout_card_spec.rb +5 -5
  121. data/spec/integration/spec_helper.rb +10 -7
  122. data/spec/oauth_test_helper.rb +1 -1
  123. data/spec/script/httpsd.rb +6 -6
  124. data/spec/spec_helper.rb +6 -14
  125. data/spec/unit/braintree/address_spec.rb +1 -9
  126. data/spec/unit/braintree/apple_pay_card_spec.rb +1 -1
  127. data/spec/unit/braintree/client_token_spec.rb +2 -2
  128. data/spec/unit/braintree/configuration_spec.rb +42 -42
  129. data/spec/unit/braintree/credit_card_spec.rb +9 -28
  130. data/spec/unit/braintree/credit_card_verification_search_spec.rb +1 -1
  131. data/spec/unit/braintree/credit_card_verification_spec.rb +8 -4
  132. data/spec/unit/braintree/customer_spec.rb +5 -16
  133. data/spec/unit/braintree/disbursement_spec.rb +7 -7
  134. data/spec/unit/braintree/dispute_spec.rb +9 -20
  135. data/spec/unit/braintree/error_result_spec.rb +5 -5
  136. data/spec/unit/braintree/errors_spec.rb +8 -8
  137. data/spec/unit/braintree/http_spec.rb +8 -8
  138. data/spec/unit/braintree/merchant_account_spec.rb +1 -1
  139. data/spec/unit/braintree/payment_method_spec.rb +1 -1
  140. data/spec/unit/braintree/paypal_account_spec.rb +2 -2
  141. data/spec/unit/braintree/resource_collection_spec.rb +30 -1
  142. data/spec/unit/braintree/risk_data_spec.rb +9 -5
  143. data/spec/unit/braintree/subscription_search_spec.rb +1 -1
  144. data/spec/unit/braintree/successful_result_spec.rb +1 -1
  145. data/spec/unit/braintree/three_d_secure_info_spec.rb +32 -14
  146. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +3 -3
  147. data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
  148. data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
  149. data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
  150. data/spec/unit/braintree/transaction/paypal_details_spec.rb +3 -1
  151. data/spec/unit/braintree/transaction_search_spec.rb +12 -12
  152. data/spec/unit/braintree/transaction_spec.rb +25 -51
  153. data/spec/unit/braintree/util_spec.rb +55 -21
  154. data/spec/unit/braintree/validation_error_collection_spec.rb +36 -36
  155. data/spec/unit/braintree/webhook_notification_spec.rb +73 -57
  156. data/spec/unit/braintree/xml/parser_spec.rb +21 -16
  157. data/spec/unit/braintree/xml_spec.rb +31 -31
  158. metadata +30 -31
  159. data/lib/braintree/amex_express_checkout_card.rb +0 -40
  160. data/lib/braintree/coinbase_account.rb +0 -34
  161. data/lib/braintree/europe_bank_account.rb +0 -36
  162. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  163. data/lib/braintree/ideal_payment.rb +0 -61
  164. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  165. data/lib/braintree/masterpass_card.rb +0 -83
  166. data/lib/braintree/settlement_batch.rb +0 -0
  167. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  168. data/lib/braintree/transaction/coinbase_details.rb +0 -16
  169. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  170. data/lib/braintree/transaction/masterpass_card_details.rb +0 -49
  171. data/lib/braintree/transparent_redirect.rb +0 -40
  172. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  173. data/lib/braintree/xml/rexml.rb +0 -71
  174. data/spec/hacks/tcp_socket.rb +0 -18
  175. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  176. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  177. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  178. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
  179. data/spec/unit/braintree/xml/rexml_spec.rb +0 -51
@@ -8,9 +8,7 @@ module Braintree # :nodoc:
8
8
 
9
9
  class ConfigurationError < BraintreeError; end
10
10
 
11
- class DownForMaintenanceError < BraintreeError; end
12
-
13
- class ForgedQueryString < BraintreeError; end
11
+ class GatewayTimeoutError < BraintreeError; end
14
12
 
15
13
  class InvalidSignature < BraintreeError; end
16
14
 
@@ -18,8 +16,12 @@ module Braintree # :nodoc:
18
16
 
19
17
  class NotFoundError < BraintreeError; end
20
18
 
19
+ class RequestTimeoutError < BraintreeError; end
20
+
21
21
  class ServerError < BraintreeError; end
22
22
 
23
+ class ServiceUnavailableError < BraintreeError; end
24
+
23
25
  class SSLCertificateError < BraintreeError; end
24
26
 
25
27
  class TooManyRequestsError < BraintreeError; end
@@ -74,12 +74,6 @@ module Braintree
74
74
  UsBankAccountGateway.new(self)
75
75
  end
76
76
 
77
- # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
78
- # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
79
- def ideal_payment
80
- IdealPaymentGateway.new(self)
81
- end
82
-
83
77
  def merchant
84
78
  MerchantGateway.new(self)
85
79
  end
@@ -88,10 +82,6 @@ module Braintree
88
82
  MerchantAccountGateway.new(self)
89
83
  end
90
84
 
91
- def europe_bank_account
92
- EuropeBankAccountGateway.new(self)
93
- end
94
-
95
85
  def settlement_batch_summary
96
86
  SettlementBatchSummaryGateway.new(self)
97
87
  end
@@ -100,10 +90,6 @@ module Braintree
100
90
  SubscriptionGateway.new(self)
101
91
  end
102
92
 
103
- def transparent_redirect
104
- TransparentRedirectGateway.new(self)
105
- end
106
-
107
93
  def transaction
108
94
  TransactionGateway.new(self)
109
95
  end
@@ -1,6 +1,5 @@
1
1
  module Braintree
2
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
3
- class AndroidPayCard
2
+ class GooglePayCard
4
3
  include BaseModule # :nodoc:
5
4
 
6
5
  attr_reader :bin
@@ -47,7 +46,7 @@ module Braintree
47
46
  end
48
47
 
49
48
  def self._new(*args) # :nodoc:
50
- self.new *args
49
+ self.new(*args)
51
50
  end
52
51
  end
53
52
  end
@@ -16,7 +16,7 @@ module Braintree
16
16
  class << self
17
17
  protected :new
18
18
  def _new(*args) # :nodoc:
19
- self.new *args
19
+ self.new(*args)
20
20
  end
21
21
  end
22
22
  end
@@ -4,9 +4,9 @@ module Braintree
4
4
  def initialize(config)
5
5
  @config = config
6
6
  @graphql_headers = {
7
- 'Accept' => 'application/json',
8
- 'Braintree-Version' => @config.graphql_api_version,
9
- 'Content-Type' => 'application/json'
7
+ "Accept" => "application/json",
8
+ "Braintree-Version" => @config.graphql_api_version,
9
+ "Content-Type" => "application/json"
10
10
  }
11
11
  end
12
12
 
@@ -14,9 +14,9 @@ module Braintree
14
14
  graphql_connection = _setup_connection(@config.graphql_server, @config.graphql_port)
15
15
 
16
16
  request = {}
17
- request['query'] = definition
18
- request['operationName'] = operationName if operationName
19
- request['variables'] = variables
17
+ request["query"] = definition
18
+ request["operationName"] = operationName if operationName
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
22
  data = _parse_response(response)
@@ -27,7 +27,7 @@ module Braintree
27
27
 
28
28
  def _parse_response(response)
29
29
  body = response.body
30
- body = Zlib::GzipReader.new(StringIO.new(body)).read if response.header['Content-Encoding'] == "gzip"
30
+ body = Zlib::GzipReader.new(StringIO.new(body)).read if response.header["Content-Encoding"] == "gzip"
31
31
  JSON.parse(body, :symbolize_names => true)
32
32
  end
33
33
  end
@@ -75,7 +75,7 @@ module Braintree
75
75
  @config.proxy_address,
76
76
  @config.proxy_port,
77
77
  @config.proxy_user,
78
- @config.proxy_pass
78
+ @config.proxy_pass,
79
79
  )
80
80
  else
81
81
  connection = Net::HTTP.new(server, port)
@@ -127,7 +127,7 @@ module Braintree
127
127
  form_params.push(_add_form_field(k, v))
128
128
  end
129
129
  form_params.push(_add_file_part("file", file))
130
- request.body = form_params.collect {|p| "--" + boundary + "#{LINE_FEED}" + p}.join("") + "--" + boundary + "--"
130
+ request.body = form_params.collect { |p| "--" + boundary + "#{LINE_FEED}" + p }.join("") + "--" + boundary + "--"
131
131
  @config.logger.debug _format_and_sanitize_body_for_log(_build_xml(body))
132
132
  else
133
133
  request.body = body
@@ -187,7 +187,7 @@ module Braintree
187
187
  def _format_and_sanitize_body_for_log(input_xml)
188
188
  formatted_xml = input_xml.gsub(/^/, "[Braintree] ")
189
189
  formatted_xml = formatted_xml.gsub(/<number>(.{6}).+?(.{4})<\/number>/m, '<number>\1******\2</number>')
190
- formatted_xml = formatted_xml.gsub(/<cvv>.+?<\/cvv>/m, '<cvv>***</cvv>')
190
+ formatted_xml = formatted_xml.gsub(/<cvv>.+?<\/cvv>/m, "<cvv>***</cvv>")
191
191
  formatted_xml
192
192
  end
193
193
 
@@ -17,7 +17,7 @@ module Braintree
17
17
  end
18
18
 
19
19
  def self._new(*args) # :nodoc:
20
- self.new *args
20
+ self.new(*args)
21
21
  end
22
22
  end
23
23
  end
@@ -0,0 +1,19 @@
1
+ module Braintree
2
+ class LocalPaymentReversed
3
+ include BaseModule
4
+
5
+ attr_reader :payment_id
6
+
7
+ def initialize(attributes) # :nodoc:
8
+ set_instance_variables_from_hash(attributes)
9
+ end
10
+
11
+ class << self
12
+ protected :new
13
+ end
14
+
15
+ def self._new(*args) # :nodoc:
16
+ self.new(*args)
17
+ end
18
+ end
19
+ end
@@ -24,7 +24,7 @@ module Braintree
24
24
  end
25
25
 
26
26
  def self._new(*args) # :nodoc:
27
- self.new *args
27
+ self.new(*args)
28
28
  end
29
29
 
30
30
  def self.provision_raw_apple_pay
@@ -61,7 +61,7 @@ module Braintree
61
61
  class << self
62
62
  protected :new
63
63
  def _new(*args) # :nodoc:
64
- self.new *args
64
+ self.new(*args)
65
65
  end
66
66
  end
67
67
 
@@ -74,7 +74,7 @@ module Braintree
74
74
 
75
75
  if response.has_key?(:response) && response[:response][:merchant_account]
76
76
  Braintree::SuccessfulResult.new(
77
- :merchant_account => MerchantAccount._new(@gateway, response[:response][:merchant_account])
77
+ :merchant_account => MerchantAccount._new(@gateway, response[:response][:merchant_account]),
78
78
  )
79
79
  elsif response[:api_error_response]
80
80
  ErrorResult.new(@gateway, response[:api_error_response])
@@ -83,6 +83,7 @@ module Braintree
83
83
  end
84
84
  end
85
85
 
86
+ # this is part of Marketplace and shouldn't be removed unless we're removing all Marketplace code
86
87
  def self._detect_signature(attributes)
87
88
  if attributes.has_key?(:applicant_details)
88
89
  warn "[DEPRECATED] Passing :applicant_details to create is deprecated. Please use :individual, :business, and :funding."
@@ -92,6 +93,7 @@ module Braintree
92
93
  end
93
94
  end
94
95
 
96
+ # this is part of Marketplace and shouldn't be removed unless we're removing all Marketplace code
95
97
  def self._deprecated_create_signature # :nodoc:
96
98
  [
97
99
  {:applicant_details => [
@@ -26,7 +26,7 @@ module Braintree
26
26
  if response.has_key?(:response) && response[:response][:merchant]
27
27
  Braintree::SuccessfulResult.new(
28
28
  :merchant => Merchant._new(@gateway, response[:response][:merchant]),
29
- :credentials => OAuthCredentials._new(response[:response][:credentials])
29
+ :credentials => OAuthCredentials._new(response[:response][:credentials]),
30
30
  )
31
31
  elsif response[:api_error_response]
32
32
  ErrorResult.new(@gateway, response[:api_error_response])
@@ -18,7 +18,7 @@ module Braintree
18
18
  class << self
19
19
  protected :new
20
20
  def _new(*args) # :nodoc:
21
- self.new *args
21
+ self.new(*args)
22
22
  end
23
23
  end
24
24
 
@@ -16,7 +16,7 @@ module Braintree
16
16
  end
17
17
 
18
18
  def self._new(*args) # :nodoc:
19
- self.new *args
19
+ self.new(*args)
20
20
  end
21
21
  end
22
22
  end
@@ -22,7 +22,7 @@ module Braintree
22
22
  })
23
23
  if response[:credentials]
24
24
  Braintree::SuccessfulResult.new(
25
- :credentials => OAuthCredentials._new(response[:credentials])
25
+ :credentials => OAuthCredentials._new(response[:credentials]),
26
26
  )
27
27
  elsif response[:api_error_response]
28
28
  ErrorResult.new(@gateway, response[:api_error_response])
@@ -47,10 +47,10 @@ module Braintree
47
47
  user_params = _sub_query(params, :user)
48
48
  business_params = _sub_query(params, :business)
49
49
  payment_methods = _sub_array_query(params, :payment_methods)
50
- query = params.to_a.
51
- concat(user_params).
52
- concat(business_params).
53
- concat(payment_methods)
50
+ query = params.to_a
51
+ .concat(user_params)
52
+ .concat(business_params)
53
+ .concat(payment_methods)
54
54
 
55
55
  query_string = query.map { |k, v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" }.join("&")
56
56
  "#{@config.base_url}/oauth/connect?#{query_string}"
@@ -1,18 +1,14 @@
1
1
  module Braintree
2
2
  module PaymentInstrumentType
3
- PayPalAccount = 'paypal_account'
4
- EuropeBankAccount = 'europe_bank_account'
5
- CreditCard = 'credit_card'
6
- CoinbaseAccount = 'coinbase_account'
7
- ApplePayCard = 'apple_pay_card'
8
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
9
- AndroidPayCard = 'android_pay_card'
10
- VenmoAccount = 'venmo_account'
11
- UsBankAccount = 'us_bank_account'
12
- VisaCheckoutCard = 'visa_checkout_card'
13
- MasterpassCard = 'masterpass_card' # Deprecated
14
- SamsungPayCard = 'samsung_pay_card'
15
- LocalPayment = 'local_payment'
16
- PayPalHere = 'paypal_here'
3
+ PayPalAccount = "paypal_account"
4
+ CreditCard = "credit_card"
5
+ ApplePayCard = "apple_pay_card"
6
+ GooglePayCard = "android_pay_card"
7
+ VenmoAccount = "venmo_account"
8
+ UsBankAccount = "us_bank_account"
9
+ VisaCheckoutCard = "visa_checkout_card"
10
+ SamsungPayCard = "samsung_pay_card"
11
+ LocalPayment = "local_payment"
12
+ PayPalHere = "paypal_here"
17
13
  end
18
14
  end
@@ -19,7 +19,6 @@ module Braintree
19
19
 
20
20
  def _do_create(path, params=nil) # :nodoc:
21
21
  response = @config.http.post("#{@config.base_merchant_path}#{path}", params)
22
-
23
22
  if response[:api_error_response]
24
23
  ErrorResult.new(@gateway, response[:api_error_response])
25
24
  elsif response
@@ -43,17 +42,12 @@ module Braintree
43
42
  CreditCard._new(@gateway, response[:credit_card])
44
43
  elsif response.has_key?(:paypal_account)
45
44
  PayPalAccount._new(@gateway, response[:paypal_account])
46
- elsif response[:coinbase_account]
47
- SuccessfulResult.new(:payment_method => CoinbaseAccount._new(@gateway, response[:coinbase_account]))
48
45
  elsif response.has_key?(:us_bank_account)
49
46
  UsBankAccount._new(@gateway, response[:us_bank_account])
50
- elsif response.has_key?(:europe_bank_account)
51
- EuropeBankAccount._new(@gateway, response[:europe_bank_account])
52
47
  elsif response.has_key?(:apple_pay_card)
53
48
  ApplePayCard._new(@gateway, response[:apple_pay_card])
54
49
  elsif response.has_key?(:android_pay_card)
55
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
56
- AndroidPayCard._new(@gateway, response[:android_pay_card])
50
+ GooglePayCard._new(@gateway, response[:android_pay_card])
57
51
  elsif response.has_key?(:venmo_account)
58
52
  VenmoAccount._new(@gateway, response[:venmo_account])
59
53
  else
@@ -88,7 +82,7 @@ module Braintree
88
82
  if options.class == Hash
89
83
  grant_options = options
90
84
  elsif [true, false].include?(options)
91
- grant_options = { :allow_vaulting => options }
85
+ grant_options = {:allow_vaulting => options}
92
86
  else
93
87
  raise ArgumentError
94
88
  end
@@ -97,7 +91,7 @@ module Braintree
97
91
  "/payment_methods/grant",
98
92
  :payment_method => {
99
93
  :shared_payment_method_token => token,
100
- }.merge(grant_options)
94
+ }.merge(grant_options),
101
95
  )
102
96
  rescue NotFoundError
103
97
  raise NotFoundError, "payment method with token #{token.inspect} not found"
@@ -121,7 +115,7 @@ module Braintree
121
115
  "/payment_methods/revoke",
122
116
  :payment_method => {
123
117
  :shared_payment_method_token => token
124
- }
118
+ },
125
119
  )
126
120
  rescue NotFoundError
127
121
  raise NotFoundError, "payment method with token #{token.inspect} not found"
@@ -157,6 +151,7 @@ module Braintree
157
151
  :make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session,
158
152
  :verification_amount, :us_bank_account_verification_method,
159
153
  :verification_account_type,
154
+ :verification_currency_iso_code,
160
155
  :paypal => [
161
156
  :payee_email,
162
157
  :order_id,
@@ -167,9 +162,9 @@ module Braintree
167
162
  ],
168
163
  ]
169
164
  signature = [
170
- :billing_address_id, :cardholder_name, :cvv, :device_session_id, :expiration_date,
171
- :expiration_month, :expiration_year, :number, :token, :venmo_sdk_payment_method_code,
172
- :device_data, :fraud_merchant_id, :payment_method_nonce,
165
+ :billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
166
+ :expiration_year, :number, :token, :venmo_sdk_payment_method_code, :device_data,
167
+ :payment_method_nonce,
173
168
  {:options => options},
174
169
  {:billing_address => billing_address_params}
175
170
  ]
@@ -8,7 +8,7 @@ module Braintree
8
8
  @config.assert_has_access_token_or_keys
9
9
  end
10
10
 
11
- def create(payment_method_token, args = { payment_method_nonce: {} })
11
+ def create(payment_method_token, args = {payment_method_nonce: {}})
12
12
  Util.verify_keys(PaymentMethodNonceGateway._create_signature, args)
13
13
 
14
14
  response = @config.http.post("#{@config.base_merchant_path}/payment_methods/#{payment_method_token}/nonces", args)
@@ -6,23 +6,16 @@ module Braintree
6
6
  CreditCard._new(gateway, attributes[:credit_card])
7
7
  elsif attributes[:paypal_account]
8
8
  PayPalAccount._new(gateway, attributes[:paypal_account])
9
- elsif attributes[:coinbase_account]
10
- CoinbaseAccount._new(gateway, attributes[:coinbase_account])
11
9
  elsif attributes[:us_bank_account]
12
10
  UsBankAccount._new(gateway, attributes[:us_bank_account])
13
11
  elsif attributes[:apple_pay_card]
14
12
  ApplePayCard._new(gateway, attributes[:apple_pay_card])
15
13
  elsif attributes[:android_pay_card]
16
- # NEXT_MAJOR_VERSION rename Android Pay to Google Pay
17
- AndroidPayCard._new(gateway, attributes[:android_pay_card])
18
- elsif attributes[:amex_express_checkout_card]
19
- AmexExpressCheckoutCard._new(gateway, attributes[:amex_express_checkout_card])
14
+ GooglePayCard._new(gateway, attributes[:android_pay_card])
20
15
  elsif attributes[:venmo_account]
21
16
  VenmoAccount._new(gateway, attributes[:venmo_account])
22
17
  elsif attributes[:visa_checkout_card]
23
18
  VisaCheckoutCard._new(gateway, attributes[:visa_checkout_card])
24
- elsif attributes[:masterpass_card]
25
- MasterpassCard._new(gateway, attributes[:masterpass_card])
26
19
  elsif attributes[:samsung_pay_card]
27
20
  SamsungPayCard._new(gateway, attributes[:samsung_pay_card])
28
21
  else
@@ -36,7 +36,7 @@ module Braintree
36
36
  end
37
37
 
38
38
  def self._new(*args)
39
- self.new *args
39
+ self.new(*args)
40
40
  end
41
41
  end
42
42
  end
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module ProcessorResponseTypes
3
- Approved = 'approved'
4
- SoftDeclined = 'soft_declined'
5
- HardDeclined = 'hard_declined'
3
+ Approved = "approved"
4
+ SoftDeclined = "soft_declined"
5
+ HardDeclined = "hard_declined"
6
6
  end
7
7
  end
@@ -22,9 +22,14 @@ module Braintree
22
22
  @ids.empty?
23
23
  end
24
24
 
25
- # Returns the first item in the collection or nil if the collection is empty
26
- def first
27
- @paging_block.call([@ids.first]).first
25
+ # Returns the first or the first N items in the collection or nil if the collection is empty
26
+ def first(amount = 1)
27
+ return nil if @ids.empty?
28
+ return @paging_block.call([@ids.first]).first if amount == 1
29
+
30
+ @ids.first(amount).each_slice(@page_size).flat_map do |page_of_ids|
31
+ @paging_block.call(page_of_ids)
32
+ end
28
33
  end
29
34
 
30
35
  # Only the maximum size of a resource collection can be determined since the data on the server can change while