stripe 12.4.0 → 12.5.0.pre.beta.2

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1337 -644
  3. data/OPENAPI_VERSION +1 -1
  4. data/VERSION +1 -1
  5. data/lib/stripe/api_operations/request.rb +2 -1
  6. data/lib/stripe/api_version.rb +1 -0
  7. data/lib/stripe/object_types.rb +19 -0
  8. data/lib/stripe/request_signing_authenticator.rb +79 -0
  9. data/lib/stripe/resources/account_notice.rb +32 -0
  10. data/lib/stripe/resources/billing/alert.rb +87 -0
  11. data/lib/stripe/resources/capital/financing_offer.rb +49 -0
  12. data/lib/stripe/resources/capital/financing_summary.rb +15 -0
  13. data/lib/stripe/resources/capital/financing_transaction.rb +27 -0
  14. data/lib/stripe/resources/financial_connections/account.rb +3 -0
  15. data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +14 -0
  16. data/lib/stripe/resources/financial_connections/institution.rb +26 -0
  17. data/lib/stripe/resources/gift_cards/card.rb +59 -0
  18. data/lib/stripe/resources/gift_cards/transaction.rb +93 -0
  19. data/lib/stripe/resources/invoice.rb +81 -0
  20. data/lib/stripe/resources/invoice_payment.rb +12 -0
  21. data/lib/stripe/resources/issuing/credit_underwriting_record.rb +88 -0
  22. data/lib/stripe/resources/margin.rb +37 -0
  23. data/lib/stripe/resources/order.rb +120 -0
  24. data/lib/stripe/resources/payment_intent.rb +50 -0
  25. data/lib/stripe/resources/quote.rb +104 -0
  26. data/lib/stripe/resources/quote_phase.rb +39 -0
  27. data/lib/stripe/resources/quote_preview_invoice.rb +43 -0
  28. data/lib/stripe/resources/quote_preview_subscription_schedule.rb +11 -0
  29. data/lib/stripe/resources/subscription_schedule.rb +20 -0
  30. data/lib/stripe/resources/tax/association.rb +24 -0
  31. data/lib/stripe/resources/tax/form.rb +49 -0
  32. data/lib/stripe/resources/terminal/reader.rb +60 -0
  33. data/lib/stripe/resources.rb +18 -0
  34. data/lib/stripe/stripe_client.rb +60 -28
  35. data/lib/stripe/stripe_configuration.rb +2 -1
  36. data/lib/stripe/util.rb +8 -1
  37. data/lib/stripe/version.rb +1 -1
  38. data/lib/stripe.rb +29 -0
  39. metadata +23 -4
@@ -0,0 +1,24 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Tax
6
+ # A Tax Association exposes the Tax Transactions that Stripe attempted to create on your behalf based on the PaymentIntent input
7
+ class Association < APIResource
8
+ OBJECT_NAME = "tax.association"
9
+ def self.object_name
10
+ "tax.association"
11
+ end
12
+
13
+ # Finds a tax association object by PaymentIntent id.
14
+ def self.find(params = {}, opts = {})
15
+ request_stripe_object(
16
+ method: :get,
17
+ path: "/v1/tax/associations/find",
18
+ params: params,
19
+ opts: opts
20
+ )
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,49 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Tax
6
+ # Tax forms are legal documents which are delivered to one or more tax authorities for information reporting purposes.
7
+ #
8
+ # Related guide: [US tax reporting for Connect platforms](https://stripe.com/docs/connect/tax-reporting)
9
+ class Form < APIResource
10
+ extend Stripe::APIOperations::List
11
+
12
+ OBJECT_NAME = "tax.form"
13
+ def self.object_name
14
+ "tax.form"
15
+ end
16
+
17
+ # Returns a list of tax forms which were previously created. The tax forms are returned in sorted order, with the oldest tax forms appearing first.
18
+ def self.list(filters = {}, opts = {})
19
+ request_stripe_object(method: :get, path: "/v1/tax/forms", params: filters, opts: opts)
20
+ end
21
+
22
+ # Download the PDF for a tax form.
23
+ def pdf(params = {}, opts = {}, &read_body_chunk_block)
24
+ config = opts[:client]&.config || Stripe.config
25
+ opts = { api_base: config.uploads_base }.merge(opts)
26
+ request_stream(
27
+ method: :get,
28
+ path: format("/v1/tax/forms/%<id>s/pdf", { id: CGI.escape(self["id"]) }),
29
+ params: params,
30
+ opts: opts,
31
+ &read_body_chunk_block
32
+ )
33
+ end
34
+
35
+ # Download the PDF for a tax form.
36
+ def self.pdf(id, params = {}, opts = {}, &read_body_chunk_block)
37
+ config = opts[:client]&.config || Stripe.config
38
+ opts = { api_base: config.uploads_base }.merge(opts)
39
+ execute_resource_request_stream(
40
+ :get,
41
+ format("/v1/tax/forms/%<id>s/pdf", { id: CGI.escape(id) }),
42
+ params,
43
+ opts,
44
+ &read_body_chunk_block
45
+ )
46
+ end
47
+ end
48
+ end
49
+ end
@@ -37,6 +37,66 @@ module Stripe
37
37
  )
