stripe 12.0.0 → 12.2.0.pre.beta.1

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1327 -644
  3. data/Gemfile +0 -1
  4. data/OPENAPI_VERSION +1 -1
  5. data/README.md +11 -1
  6. data/VERSION +1 -1
  7. data/lib/stripe/api_operations/request.rb +2 -1
  8. data/lib/stripe/api_version.rb +1 -0
  9. data/lib/stripe/object_types.rb +17 -0
  10. data/lib/stripe/request_signing_authenticator.rb +79 -0
  11. data/lib/stripe/resources/account_notice.rb +32 -0
  12. data/lib/stripe/resources/bank_account.rb +11 -12
  13. data/lib/stripe/resources/capital/financing_offer.rb +49 -0
  14. data/lib/stripe/resources/capital/financing_summary.rb +15 -0
  15. data/lib/stripe/resources/capital/financing_transaction.rb +27 -0
  16. data/lib/stripe/resources/card.rb +10 -12
  17. data/lib/stripe/resources/customer_session.rb +3 -3
  18. data/lib/stripe/resources/financial_connections/account.rb +3 -0
  19. data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +14 -0
  20. data/lib/stripe/resources/financial_connections/institution.rb +26 -0
  21. data/lib/stripe/resources/gift_cards/card.rb +59 -0
  22. data/lib/stripe/resources/gift_cards/transaction.rb +93 -0
  23. data/lib/stripe/resources/invoice.rb +97 -0
  24. data/lib/stripe/resources/invoice_payment.rb +12 -0
  25. data/lib/stripe/resources/issuing/credit_underwriting_record.rb +88 -0
  26. data/lib/stripe/resources/margin.rb +37 -0
  27. data/lib/stripe/resources/order.rb +120 -0
  28. data/lib/stripe/resources/payment_intent.rb +50 -0
  29. data/lib/stripe/resources/quote.rb +104 -0
  30. data/lib/stripe/resources/quote_phase.rb +39 -0
  31. data/lib/stripe/resources/quote_preview_invoice.rb +43 -0
  32. data/lib/stripe/resources/quote_preview_subscription_schedule.rb +11 -0
  33. data/lib/stripe/resources/subscription_schedule.rb +20 -0
  34. data/lib/stripe/resources/tax/form.rb +49 -0
  35. data/lib/stripe/resources/terminal/reader.rb +60 -0
  36. data/lib/stripe/resources.rb +16 -0
  37. data/lib/stripe/stripe_client.rb +62 -28
  38. data/lib/stripe/stripe_configuration.rb +2 -1
  39. data/lib/stripe/util.rb +8 -1
  40. data/lib/stripe/version.rb +1 -1
  41. data/lib/stripe.rb +54 -0
  42. metadata +21 -4
@@ -15,6 +15,26 @@ module Stripe
15
15
  "subscription_schedule"
16
16
  end
17
17
 
18
+ # Amends an existing subscription schedule.
19
+ def amend(params = {}, opts = {})
20
+ request_stripe_object(
21
+ method: :post,
22
+ path: format("/v1/subscription_schedules/%<schedule>s/amend", { schedule: CGI.escape(self["id"]) }),
23
+ params: params,
24
+ opts: opts
25
+ )
26
+ end
27
+
28
+ # Amends an existing subscription schedule.
29
+ def self.amend(schedule, params = {}, opts = {})
30
+ request_stripe_object(
31
+ method: :post,
32
+ path: format("/v1/subscription_schedules/%<schedule>s/amend", { schedule: CGI.escape(schedule) }),
33
+ params: params,
34
+ opts: opts
35
+ )
36
+ end
37
+
18
38
  # Cancels a subscription schedule and its associated subscription immediately (if the subscription schedule has an active subscription). A subscription schedule can only be canceled if its status is not_started or active.
19
39
  def cancel(params = {}, opts = {})
