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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1327 -644
- data/Gemfile +0 -1
- data/OPENAPI_VERSION +1 -1
- data/README.md +11 -1
- data/VERSION +1 -1
- data/lib/stripe/api_operations/request.rb +2 -1
- data/lib/stripe/api_version.rb +1 -0
- data/lib/stripe/object_types.rb +17 -0
- data/lib/stripe/request_signing_authenticator.rb +79 -0
- data/lib/stripe/resources/account_notice.rb +32 -0
- data/lib/stripe/resources/bank_account.rb +11 -12
- data/lib/stripe/resources/capital/financing_offer.rb +49 -0
- data/lib/stripe/resources/capital/financing_summary.rb +15 -0
- data/lib/stripe/resources/capital/financing_transaction.rb +27 -0
- data/lib/stripe/resources/card.rb +10 -12
- data/lib/stripe/resources/customer_session.rb +3 -3
- data/lib/stripe/resources/financial_connections/account.rb +3 -0
- data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +14 -0
- data/lib/stripe/resources/financial_connections/institution.rb +26 -0
- data/lib/stripe/resources/gift_cards/card.rb +59 -0
- data/lib/stripe/resources/gift_cards/transaction.rb +93 -0
- data/lib/stripe/resources/invoice.rb +97 -0
- data/lib/stripe/resources/invoice_payment.rb +12 -0
- data/lib/stripe/resources/issuing/credit_underwriting_record.rb +88 -0
- data/lib/stripe/resources/margin.rb +37 -0
- data/lib/stripe/resources/order.rb +120 -0
- data/lib/stripe/resources/payment_intent.rb +50 -0
- data/lib/stripe/resources/quote.rb +104 -0
- data/lib/stripe/resources/quote_phase.rb +39 -0
- data/lib/stripe/resources/quote_preview_invoice.rb +43 -0
- data/lib/stripe/resources/quote_preview_subscription_schedule.rb +11 -0
- data/lib/stripe/resources/subscription_schedule.rb +20 -0
- data/lib/stripe/resources/tax/form.rb +49 -0
- data/lib/stripe/resources/terminal/reader.rb +60 -0
- data/lib/stripe/resources.rb +16 -0
- data/lib/stripe/stripe_client.rb +62 -28
- data/lib/stripe/stripe_configuration.rb +2 -1
- data/lib/stripe/util.rb +8 -1
- data/lib/stripe/version.rb +1 -1
- data/lib/stripe.rb +54 -0
- 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(
|
data/lib/stripe/resources.rb
CHANGED
@@ -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"
|
data/lib/stripe/stripe_client.rb
CHANGED
@@ -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,
|
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,
|
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,
|
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
|
-
|
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
|
519
|
-
|
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
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
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:
|
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(
|
796
|
+
IdempotencyError.new(message, **opts)
|
773
797
|
else
|
774
798
|
InvalidRequestError.new(
|
775
|
-
|
799
|
+
message, error_data[:param],
|
776
800
|
**opts
|
777
801
|
)
|
778
802
|
end
|
779
803
|
when 401
|
780
|
-
AuthenticationError.new(
|
804
|
+
AuthenticationError.new(message, **opts)
|
781
805
|
when 402
|
782
806
|
CardError.new(
|
783
|
-
|
807
|
+
message, error_data[:param],
|
784
808
|
**opts
|
785
809
|
)
|
786
810
|
when 403
|
787
|
-
PermissionError.new(
|
811
|
+
PermissionError.new(message, **opts)
|
788
812
|
when 429
|
789
|
-
RateLimitError.new(
|
813
|
+
RateLimitError.new(message, **opts)
|
790
814
|
else
|
791
|
-
APIError.new(
|
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
|
-
|
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,
|
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
|
-
|
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
|
data/lib/stripe/version.rb
CHANGED
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.
|
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-
|
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:
|
234
|
+
version: 1.3.1
|
218
235
|
requirements: []
|
219
236
|
rubygems_version: 3.3.27
|
220
237
|
signing_key:
|