38
38
  end
39
39
 
40
+ # Initiates an input collection flow on a Reader.
41
+ def collect_inputs(params = {}, opts = {})
42
+ request_stripe_object(
43
+ method: :post,
44
+ path: format("/v1/terminal/readers/%<reader>s/collect_inputs", { reader: CGI.escape(self["id"]) }),
45
+ params: params,
46
+ opts: opts
47
+ )
48
+ end
49
+
50
+ # Initiates an input collection flow on a Reader.
51
+ def self.collect_inputs(reader, params = {}, opts = {})
52
+ request_stripe_object(
53
+ method: :post,
54
+ path: format("/v1/terminal/readers/%<reader>s/collect_inputs", { reader: CGI.escape(reader) }),
55
+ params: params,
56
+ opts: opts
57
+ )
58
+ end
59
+
60
+ # Initiates a payment flow on a Reader and updates the PaymentIntent with card details before manual confirmation.
61
+ def collect_payment_method(params = {}, opts = {})
62
+ request_stripe_object(
63
+ method: :post,
64
+ path: format("/v1/terminal/readers/%<reader>s/collect_payment_method", { reader: CGI.escape(self["id"]) }),
65
+ params: params,
66
+ opts: opts
67
+ )
68
+ end
69
+
70
+ # Initiates a payment flow on a Reader and updates the PaymentIntent with card details before manual confirmation.
71
+ def self.collect_payment_method(reader, params = {}, opts = {})
72
+ request_stripe_object(
73
+ method: :post,
74
+ path: format("/v1/terminal/readers/%<reader>s/collect_payment_method", { reader: CGI.escape(reader) }),
75
+ params: params,
76
+ opts: opts
77
+ )
78
+ end
79
+
80
+ # Finalizes a payment on a Reader.
81
+ def confirm_payment_intent(params = {}, opts = {})
82
+ request_stripe_object(
83
+ method: :post,
84
+ path: format("/v1/terminal/readers/%<reader>s/confirm_payment_intent", { reader: CGI.escape(self["id"]) }),
85
+ params: params,
86
+ opts: opts
87
+ )
88
+ end
89
+
90
+ # Finalizes a payment on a Reader.
91
+ def self.confirm_payment_intent(reader, params = {}, opts = {})
92
+ request_stripe_object(
93
+ method: :post,
94
+ path: format("/v1/terminal/readers/%<reader>s/confirm_payment_intent", { reader: CGI.escape(reader) }),
95
+ params: params,
96
+ opts: opts
97
+ )
98
+ end
99
+
40
100
  # Creates a new Reader object.
41
101
  def self.create(params = {}, opts = {})