20
40
  request_stripe_object(
@@ -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"
@@ -18,6 +19,9 @@ require "stripe/resources/billing/meter_event_summary"
18
19
  require "stripe/resources/billing_portal/configuration"
19
20
  require "stripe/resources/billing_portal/session"
20
21
  require "stripe/resources/capability"
22
+ require "stripe/resources/capital/financing_offer"
23
+ require "stripe/resources/capital/financing_summary"
24
+ require "stripe/resources/capital/financing_transaction"
21
25
  require "stripe/resources/card"
22
26
  require "stripe/resources/cash_balance"
23
27
  require "stripe/resources/charge"
@@ -44,20 +48,26 @@ require "stripe/resources/exchange_rate"
44
48
  require "stripe/resources/file"
45
49
  require "stripe/resources/file_link"
46
50
  require "stripe/resources/financial_connections/account"
51
+ require "stripe/resources/financial_connections/account_inferred_balance"
47
52
  require "stripe/resources/financial_connections/account_owner"
48
53
  require "stripe/resources/financial_connections/account_ownership"
54
+ require "stripe/resources/financial_connections/institution"
49
55
  require "stripe/resources/financial_connections/session"
50
56
  require "stripe/resources/financial_connections/transaction"
51
57
  require "stripe/resources/forwarding/request"
52
58
  require "stripe/resources/funding_instructions"
59
+ require "stripe/resources/gift_cards/card"
60
+ require "stripe/resources/gift_cards/transaction"
53
61
  require "stripe/resources/identity/verification_report"
54
62
  require "stripe/resources/identity/verification_session"
55
63
  require "stripe/resources/invoice"
56
64
  require "stripe/resources/invoice_item"
57
65
  require "stripe/resources/invoice_line_item"
66
+ require "stripe/resources/invoice_payment"
58
67
  require "stripe/resources/issuing/authorization"
59
68
  require "stripe/resources/issuing/card"
60
69
  require "stripe/resources/issuing/cardholder"
70
+ require "stripe/resources/issuing/credit_underwriting_record"
61
71
  require "stripe/resources/issuing/dispute"
62
72
  require "stripe/resources/issuing/personalization_design"
63
73
  require "stripe/resources/issuing/physical_bundle"
@@ -66,6 +76,8 @@ require "stripe/resources/issuing/transaction"
66
76
  require "stripe/resources/line_item"
67
77
  require "stripe/resources/login_link"
68
78
  require "stripe/resources/mandate"
79
+ require "stripe/resources/margin"
80
+ require "stripe/resources/order"
69
81
  require "stripe/resources/payment_intent"
70
82
  require "stripe/resources/payment_link"
71
83
  require "stripe/resources/payment_method"
@@ -79,6 +91,9 @@ require "stripe/resources/product"
79
91
  require "stripe/resources/product_feature"
80
92
  require "stripe/resources/promotion_code"
81
93
  require "stripe/resources/quote"
94
+ require "stripe/resources/quote_phase"
95
+ require "stripe/resources/quote_preview_invoice"
96
+ require "stripe/resources/quote_preview_subscription_schedule"
82
97
  require "stripe/resources/radar/early_fraud_warning"
83
98
  require "stripe/resources/radar/value_list"
84
99
  require "stripe/resources/radar/value_list_item"
@@ -98,6 +113,7 @@ require "stripe/resources/subscription_item"
98
113
  require "stripe/resources/subscription_schedule"
99
114
  require "stripe/resources/tax/calculation"
100
115
  require "stripe/resources/tax/calculation_line_item"
116
+ require "stripe/resources/tax/form"
101
117
  require "stripe/resources/tax/registration"
102
118
  require "stripe/resources/tax/settings"
103
119
  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,8 +464,9 @@ 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))
469
+
465
470
  url = api_url(path, api_base)
466
471
 
467
472
  # Merge given query parameters with any already encoded in the path.
@@ -472,13 +477,16 @@ module Stripe
472
477
  # a log-friendly variant of the encoded form. File objects are displayed
473
478
  # as such instead of as their file contents.
474
479
  body, body_log =
475
- 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
476
483
 
477
484
  # stores information on the request we're about to make so that we don't
478
485
  # have to pass as many parameters around for logging.
479
486
  context = RequestLogContext.new
480
487
  context.account = headers["Stripe-Account"]
481
488
  context.api_key = api_key
489
+ context.authenticator = authenticator
482
490
  context.api_version = headers["Stripe-Version"]
483
491
  context.body = body_log
484
492
  context.idempotency_key = headers["Idempotency-Key"]
@@ -515,8 +523,16 @@ module Stripe
515
523
  (api_base || config.api_base) + url
516
524
  end
517
525
 
518
- private def check_api_key!(api_key)
519
- 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.
520
536
  raise AuthenticationError, "No API key provided. " \
521
537
  'Set your API key using "Stripe.api_key = <API-KEY>". ' \
522
538
  "You can generate API keys from the Stripe web interface. " \
@@ -535,7 +551,7 @@ module Stripe
535
551
  # Encodes a set of body parameters using multipart if `Content-Type` is set
536
552
  # for that, or standard form-encoding otherwise. Returns the encoded body
537
553
  # and a version of the encoded body that's safe to be logged.
538
- private def encode_body(body_params, headers)
554
+ private def encode_body(body_params, headers, api_mode)
539
555
  body = nil
540
556
  flattened_params = Util.flatten_params(body_params)
541
557
 
@@ -551,15 +567,22 @@ module Stripe
551
567
  flattened_params =
552
568
  flattened_params.map { |k, v| [k, v.is_a?(String) ? v : v.to_s] }.to_h
553
569
 
570
+ elsif api_mode == :preview
571
+ body = JSON.generate(body_params)
572
+ headers["Content-Type"] = "application/json"
554
573
  else
555
574
  body = Util.encode_parameters(body_params)
556
575
  end
557
576
 
558
- # We don't use `Util.encode_parameters` partly as an optimization (to not
559
- # redo work we've already done), and partly because the encoded forms of
560
- # certain characters introduce a lot of visual noise and it's nice to
561
- # have a clearer format for logs.
562
- 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
563
586
 
564
587
  [body, body_log]
565
588
  end
@@ -745,10 +768,11 @@ module Stripe
745
768
  end
746
769
 
747
770
  private def specific_api_error(resp, error_data, context)
771
+ message = error_data[:message]
748
772
  Util.log_error("Stripe API error",
749
773
  status: resp.http_status,
750
774
  error_code: error_data[:code],
751
- error_message: error_data[:message],
775
+ error_message: message,
752
776
  error_param: error_data[:param],
753
777
  error_type: error_data[:type],
754
778
  idempotency_key: context.idempotency_key,
@@ -769,26 +793,26 @@ module Stripe
769
793
  when 400, 404
770
794
  case error_data[:type]
771
795
  when "idempotency_error"
772
- IdempotencyError.new(error_data[:message], **opts)
796
+ IdempotencyError.new(message, **opts)
773
797
  else
774
798
  InvalidRequestError.new(
775
- error_data[:message], error_data[:param],
799
+ message, error_data[:param],
776
800
  **opts
777
801
  )
778
802
  end
779
803
  when 401
780
- AuthenticationError.new(error_data[:message], **opts)
804
+ AuthenticationError.new(message, **opts)
781
805
  when 402
782
806
  CardError.new(
783
- error_data[:message], error_data[:param],
807
+ message, error_data[:param],
784
808
  **opts
785
809
  )
786
810
  when 403
787
- PermissionError.new(error_data[:message], **opts)
811
+ PermissionError.new(message, **opts)
788
812
  when 429
789
- RateLimitError.new(error_data[:message], **opts)
813
+ RateLimitError.new(message, **opts)
790
814
  else
791
- APIError.new(error_data[:message], **opts)
815
+ APIError.new(message, **opts)
792
816
  end
793
817
  end
794
818
 
@@ -856,16 +880,20 @@ module Stripe
856
880
  message + "\n\n(Network error: #{error.message})"
857
881
  end
858
882
 
859
- private def request_headers(api_key, method)
883
+ private def request_headers(api_key, method, api_mode)
860
884
  user_agent = "Stripe/v1 RubyBindings/#{Stripe::VERSION}"
861
885
  user_agent += " " + format_app_info(Stripe.app_info) unless Stripe.app_info.nil?
862
886
 
863
887
  headers = {
864
888
  "User-Agent" => user_agent,
865
889
  "Authorization" => "Bearer #{api_key}",
866
- "Content-Type" => "application/x-www-form-urlencoded",
867
890
  }
868
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
+
869
897
  if config.enable_telemetry? && !@last_request_metrics.nil?
870
898
  headers["X-Stripe-Client-Telemetry"] = JSON.generate(
871
899
  last_request_metrics: @last_request_metrics.payload
@@ -878,7 +906,12 @@ module Stripe
878
906
  headers["Idempotency-Key"] ||= SecureRandom.uuid
879
907
  end
880
908
 
881
- 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
914
+
882
915
  headers["Stripe-Account"] = config.stripe_account if config.stripe_account
883
916
 
884
917
  user_agent = @system_profiler.user_agent
@@ -961,7 +994,8 @@ module Stripe
961
994
  # that we can log certain information. It's useful because it means that we
962
995
  # don't have to pass around as many parameters.
963
996
  class RequestLogContext
964
- 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
965
999
 
966
1000
  # The idea with this method is that we might want to update some of
967
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.0.0"
4
+ VERSION = "12.2.0-beta.1"
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=
@@ -117,6 +120,57 @@ module Stripe
117
120
  version: version,
118
121
  }
119
122
  end
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
+
150
+ class RawRequest
151
+ include Stripe::APIOperations::Request
152
+
153
+ def initialize
154
+ @opts = {}
155
+ end
156
+
157
+ def execute(method, url, params = {}, opts = {}, usage = [])
158
+ resp, = execute_resource_request(method, url, params, opts, usage)
159
+
160
+ resp
161
+ end
162
+ end
163
+
164
+ # Sends a request to Stripe REST API
165
+ def self.raw_request(method, url, params = {}, opts = {})
166
+ req = RawRequest.new
167
+ req.execute(method, url, params, opts, ["raw_request"])
168
+ end
169
+
170
+ def self.deserialize(data)
171
+ data = JSON.parse(data) if data.is_a?(String)
172
+ Util.convert_to_stripe_object(data, {})
173
+ end
120
174
  end
121
175
 
122
176
  Stripe.log_level = ENV["STRIPE_LOG"] unless ENV["STRIPE_LOG"].nil?
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.0.0
4
+ version: 12.2.0.pre.beta.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stripe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-24 00:00:00.000000000 Z
11
+ date: 2024-07-05 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
@@ -70,6 +72,9 @@ files:
70
72
  - lib/stripe/resources/billing_portal/configuration.rb
71
73
  - lib/stripe/resources/billing_portal/session.rb
72
74
  - lib/stripe/resources/capability.rb
75
+ - lib/stripe/resources/capital/financing_offer.rb
76
+ - lib/stripe/resources/capital/financing_summary.rb
77
+ - lib/stripe/resources/capital/financing_transaction.rb
73
78
  - lib/stripe/resources/card.rb
74
79
  - lib/stripe/resources/cash_balance.rb
75
80
  - lib/stripe/resources/charge.rb
@@ -96,20 +101,26 @@ files:
96
101
  - lib/stripe/resources/file.rb
97
102
  - lib/stripe/resources/file_link.rb
98
103
  - lib/stripe/resources/financial_connections/account.rb
104
+ - lib/stripe/resources/financial_connections/account_inferred_balance.rb
99
105
  - lib/stripe/resources/financial_connections/account_owner.rb
100
106
  - lib/stripe/resources/financial_connections/account_ownership.rb
107
+ - lib/stripe/resources/financial_connections/institution.rb
101
108
  - lib/stripe/resources/financial_connections/session.rb
102
109
  - lib/stripe/resources/financial_connections/transaction.rb
103
110
  - lib/stripe/resources/forwarding/request.rb
104
111
  - lib/stripe/resources/funding_instructions.rb
112
+ - lib/stripe/resources/gift_cards/card.rb
113
+ - lib/stripe/resources/gift_cards/transaction.rb
105
114
  - lib/stripe/resources/identity/verification_report.rb
106
115
  - lib/stripe/resources/identity/verification_session.rb
107
116
  - lib/stripe/resources/invoice.rb
108
117
  - lib/stripe/resources/invoice_item.rb
109
118
  - lib/stripe/resources/invoice_line_item.rb
119
+ - lib/stripe/resources/invoice_payment.rb
110
120
  - lib/stripe/resources/issuing/authorization.rb
111
121
  - lib/stripe/resources/issuing/card.rb
112
122
  - lib/stripe/resources/issuing/cardholder.rb
123
+ - lib/stripe/resources/issuing/credit_underwriting_record.rb
113
124
  - lib/stripe/resources/issuing/dispute.rb
114
125
  - lib/stripe/resources/issuing/personalization_design.rb
115
126
  - lib/stripe/resources/issuing/physical_bundle.rb
@@ -118,6 +129,8 @@ files:
118
129
  - lib/stripe/resources/line_item.rb
119
130
  - lib/stripe/resources/login_link.rb
120
131
  - lib/stripe/resources/mandate.rb
132
+ - lib/stripe/resources/margin.rb
133
+ - lib/stripe/resources/order.rb
121
134
  - lib/stripe/resources/payment_intent.rb
122
135
  - lib/stripe/resources/payment_link.rb
123
136
  - lib/stripe/resources/payment_method.rb
@@ -131,6 +144,9 @@ files:
131
144
  - lib/stripe/resources/product_feature.rb
132
145
  - lib/stripe/resources/promotion_code.rb
133
146
  - lib/stripe/resources/quote.rb
147
+ - lib/stripe/resources/quote_phase.rb
148
+ - lib/stripe/resources/quote_preview_invoice.rb
149
+ - lib/stripe/resources/quote_preview_subscription_schedule.rb
134
150
  - lib/stripe/resources/radar/early_fraud_warning.rb
135
151
  - lib/stripe/resources/radar/value_list.rb
136
152
  - lib/stripe/resources/radar/value_list_item.rb
@@ -151,6 +167,7 @@ files:
151
167
  - lib/stripe/resources/subscription_schedule.rb
152
168
  - lib/stripe/resources/tax/calculation.rb
153
169
  - lib/stripe/resources/tax/calculation_line_item.rb
170
+ - lib/stripe/resources/tax/form.rb
154
171
  - lib/stripe/resources/tax/registration.rb
155
172
  - lib/stripe/resources/tax/settings.rb
156
173
  - lib/stripe/resources/tax/transaction.rb
@@ -212,9 +229,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
212
229
  version: 2.3.0
213
230
  required_rubygems_version: !ruby/object:Gem::Requirement
214
231
  requirements:
215
- - - ">="
232
+ - - ">"
216
233
  - !ruby/object:Gem::Version
217
- version: '0'
234
+ version: 1.3.1
218
235
  requirements: []
219
236
  rubygems_version: 3.3.27
220
237
  signing_key: