stripe 12.4.0 → 12.5.0.pre.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1333 -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 +37 -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 +22 -3
data/OPENAPI_VERSION CHANGED
@@ -1 +1 @@
1
- v1154
1
+ v1156
data/VERSION CHANGED
@@ -1 +1 @@
1
- 12.4.0
1
+ 12.5.0-beta.1
@@ -48,13 +48,14 @@ module Stripe
48
48
  api_key = headers.delete(:api_key)
49
49
  api_base = headers.delete(:api_base)
50
50
  client = headers.delete(:client)
51
+ api_mode = headers.delete(:api_mode)
51
52
  # Assume all remaining opts must be headers
52
53
 
53
54
  resp, opts[:api_key] = client.send(
54
55
  client_request_method_sym,
55
56
  method, url,
56
57
  api_base: api_base, api_key: api_key,
57
- headers: headers, params: params, usage: usage,
58
+ headers: headers, params: params, usage: usage, api_mode: api_mode,
58
59
  &read_body_chunk_block
59
60
  )
60
61
 
@@ -4,5 +4,6 @@
4
4
  module Stripe
5
5
  module ApiVersion
6
6
  CURRENT = "2024-06-20"
7
+ PREVIEW = "2024-07-16.preview-v2"
7
8
  end
8
9
  end
@@ -15,6 +15,7 @@ module Stripe
15
15
  # object classes: The beginning of the section generated from our OpenAPI spec
16
16
  Account.object_name => Account,
17
17
  AccountLink.object_name => AccountLink,
18
+ AccountNotice.object_name => AccountNotice,
18
19
  AccountSession.object_name => AccountSession,
19
20
  ApplePayDomain.object_name => ApplePayDomain,
20
21
  ApplicationFee.object_name => ApplicationFee,
@@ -23,6 +24,7 @@ module Stripe
23
24
  Balance.object_name => Balance,
24
25
  BalanceTransaction.object_name => BalanceTransaction,
25
26
  BankAccount.object_name => BankAccount,
27
+ Billing::Alert.object_name => Billing::Alert,
26
28
  Billing::Meter.object_name => Billing::Meter,
27
29
  Billing::MeterEvent.object_name => Billing::MeterEvent,
28
30
  Billing::MeterEventAdjustment.object_name => Billing::MeterEventAdjustment,
@@ -30,6 +32,9 @@ module Stripe
30
32
  BillingPortal::Configuration.object_name => BillingPortal::Configuration,
31
33
  BillingPortal::Session.object_name => BillingPortal::Session,
32
34
  Capability.object_name => Capability,
35
+ Capital::FinancingOffer.object_name => Capital::FinancingOffer,
36
+ Capital::FinancingSummary.object_name => Capital::FinancingSummary,
37
+ Capital::FinancingTransaction.object_name => Capital::FinancingTransaction,
33
38
  Card.object_name => Card,
34
39
  CashBalance.object_name => CashBalance,
35
40
  Charge.object_name => Charge,
@@ -56,20 +61,27 @@ module Stripe
56
61
  File.object_name => File,
57
62
  FileLink.object_name => FileLink,
58
63
  FinancialConnections::Account.object_name => FinancialConnections::Account,
64
+ FinancialConnections::AccountInferredBalance.object_name =>
65
+ FinancialConnections::AccountInferredBalance,
59
66
  FinancialConnections::AccountOwner.object_name => FinancialConnections::AccountOwner,
60
67
  FinancialConnections::AccountOwnership.object_name => FinancialConnections::AccountOwnership,
68
+ FinancialConnections::Institution.object_name => FinancialConnections::Institution,
61
69
  FinancialConnections::Session.object_name => FinancialConnections::Session,
62
70
  FinancialConnections::Transaction.object_name => FinancialConnections::Transaction,
63
71
  Forwarding::Request.object_name => Forwarding::Request,
64
72
  FundingInstructions.object_name => FundingInstructions,
73
+ GiftCards::Card.object_name => GiftCards::Card,
74
+ GiftCards::Transaction.object_name => GiftCards::Transaction,
65
75
  Identity::VerificationReport.object_name => Identity::VerificationReport,
66
76
  Identity::VerificationSession.object_name => Identity::VerificationSession,
67
77
  Invoice.object_name => Invoice,
68
78
  InvoiceItem.object_name => InvoiceItem,
69
79
  InvoiceLineItem.object_name => InvoiceLineItem,
80
+ InvoicePayment.object_name => InvoicePayment,
70
81
  Issuing::Authorization.object_name => Issuing::Authorization,
71
82
  Issuing::Card.object_name => Issuing::Card,
72
83
  Issuing::Cardholder.object_name => Issuing::Cardholder,
84
+ Issuing::CreditUnderwritingRecord.object_name => Issuing::CreditUnderwritingRecord,
73
85
  Issuing::Dispute.object_name => Issuing::Dispute,
74
86
  Issuing::PersonalizationDesign.object_name => Issuing::PersonalizationDesign,
75
87
  Issuing::PhysicalBundle.object_name => Issuing::PhysicalBundle,
@@ -78,6 +90,8 @@ module Stripe
78
90
  LineItem.object_name => LineItem,
79
91
  LoginLink.object_name => LoginLink,
80
92
  Mandate.object_name => Mandate,
93
+ Margin.object_name => Margin,
94
+ Order.object_name => Order,
81
95
  PaymentIntent.object_name => PaymentIntent,
82
96
  PaymentLink.object_name => PaymentLink,
83
97
  PaymentMethod.object_name => PaymentMethod,
@@ -91,6 +105,9 @@ module Stripe
91
105
  ProductFeature.object_name => ProductFeature,
92
106
  PromotionCode.object_name => PromotionCode,
93
107
  Quote.object_name => Quote,
108
+ QuotePhase.object_name => QuotePhase,
109
+ QuotePreviewInvoice.object_name => QuotePreviewInvoice,
110
+ QuotePreviewSubscriptionSchedule.object_name => QuotePreviewSubscriptionSchedule,
94
111
  Radar::EarlyFraudWarning.object_name => Radar::EarlyFraudWarning,
95
112
  Radar::ValueList.object_name => Radar::ValueList,
96
113
  Radar::ValueListItem.object_name => Radar::ValueListItem,
@@ -108,8 +125,10 @@ module Stripe
108
125
  Subscription.object_name => Subscription,
109
126
  SubscriptionItem.object_name => SubscriptionItem,
110
127
  SubscriptionSchedule.object_name => SubscriptionSchedule,
128
+ Tax::Association.object_name => Tax::Association,
111
129
  Tax::Calculation.object_name => Tax::Calculation,
112
130
  Tax::CalculationLineItem.object_name => Tax::CalculationLineItem,
131
+ Tax::Form.object_name => Tax::Form,
113
132
  Tax::Registration.object_name => Tax::Registration,
114
133
  Tax::Settings.object_name => Tax::Settings,
115
134
  Tax::Transaction.object_name => Tax::Transaction,
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class RequestSigningAuthenticator
5
+ AUTHORIZATION_HEADER_NAME = "Authorization"
6
+ CONTENT_TYPE_HEADER_NAME = "Content-Type"
7
+ STRIPE_CONTEXT_HEADER_NAME = "Stripe-Context"
8
+ STRIPE_ACCOUNT_HEADER_NAME = "Stripe-Account"
9
+ CONTENT_DIGEST_HEADER_NAME = "Content-Digest"
10
+ SIGNATURE_INPUT_HEADER_NAME = "Signature-Input"
11
+ SIGNATURE_HEADER_NAME = "Signature"
12
+
13
+ attr_reader :auth_token, :sign_lambda
14
+
15
+ def initialize(auth_token, sign_lambda)
16
+ raise ArgumentError, "auth_token must be a string" unless auth_token.is_a?(String)
17
+ raise ArgumentError, "sign_lambda must be a lambda" unless sign_lambda.is_a?(Proc)
18
+
19
+ @auth_token = auth_token
20
+ @sign_lambda = sign_lambda
21
+ end
22
+
23
+ def authenticate(method, headers, body)
24
+ covered_headers = [CONTENT_TYPE_HEADER_NAME,
25
+ CONTENT_DIGEST_HEADER_NAME,
26
+ STRIPE_CONTEXT_HEADER_NAME,
27
+ STRIPE_ACCOUNT_HEADER_NAME,
28
+ AUTHORIZATION_HEADER_NAME,]
29
+
30
+ headers[AUTHORIZATION_HEADER_NAME] = "STRIPE-V2-SIG #{auth_token}"
31
+
32
+ if method == :get
33
+ covered_headers -= [CONTENT_TYPE_HEADER_NAME,
34
+ CONTENT_DIGEST_HEADER_NAME,]
35
+ else
36
+ content = body || ""
37
+ headers[CONTENT_DIGEST_HEADER_NAME] =
38
+ %(sha-256=:#{content_digest(content)}:)
39
+ end
40
+
41
+ covered_headers_formatted = covered_headers
42
+ .map { |string| %("#{string.downcase}") }
43
+ .join(" ")
44
+
45
+ signature_input = "(#{covered_headers_formatted});created=#{created_time}"
46
+
47
+ inputs = covered_headers
48
+ .map { |header| %("#{header.downcase}": #{headers[header]}) }
49
+ .join("\n")
50
+
51
+ signature_base = %(#{inputs}\n"@signature-params": #{signature_input})
52
+ .encode(Encoding::UTF_8)
53
+
54
+ headers[SIGNATURE_INPUT_HEADER_NAME] = "sig1=#{signature_input}"
55
+
56
+ headers[SIGNATURE_HEADER_NAME] =
57
+ "sig1=:#{encoded_signature(signature_base)}:"
58
+ end
59
+
60
+ private def sign(signature_base)
61
+ @sign_lambda.call(signature_base)
62
+ end
63
+
64
+ private def encoded_signature(signature_base)
65
+ Base64.strict_encode64(sign(signature_base))
66
+ rescue StandardError
67
+ raise AuthenticationError, "Encountered '#{e.message} (#{e.class})' " \
68
+ "when calculating request signature."
69
+ end
70
+
71
+ private def content_digest(content)
72
+ Base64.strict_encode64(OpenSSL::Digest.new("SHA256").digest(content))
73
+ end
74
+
75
+ private def created_time
76
+ Time.now.to_i
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,32 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # A notice to a Connected account. Notice can be sent by Stripe on your behalf or you can opt to send the notices yourself.
6
+ #
7
+ # See the [guide to send notices](https://stripe.com/docs/issuing/compliance-us/issuing-regulated-customer-notices) to your connected accounts.
8
+ class AccountNotice < APIResource
9
+ extend Stripe::APIOperations::List
10
+ include Stripe::APIOperations::Save
11
+
12
+ OBJECT_NAME = "account_notice"
13
+ def self.object_name
14
+ "account_notice"
15
+ end
16
+
17
+ # Retrieves a list of AccountNotice objects. The objects are sorted in descending order by creation date, with the most-recently-created object appearing first.
18
+ def self.list(filters = {}, opts = {})
19
+ request_stripe_object(method: :get, path: "/v1/account_notices", params: filters, opts: opts)
20
+ end
21
+
22
+ # Updates an AccountNotice object.
23
+ def self.update(id, params = {}, opts = {})
24
+ request_stripe_object(
25
+ method: :post,
26
+ path: format("/v1/account_notices/%<id>s", { id: CGI.escape(id) }),
27
+ params: params,
28
+ opts: opts
29
+ )
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,87 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Billing
6
+ # A billing alert is a resource that notifies you when a certain usage threshold on a meter is crossed. For example, you might create a billing alert to notify you when a certain user made 100 API requests.
7
+ class Alert < APIResource
8
+ extend Stripe::APIOperations::Create
9
+ extend Stripe::APIOperations::List
10
+
11
+ OBJECT_NAME = "billing.alert"
12
+ def self.object_name
13
+ "billing.alert"
14
+ end
15
+
16
+ # Reactivates this alert, allowing it to trigger again.
17
+ def activate(params = {}, opts = {})
18
+ request_stripe_object(
19
+ method: :post,
20
+ path: format("/v1/billing/alerts/%<id>s/activate", { id: CGI.escape(self["id"]) }),
21
+ params: params,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ # Reactivates this alert, allowing it to trigger again.
27
+ def self.activate(id, params = {}, opts = {})
28
+ request_stripe_object(
29
+ method: :post,
30
+ path: format("/v1/billing/alerts/%<id>s/activate", { id: CGI.escape(id) }),
31
+ params: params,
32
+ opts: opts
33
+ )
34
+ end
35
+
36
+ # Archives this alert, removing it from the list view and APIs. This is non-reversible.
37
+ def archive(params = {}, opts = {})
38
+ request_stripe_object(
39
+ method: :post,
40
+ path: format("/v1/billing/alerts/%<id>s/archive", { id: CGI.escape(self["id"]) }),
41
+ params: params,
42
+ opts: opts
43
+ )
44
+ end
45
+
46
+ # Archives this alert, removing it from the list view and APIs. This is non-reversible.
47
+ def self.archive(id, params = {}, opts = {})
48
+ request_stripe_object(
49
+ method: :post,
50
+ path: format("/v1/billing/alerts/%<id>s/archive", { id: CGI.escape(id) }),
51
+ params: params,
52
+ opts: opts
53
+ )
54
+ end
55
+
56
+ # Creates a billing alert
57
+ def self.create(params = {}, opts = {})
58
+ request_stripe_object(method: :post, path: "/v1/billing/alerts", params: params, opts: opts)
59
+ end
60
+
61
+ # Deactivates this alert, preventing it from triggering.
62
+ def deactivate(params = {}, opts = {})
63
+ request_stripe_object(
64
+ method: :post,
65
+ path: format("/v1/billing/alerts/%<id>s/deactivate", { id: CGI.escape(self["id"]) }),
66
+ params: params,
67
+ opts: opts
68
+ )
69
+ end
70
+
71
+ # Deactivates this alert, preventing it from triggering.
72
+ def self.deactivate(id, params = {}, opts = {})
73
+ request_stripe_object(
74
+ method: :post,
75
+ path: format("/v1/billing/alerts/%<id>s/deactivate", { id: CGI.escape(id) }),
76
+ params: params,
77
+ opts: opts
78
+ )
79
+ end
80
+
81
+ # Lists billing active and inactive alerts
82
+ def self.list(filters = {}, opts = {})
83
+ request_stripe_object(method: :get, path: "/v1/billing/alerts", params: filters, opts: opts)
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,49 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Capital
6
+ # This is an object representing an offer of financing from
7
+ # Stripe Capital to a Connect subaccount.
8
+ class FinancingOffer < APIResource
9
+ extend Stripe::APIOperations::List
10
+
11
+ OBJECT_NAME = "capital.financing_offer"
12
+ def self.object_name
13
+ "capital.financing_offer"
14
+ end
15
+
16
+ # Retrieves the financing offers available for Connected accounts that belong to your platform.
17
+ def self.list(filters = {}, opts = {})
18
+ request_stripe_object(
19
+ method: :get,
20
+ path: "/v1/capital/financing_offers",
21
+ params: filters,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ # Acknowledges that platform has received and delivered the financing_offer to
27
+ # the intended merchant recipient.
28
+ def mark_delivered(params = {}, opts = {})
29
+ request_stripe_object(
30
+ method: :post,
31
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(self["id"]) }),
32
+ params: params,
33
+ opts: opts
34
+ )
35
+ end
36
+
37
+ # Acknowledges that platform has received and delivered the financing_offer to
38
+ # the intended merchant recipient.
39
+ def self.mark_delivered(financing_offer, params = {}, opts = {})
40
+ request_stripe_object(
41
+ method: :post,
42
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(financing_offer) }),
43
+ params: params,
44
+ opts: opts
45
+ )
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,15 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Capital
6
+ # A financing object describes an account's current financing state. Used by Connect
7
+ # platforms to read the state of Capital offered to their connected accounts.
8
+ class FinancingSummary < SingletonAPIResource
9
+ OBJECT_NAME = "capital.financing_summary"
10
+ def self.object_name
11
+ "capital.financing_summary"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,27 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Capital
6
+ # This is an object representing the details of a transaction on a Capital financing object.
7
+ class FinancingTransaction < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "capital.financing_transaction"
11
+ def self.object_name
12
+ "capital.financing_transaction"
13
+ end
14
+
15
+ # Returns a list of financing transactions. The transactions are returned in sorted order,
16
+ # with the most recent transactions appearing first.
17
+ def self.list(filters = {}, opts = {})
18
+ request_stripe_object(
19
+ method: :get,
20
+ path: "/v1/capital/financing_transactions",
21
+ params: filters,
22
+ opts: opts
23
+ )
24
+ end
25
+ end
26
+ end
27
+ end
@@ -6,12 +6,15 @@ module Stripe
6
6
  # A Financial Connections Account represents an account that exists outside of Stripe, to which you have been granted some degree of access.
7
7
  class Account < APIResource
8
8
  extend Stripe::APIOperations::List
9
+ extend Stripe::APIOperations::NestedResource
9
10
 
10
11
  OBJECT_NAME = "financial_connections.account"
11
12
  def self.object_name
12
13
  "financial_connections.account"
13
14
  end
14
15
 
16
+ nested_resource_class_methods :inferred_balance, operations: %i[list]
17
+
15
18
  # Disables your access to a Financial Connections Account. You will no longer be able to access data associated with the account (e.g. balances, transactions).
16
19
  def disconnect(params = {}, opts = {})
17
20
  request_stripe_object(
@@ -0,0 +1,14 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module FinancialConnections
6
+ # A historical balance for the account on a particular day. It may be sourced from a balance snapshot provided by a financial institution, or inferred using transactions data.
7
+ class AccountInferredBalance < APIResource
8
+ OBJECT_NAME = "financial_connections.account_inferred_balance"
9
+ def self.object_name
10
+ "financial_connections.account_inferred_balance"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,26 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module FinancialConnections
6
+ # An institution represents a financial institution to which an end user can connect using the Financial Connections authentication flow.
7
+ class Institution < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "financial_connections.institution"
11
+ def self.object_name
12
+ "financial_connections.institution"
13
+ end
14
+
15
+ # Returns a list of Financial Connections Institution objects.
16
+ def self.list(filters = {}, opts = {})
17
+ request_stripe_object(
18
+ method: :get,
19
+ path: "/v1/financial_connections/institutions",
20
+ params: filters,
21
+ opts: opts
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,59 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module GiftCards
6
+ # A gift card represents a single gift card owned by a customer, including the
7
+ # remaining balance, gift card code, and whether or not it is active.
8
+ class Card < APIResource
9
+ extend Stripe::APIOperations::Create
10
+ extend Stripe::APIOperations::List
11
+ include Stripe::APIOperations::Save
12
+
13
+ OBJECT_NAME = "gift_cards.card"
14
+ def self.object_name
15
+ "gift_cards.card"
16
+ end
17
+
18
+ # Creates a new gift card object.
19
+ def self.create(params = {}, opts = {})
20
+ request_stripe_object(
21
+ method: :post,
22
+ path: "/v1/gift_cards/cards",
23
+ params: params,
24
+ opts: opts
25
+ )
26
+ end
27
+
28
+ # List gift cards for an account
29
+ def self.list(filters = {}, opts = {})
30
+ request_stripe_object(
31
+ method: :get,
32
+ path: "/v1/gift_cards/cards",
33
+ params: filters,
34
+ opts: opts
35
+ )
36
+ end
37
+
38
+ # Update a gift card
39
+ def self.update(id, params = {}, opts = {})
40
+ request_stripe_object(
41
+ method: :post,
42
+ path: format("/v1/gift_cards/cards/%<id>s", { id: CGI.escape(id) }),
43
+ params: params,
44
+ opts: opts
45
+ )
46
+ end
47
+
48
+ # Validates a gift card code, returning the matching gift card object if it exists.
49
+ def self.validate(params = {}, opts = {})
50
+ request_stripe_object(
51
+ method: :post,
52
+ path: "/v1/gift_cards/cards/validate",
53
+ params: params,
54
+ opts: opts
55
+ )
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,93 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module GiftCards
6
+ # A gift card transaction represents a single transaction on a referenced gift card.
7
+ # A transaction is in one of three states, `confirmed`, `held` or `canceled`. A `confirmed`
8
+ # transaction is one that has added/deducted funds. A `held` transaction has created a
9
+ # temporary hold on funds, which can then be cancelled or confirmed. A `held` transaction
10
+ # can be confirmed into a `confirmed` transaction, or canceled into a `canceled` transaction.
11
+ # A `canceled` transaction has no effect on a gift card's balance.
12
+ class Transaction < APIResource
13
+ extend Stripe::APIOperations::Create
14
+ extend Stripe::APIOperations::List
15
+ include Stripe::APIOperations::Save
16
+
17
+ OBJECT_NAME = "gift_cards.transaction"
18
+ def self.object_name
19
+ "gift_cards.transaction"
20
+ end
21
+
22
+ # Cancel a gift card transaction
23
+ def cancel(params = {}, opts = {})
24
+ request_stripe_object(
25
+ method: :post,
26
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(self["id"]) }),
27
+ params: params,
28
+ opts: opts
29
+ )
30
+ end
31
+
32
+ # Cancel a gift card transaction
33
+ def self.cancel(id, params = {}, opts = {})
34
+ request_stripe_object(
35
+ method: :post,
36
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(id) }),
37
+ params: params,
38
+ opts: opts
39
+ )
40
+ end
41
+
42
+ # Confirm a gift card transaction
43
+ def confirm(params = {}, opts = {})
44
+ request_stripe_object(
45
+ method: :post,
46
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(self["id"]) }),
47
+ params: params,
48
+ opts: opts
49
+ )
50
+ end
51
+
52
+ # Confirm a gift card transaction
53
+ def self.confirm(id, params = {}, opts = {})
54
+ request_stripe_object(
55
+ method: :post,
56
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(id) }),
57
+ params: params,
58
+ opts: opts
59
+ )
60
+ end
61
+
62
+ # Create a gift card transaction
63
+ def self.create(params = {}, opts = {})
64
+ request_stripe_object(
65
+ method: :post,
66
+ path: "/v1/gift_cards/transactions",
67
+ params: params,
68
+ opts: opts
69
+ )
70
+ end
71
+
72
+ # List gift card transactions for a gift card
73
+ def self.list(filters = {}, opts = {})
74
+ request_stripe_object(
75
+ method: :get,
76
+ path: "/v1/gift_cards/transactions",
77
+ params: filters,
78
+ opts: opts
79
+ )
80
+ end
81
+
82
+ # Update a gift card transaction
83
+ def self.update(id, params = {}, opts = {})
84
+ request_stripe_object(
85
+ method: :post,
86
+ path: format("/v1/gift_cards/transactions/%<id>s", { id: CGI.escape(id) }),
87
+ params: params,
88
+ opts: opts
89
+ )
90
+ end
91
+ end
92
+ end
93
+ end
@@ -48,6 +48,7 @@ module Stripe
48
48
  end
49
49
 
50
50
  nested_resource_class_methods :line, operations: %i[list]
51
+ nested_resource_class_methods :payment, operations: %i[retrieve list]
51
52
 
52
53
  # Adds multiple line items to an invoice. This is only possible when an invoice is still a draft.
53
54
  def add_lines(params = {}, opts = {})
@@ -69,6 +70,42 @@ module Stripe
69
70
  )
70
71
  end
71
72
 
73
+ # Attaches a PaymentIntent to the invoice, adding it to the list of payments.
74
+ # When the PaymentIntent's status changes to succeeded, the payment is credited
75
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
76
+ # invoice's status becomes paid.
77
+ #
78
+ # If the PaymentIntent's status is already succeeded when it is attached, it is
79
+ # credited to the invoice immediately.
80
+ #
81
+ # Related guide: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create)
82
+ def attach_payment_intent(params = {}, opts = {})
83
+ request_stripe_object(
84
+ method: :post,
85
+ path: format("/v1/invoices/%<invoice>s/attach_payment_intent", { invoice: CGI.escape(self["id"]) }),
86
+ params: params,
87
+ opts: opts
88
+ )
89
+ end
90
+
91
+ # Attaches a PaymentIntent to the invoice, adding it to the list of payments.
92
+ # When the PaymentIntent's status changes to succeeded, the payment is credited
93
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
94
+ # invoice's status becomes paid.
95
+ #
96
+ # If the PaymentIntent's status is already succeeded when it is attached, it is
97
+ # credited to the invoice immediately.
98
+ #
99
+ # Related guide: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create)
100
+ def self.attach_payment_intent(invoice, params = {}, opts = {})
101
+ request_stripe_object(
102
+ method: :post,
103
+ path: format("/v1/invoices/%<invoice>s/attach_payment_intent", { invoice: CGI.escape(invoice) }),
104
+ params: params,
105
+ opts: opts
106
+ )
107
+ end
108
+
72
109
  # This endpoint creates a draft invoice for a given customer. The invoice remains a draft until you [finalize the invoice, which allows you to [pay](#pay_invoice) or <a href="#send_invoice">send](https://stripe.com/docs/api#finalize_invoice) the invoice to your customers.
73
110
  def self.create(params = {}, opts = {})
74
111
  request_stripe_object(method: :post, path: "/v1/invoices", params: params, opts: opts)