42
102
  request_stripe_object(
@@ -3,6 +3,7 @@
3
3
 
4
4
  require "stripe/resources/account"
5
5
  require "stripe/resources/account_link"
6
+ require "stripe/resources/account_notice"
6
7
  require "stripe/resources/account_session"
7
8
  require "stripe/resources/apple_pay_domain"
8
9
  require "stripe/resources/application_fee"
@@ -11,6 +12,7 @@ require "stripe/resources/apps/secret"
11
12
  require "stripe/resources/balance"
12
13
  require "stripe/resources/balance_transaction"
13
14
  require "stripe/resources/bank_account"
15
+ require "stripe/resources/billing/alert"
14
16
  require "stripe/resources/billing/meter"
15
17
  require "stripe/resources/billing/meter_event"
16
18
  require "stripe/resources/billing/meter_event_adjustment"
@@ -18,6 +20,9 @@ require "stripe/resources/billing/meter_event_summary"
18
20
  require "stripe/resources/billing_portal/configuration"
19
21
  require "stripe/resources/billing_portal/session"
20
22
  require "stripe/resources/capability"
23
+ require "stripe/resources/capital/financing_offer"
24
+ require "stripe/resources/capital/financing_summary"
25
+ require "stripe/resources/capital/financing_transaction"
21
26
  require "stripe/resources/card"
22
27
  require "stripe/resources/cash_balance"
23
28
  require "stripe/resources/charge"
@@ -44,20 +49,26 @@ require "stripe/resources/exchange_rate"
44
49
  require "stripe/resources/file"
45
50
  require "stripe/resources/file_link"
46
51
  require "stripe/resources/financial_connections/account"
52
+ require "stripe/resources/financial_connections/account_inferred_balance"
47
53
  require "stripe/resources/financial_connections/account_owner"
48
54
  require "stripe/resources/financial_connections/account_ownership"
55
+ require "stripe/resources/financial_connections/institution"
49
56
  require "stripe/resources/financial_connections/session"
50
57
  require "stripe/resources/financial_connections/transaction"
51
58
  require "stripe/resources/forwarding/request"
52
59
  require "stripe/resources/funding_instructions"
60
+ require "stripe/resources/gift_cards/card"
61
+ require "stripe/resources/gift_cards/transaction"
53
62
  require "stripe/resources/identity/verification_report"
54
63
  require "stripe/resources/identity/verification_session"
55
64
  require "stripe/resources/invoice"
56
65
  require "stripe/resources/invoice_item"
57
66
  require "stripe/resources/invoice_line_item"
67
+ require "stripe/resources/invoice_payment"
58
68
  require "stripe/resources/issuing/authorization"
59
69
  require "stripe/resources/issuing/card"
60
70
  require "stripe/resources/issuing/cardholder"
71
+ require "stripe/resources/issuing/credit_underwriting_record"
61
72
  require "stripe/resources/issuing/dispute"
62
73
  require "stripe/resources/issuing/personalization_design"
63
74
  require "stripe/resources/issuing/physical_bundle"
@@ -66,6 +77,8 @@ require "stripe/resources/issuing/transaction"
66
77
  require "stripe/resources/line_item"
67
78
  require "stripe/resources/login_link"
68
79
  require "stripe/resources/mandate"
80
+ require "stripe/resources/margin"
81
+ require "stripe/resources/order"
69
82
  require "stripe/resources/payment_intent"
70
83
  require "stripe/resources/payment_link"
71
84
  require "stripe/resources/payment_method"
@@ -79,6 +92,9 @@ require "stripe/resources/product"
79
92
  require "stripe/resources/product_feature"
80
93
  require "stripe/resources/promotion_code"
81
94
  require "stripe/resources/quote"
95
+ require "stripe/resources/quote_phase"
96
+ require "stripe/resources/quote_preview_invoice"
97
+ require "stripe/resources/quote_preview_subscription_schedule"
82
98
  require "stripe/resources/radar/early_fraud_warning"
83
99
  require "stripe/resources/radar/value_list"
84
100
  require "stripe/resources/radar/value_list_item"
@@ -96,8 +112,10 @@ require "stripe/resources/source_transaction"
96
112
  require "stripe/resources/subscription"
97
113
  require "stripe/resources/subscription_item"
98
114
  require "stripe/resources/subscription_schedule"
115
+ require "stripe/resources/tax/association"
99
116
  require "stripe/resources/tax/calculation"
100
117
  require "stripe/resources/tax/calculation_line_item"
118
+ require "stripe/resources/tax/form"
101
119
  require "stripe/resources/tax/registration"
102
120
  require "stripe/resources/tax/settings"
103
121
  require "stripe/resources/tax/transaction"
@@ -217,9 +217,10 @@ module Stripe
217
217
  "for usage examples)", 2024, 6
218
218
 
219
219
  def execute_request(method, path,
220
- api_base: nil, api_key: nil, headers: {}, params: {}, usage: [])
220
+ api_base: nil, api_key: nil,
221
+ headers: {}, params: {}, api_mode: nil, usage: [])
221
222
  http_resp, api_key = execute_request_internal(
222
- method, path, api_base, api_key, headers, params, usage
223
+ method, path, api_base, api_key, headers, params, api_mode, usage
223
224
  )
224
225
 
225
226
  begin
@@ -250,6 +251,7 @@ module Stripe
250
251
  def execute_request_stream(method, path,
251
252
  api_base: nil, api_key: nil, usage: [],
252
253
  headers: {}, params: {},
254
+ api_mode: nil,
253
255
  &read_body_chunk_block)
254
256
  unless block_given?
255
257
  raise ArgumentError,
@@ -257,7 +259,8 @@ module Stripe
257
259
  end
258
260
 
259
261
  http_resp, api_key = execute_request_internal(
260
- method, path, api_base, api_key, headers, params, usage, &read_body_chunk_block
262
+ method, path, api_base, api_key,
263
+ headers, params, api_mode, usage, &read_body_chunk_block
261
264
  )
262
265
 
263
266
  # When the read_body_chunk_block is given, we no longer have access to the
@@ -436,8 +439,8 @@ module Stripe
436
439
  end
437
440
 
438
441
  private def execute_request_internal(method, path,
439
- api_base, api_key, headers, params, usage,
440
- &read_body_chunk_block)
442
+ api_base, api_key, headers, params,
443
+ api_mode, usage, &read_body_chunk_block)
441
444
  raise ArgumentError, "method should be a symbol" \
442
445
  unless method.is_a?(Symbol)
443
446
  raise ArgumentError, "path should be a string" \
@@ -445,9 +448,10 @@ module Stripe
445
448
 
446
449
  api_base ||= config.api_base
447
450
  api_key ||= config.api_key
451
+ authenticator ||= config.authenticator
448
452
  params = Util.objects_to_ids(params)
449
453
 
450
- check_api_key!(api_key)
454
+ check_keys!(api_key, authenticator)
451
455
 
452
456
  body_params = nil
453
457
  query_params = nil
@@ -460,7 +464,7 @@ module Stripe
460
464
 
461
465
  query_params, path = merge_query_params(query_params, path)
462
466
 
463
- headers = request_headers(api_key, method)
467
+ headers = request_headers(api_key, method, api_mode)
464
468
  .update(Util.normalize_headers(headers))
465
469
 
466
470
  url = api_url(path, api_base)
@@ -473,13 +477,16 @@ module Stripe
473
477
  # a log-friendly variant of the encoded form. File objects are displayed
474
478
  # as such instead of as their file contents.
475
479
  body, body_log =
476
- body_params ? encode_body(body_params, headers) : [nil, nil]
480
+ body_params ? encode_body(body_params, headers, api_mode) : [nil, nil]
481
+
482
+ authenticator.authenticate(method, headers, body) unless api_key
477
483
 
478
484
  # stores information on the request we're about to make so that we don't
479
485
  # have to pass as many parameters around for logging.
480
486
  context = RequestLogContext.new
481
487
  context.account = headers["Stripe-Account"]
482
488
  context.api_key = api_key
489
+ context.authenticator = authenticator
483
490
  context.api_version = headers["Stripe-Version"]
484
491
  context.body = body_log
485
492
  context.idempotency_key = headers["Idempotency-Key"]
@@ -516,8 +523,16 @@ module Stripe
516
523
  (api_base || config.api_base) + url
517
524
  end
518
525
 
519
- private def check_api_key!(api_key)
520
- unless api_key
526
+ private def check_keys!(api_key, authenticator)
527
+ if api_key && authenticator
528
+ raise AuthenticationError, "Can't specify both API key " \
529
+ "and authenticator. Either set your API key" \
530
+ 'using "Stripe.api_key = <API-KEY>", or set your authenticator ' \
531
+ 'using "Stripe.authenticator = <AUTHENTICATOR>"' \
532
+ end
533
+
534
+ unless api_key || authenticator
535
+ # Default to missing API key error message for general users.
521
536
  raise AuthenticationError, "No API key provided. " \
522
537
  'Set your API key using "Stripe.api_key = <API-KEY>". ' \
523
538
  "You can generate API keys from the Stripe web interface. " \
@@ -536,7 +551,7 @@ module Stripe
536
551
  # Encodes a set of body parameters using multipart if `Content-Type` is set
537
552
  # for that, or standard form-encoding otherwise. Returns the encoded body
538
553
  # and a version of the encoded body that's safe to be logged.
539
- private def encode_body(body_params, headers)
554
+ private def encode_body(body_params, headers, api_mode)
540
555
  body = nil
541
556
  flattened_params = Util.flatten_params(body_params)
542
557
 
@@ -552,15 +567,22 @@ module Stripe
552
567
  flattened_params =
553
568
  flattened_params.map { |k, v| [k, v.is_a?(String) ? v : v.to_s] }.to_h
554
569
 
570
+ elsif api_mode == :preview
571
+ body = JSON.generate(body_params)
572
+ headers["Content-Type"] = "application/json"
555
573
  else
556
574
  body = Util.encode_parameters(body_params)
557
575
  end
558
576
 
559
- # We don't use `Util.encode_parameters` partly as an optimization (to not
560
- # redo work we've already done), and partly because the encoded forms of
561
- # certain characters introduce a lot of visual noise and it's nice to
562
- # have a clearer format for logs.
563
- body_log = flattened_params.map { |k, v| "#{k}=#{v}" }.join("&")
577
+ body_log = if api_mode == :preview
578
+ body
579
+ else
580
+ # We don't use `Util.encode_parameters` partly as an optimization (to
581
+ # not redo work we've already done), and partly because the encoded
582
+ # forms of certain characters introduce a lot of visual noise and it's
583
+ # nice to have a clearer format for logs.
584
+ flattened_params.map { |k, v| "#{k}=#{v}" }.join("&")
585
+ end
564
586
 
565
587
  [body, body_log]
566
588
  end
@@ -746,10 +768,11 @@ module Stripe
746
768
  end
747
769
 
748
770
  private def specific_api_error(resp, error_data, context)
771
+ message = error_data[:message]
749
772
  Util.log_error("Stripe API error",
750
773
  status: resp.http_status,
751
774
  error_code: error_data[:code],
752
- error_message: error_data[:message],
775
+ error_message: message,
753
776
  error_param: error_data[:param],
754
777
  error_type: error_data[:type],
755
778
  idempotency_key: context.idempotency_key,
@@ -770,26 +793,26 @@ module Stripe
770
793
  when 400, 404
771
794
  case error_data[:type]
772
795
  when "idempotency_error"
773
- IdempotencyError.new(error_data[:message], **opts)
796
+ IdempotencyError.new(message, **opts)
774
797
  else
775
798
  InvalidRequestError.new(
776
- error_data[:message], error_data[:param],
799
+ message, error_data[:param],
777
800
  **opts
778
801
  )
779
802
  end
780
803
  when 401
781
- AuthenticationError.new(error_data[:message], **opts)
804
+ AuthenticationError.new(message, **opts)
782
805
  when 402
783
806
  CardError.new(
784
- error_data[:message], error_data[:param],
807
+ message, error_data[:param],
785
808
  **opts
786
809
  )
787
810
  when 403
788
- PermissionError.new(error_data[:message], **opts)
811
+ PermissionError.new(message, **opts)
789
812
  when 429
790
- RateLimitError.new(error_data[:message], **opts)
813
+ RateLimitError.new(message, **opts)
791
814
  else
792
- APIError.new(error_data[:message], **opts)
815
+ APIError.new(message, **opts)
793
816
  end
794
817
  end
795
818
 
@@ -857,16 +880,20 @@ module Stripe
857
880
  message + "\n\n(Network error: #{error.message})"
858
881
  end
859
882
 
860
- private def request_headers(api_key, method)
883
+ private def request_headers(api_key, method, api_mode)
861
884
  user_agent = "Stripe/v1 RubyBindings/#{Stripe::VERSION}"
862
885
  user_agent += " " + format_app_info(Stripe.app_info) unless Stripe.app_info.nil?
863
886
 
864
887
  headers = {
865
888
  "User-Agent" => user_agent,
866
889
  "Authorization" => "Bearer #{api_key}",
867
- "Content-Type" => "application/x-www-form-urlencoded",
868
890
  }
869
891
 
892
+ if api_mode != :preview
893
+ # TODO: (major) don't set Content-Type if method is not post
894
+ headers["Content-Type"] = "application/x-www-form-urlencoded"
895
+ end
896
+
870
897
  if config.enable_telemetry? && !@last_request_metrics.nil?
871
898
  headers["X-Stripe-Client-Telemetry"] = JSON.generate(
872
899
  last_request_metrics: @last_request_metrics.payload
@@ -879,7 +906,11 @@ module Stripe
879
906
  headers["Idempotency-Key"] ||= SecureRandom.uuid
880
907
  end
881
908
 
882
- headers["Stripe-Version"] = config.api_version if config.api_version
909
+ if api_mode == :preview
910
+ headers["Stripe-Version"] = ApiVersion::PREVIEW
911
+ elsif config.api_version
912
+ headers["Stripe-Version"] = config.api_version
913
+ end
883
914
 
884
915
  headers["Stripe-Account"] = config.stripe_account if config.stripe_account
885
916
 
@@ -963,7 +994,8 @@ module Stripe
963
994
  # that we can log certain information. It's useful because it means that we
964
995
  # don't have to pass around as many parameters.
965
996
  class RequestLogContext
966
- attr_accessor :body, :account, :api_key, :api_version, :idempotency_key, :method, :path, :query, :request_id
997
+ attr_accessor :body, :account, :api_key, :authenticator, :api_version, :idempotency_key, :method, :path, :query,
998
+ :request_id
967
999
 
968
1000
  # The idea with this method is that we might want to update some of
969
1001
  # context information because a response that we've received from the API
@@ -25,7 +25,7 @@ module Stripe
25
25
  # If `.logger` is set, the value of `.log_level` is ignored. The decision on
26
26
  # what levels to print is entirely deferred to the logger.
27
27
  class StripeConfiguration
28
- attr_accessor :api_key, :api_version, :client_id, :enable_telemetry, :logger, :stripe_account
28
+ attr_accessor :api_key, :api_version, :authenticator, :client_id, :enable_telemetry, :logger, :stripe_account
29
29
 
30
30
  attr_reader :api_base, :uploads_base, :connect_base, :ca_bundle_path, :log_level, :initial_network_retry_delay,
31
31
  # rubocop:todo Layout/LineLength
@@ -50,6 +50,7 @@ module Stripe
50
50
 
51
51
  def initialize
52
52
  @api_version = ApiVersion::CURRENT
53
+
53
54
  @ca_bundle_path = Stripe::DEFAULT_CA_BUNDLE_PATH
54
55
  @enable_telemetry = true
55
56
  @verify_ssl_certs = true
data/lib/stripe/util.rb CHANGED
@@ -7,6 +7,7 @@ module Stripe
7
7
  # Options that a user is allowed to specify.
8
8
  OPTS_USER_SPECIFIED = Set[
9
9
  :api_key,
10
+ :authenticator,
10
11
  :idempotency_key,
11
12
  :stripe_account,
12
13
  :stripe_version
@@ -279,7 +280,13 @@ module Stripe
279
280
  when String
280
281
  { api_key: opts }
281
282
  when Hash
282
- check_api_key!(opts.fetch(:api_key)) if opts.key?(:api_key)
283
+ # If the user is using request signing for authentication,
284
+ # no need to check the api_key per request.
285
+ if !(opts.key?(:client) &&
286
+ opts.fetch(:client).config.authenticator) &&
287
+ opts.key?(:api_key)
288
+ check_api_key!(opts.fetch(:api_key))
289
+ end
283
290
  # Explicitly use dup here instead of clone to avoid preserving freeze
284
291
  # state on input params.
285
292
  opts.dup
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stripe
4
- VERSION = "12.4.0"
4
+ VERSION = "12.5.0-beta.2"
5
5
  end
data/lib/stripe.rb CHANGED
@@ -13,6 +13,7 @@ require "set"
13
13
  require "socket"
14
14
  require "uri"
15
15
  require "forwardable"
16
+ require "base64"
16
17
 
17
18
  # Version
18
19
  require "stripe/api_version"
@@ -45,6 +46,7 @@ require "stripe/api_resource_test_helpers"
45
46
  require "stripe/singleton_api_resource"
46
47
  require "stripe/webhook"
47
48
  require "stripe/stripe_configuration"
49
+ require "stripe/request_signing_authenticator"
48
50
 
49
51
  # Named API resources
50
52
  require "stripe/resources"
@@ -71,6 +73,7 @@ module Stripe
71
73
 
72
74
  # User configurable options
73
75
  def_delegators :@config, :api_key, :api_key=
76
+ def_delegators :@config, :authenticator, :authenticator=
74
77
  def_delegators :@config, :api_version, :api_version=
75
78
  def_delegators :@config, :stripe_account, :stripe_account=
76
79
  def_delegators :@config, :api_base, :api_base=
@@ -118,6 +121,32 @@ module Stripe
118
121
  }
119
122
  end
120
123
 
124
+ def self.add_beta_version(beta_name, version)
125
+ if api_version.include?("; #{beta_name}=")
126
+ raise "Stripe version header #{api_version} already contains entry for beta #{beta_name}"
127
+ end
128
+
129
+ self.api_version = "#{api_version}; #{beta_name}=#{version}"
130
+ end
131
+
132
+ class Preview
133
+ def self._get_default_opts(opts)
134
+ { api_mode: :preview }.merge(opts)
135
+ end
136
+
137
+ def self.get(url, opts = {})
138
+ Stripe.raw_request(:get, url, {}, _get_default_opts(opts))
139
+ end
140
+
141
+ def self.post(url, params = {}, opts = {})
142
+ Stripe.raw_request(:post, url, params, _get_default_opts(opts))
143
+ end
144
+
145
+ def self.delete(url, opts = {})
146
+ Stripe.raw_request(:delete, url, {}, _get_default_opts(opts))
147
+ end
148
+ end
149
+
121
150
  class RawRequest
122
151
  include Stripe::APIOperations::Request
123
152
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe
3
3
  version: !ruby/object:Gem::Version
4
- version: 12.4.0
4
+ version: 12.5.0.pre.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-25 00:00:00.000000000 Z
11
+ date: 2024-08-01 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Stripe is the easiest way to accept payments online. See https://stripe.com
14
14
  for details.
@@ -51,9 +51,11 @@ files:
51
51
  - lib/stripe/multipart_encoder.rb
52
52
  - lib/stripe/oauth.rb
53
53
  - lib/stripe/object_types.rb
54
+ - lib/stripe/request_signing_authenticator.rb
54
55
  - lib/stripe/resources.rb
55
56
  - lib/stripe/resources/account.rb
56
57
  - lib/stripe/resources/account_link.rb
58
+ - lib/stripe/resources/account_notice.rb
57
59
  - lib/stripe/resources/account_session.rb
58
60
  - lib/stripe/resources/alipay_account.rb
59
61
  - lib/stripe/resources/apple_pay_domain.rb
@@ -63,6 +65,7 @@ files:
63
65
  - lib/stripe/resources/balance.rb
64
66
  - lib/stripe/resources/balance_transaction.rb
65
67
  - lib/stripe/resources/bank_account.rb
68
+ - lib/stripe/resources/billing/alert.rb
66
69
  - lib/stripe/resources/billing/meter.rb
67
70
  - lib/stripe/resources/billing/meter_event.rb
68
71
  - lib/stripe/resources/billing/meter_event_adjustment.rb
@@ -70,6 +73,9 @@ files:
70
73
  - lib/stripe/resources/billing_portal/configuration.rb
71
74
  - lib/stripe/resources/billing_portal/session.rb
72
75
  - lib/stripe/resources/capability.rb
76
+ - lib/stripe/resources/capital/financing_offer.rb
77
+ - lib/stripe/resources/capital/financing_summary.rb
78
+ - lib/stripe/resources/capital/financing_transaction.rb
73
79
  - lib/stripe/resources/card.rb
74
80
  - lib/stripe/resources/cash_balance.rb
75
81
  - lib/stripe/resources/charge.rb
@@ -96,20 +102,26 @@ files:
96
102
  - lib/stripe/resources/file.rb
97
103
  - lib/stripe/resources/file_link.rb
98
104
  - lib/stripe/resources/financial_connections/account.rb
105
+ - lib/stripe/resources/financial_connections/account_inferred_balance.rb
99
106
  - lib/stripe/resources/financial_connections/account_owner.rb
100
107
  - lib/stripe/resources/financial_connections/account_ownership.rb
108
+ - lib/stripe/resources/financial_connections/institution.rb
101
109
  - lib/stripe/resources/financial_connections/session.rb
102
110
  - lib/stripe/resources/financial_connections/transaction.rb
103
111
  - lib/stripe/resources/forwarding/request.rb
104
112
  - lib/stripe/resources/funding_instructions.rb
113
+ - lib/stripe/resources/gift_cards/card.rb
114
+ - lib/stripe/resources/gift_cards/transaction.rb
105
115
  - lib/stripe/resources/identity/verification_report.rb
106
116
  - lib/stripe/resources/identity/verification_session.rb
107
117
  - lib/stripe/resources/invoice.rb
108
118
  - lib/stripe/resources/invoice_item.rb
109
119
  - lib/stripe/resources/invoice_line_item.rb
120
+ - lib/stripe/resources/invoice_payment.rb
110
121
  - lib/stripe/resources/issuing/authorization.rb
111
122
  - lib/stripe/resources/issuing/card.rb
112
123
  - lib/stripe/resources/issuing/cardholder.rb
124
+ - lib/stripe/resources/issuing/credit_underwriting_record.rb
113
125
  - lib/stripe/resources/issuing/dispute.rb
114
126
  - lib/stripe/resources/issuing/personalization_design.rb
115
127
  - lib/stripe/resources/issuing/physical_bundle.rb
@@ -118,6 +130,8 @@ files:
118
130
  - lib/stripe/resources/line_item.rb
119
131
  - lib/stripe/resources/login_link.rb
120
132
  - lib/stripe/resources/mandate.rb
133
+ - lib/stripe/resources/margin.rb
134
+ - lib/stripe/resources/order.rb
121
135
  - lib/stripe/resources/payment_intent.rb
122
136
  - lib/stripe/resources/payment_link.rb
123
137
  - lib/stripe/resources/payment_method.rb
@@ -131,6 +145,9 @@ files:
131
145
  - lib/stripe/resources/product_feature.rb
132
146
  - lib/stripe/resources/promotion_code.rb
133
147
  - lib/stripe/resources/quote.rb
148
+ - lib/stripe/resources/quote_phase.rb
149
+ - lib/stripe/resources/quote_preview_invoice.rb
150
+ - lib/stripe/resources/quote_preview_subscription_schedule.rb
134
151
  - lib/stripe/resources/radar/early_fraud_warning.rb
135
152
  - lib/stripe/resources/radar/value_list.rb
136
153
  - lib/stripe/resources/radar/value_list_item.rb
@@ -149,8 +166,10 @@ files:
149
166
  - lib/stripe/resources/subscription.rb
150
167
  - lib/stripe/resources/subscription_item.rb
151
168
  - lib/stripe/resources/subscription_schedule.rb
169
+ - lib/stripe/resources/tax/association.rb
152
170
  - lib/stripe/resources/tax/calculation.rb
153
171
  - lib/stripe/resources/tax/calculation_line_item.rb
172
+ - lib/stripe/resources/tax/form.rb
154
173
  - lib/stripe/resources/tax/registration.rb
155
174
  - lib/stripe/resources/tax/settings.rb
156
175
  - lib/stripe/resources/tax/transaction.rb
@@ -212,9 +231,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
212
231
  version: 2.3.0
213
232
  required_rubygems_version: !ruby/object:Gem::Requirement
214
233
  requirements:
215
- - - ">="
234
+ - - ">"
216
235
  - !ruby/object:Gem::Version
217
- version: '0'
236
+ version: 1.3.1
218
237
  requirements: []
219
238
  rubygems_version: 3.3.27
220
239
  signing_key: