stripe 13.1.0 → 13.2.0.pre.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1379 -645
  3. data/OPENAPI_VERSION +1 -1
  4. data/VERSION +1 -1
  5. data/lib/stripe/object_types.rb +19 -0
  6. data/lib/stripe/request_signing_authenticator.rb +79 -0
  7. data/lib/stripe/resources/account_notice.rb +32 -0
  8. data/lib/stripe/resources/capital/financing_offer.rb +49 -0
  9. data/lib/stripe/resources/capital/financing_summary.rb +15 -0
  10. data/lib/stripe/resources/capital/financing_transaction.rb +27 -0
  11. data/lib/stripe/resources/financial_connections/account.rb +3 -0
  12. data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +14 -0
  13. data/lib/stripe/resources/financial_connections/institution.rb +26 -0
  14. data/lib/stripe/resources/gift_cards/card.rb +59 -0
  15. data/lib/stripe/resources/gift_cards/transaction.rb +93 -0
  16. data/lib/stripe/resources/invoice.rb +81 -0
  17. data/lib/stripe/resources/invoice_payment.rb +12 -0
  18. data/lib/stripe/resources/issuing/credit_underwriting_record.rb +88 -0
  19. data/lib/stripe/resources/issuing/dispute_settlement_detail.rb +26 -0
  20. data/lib/stripe/resources/margin.rb +37 -0
  21. data/lib/stripe/resources/order.rb +120 -0
  22. data/lib/stripe/resources/payment_intent.rb +70 -0
  23. data/lib/stripe/resources/quote.rb +104 -0
  24. data/lib/stripe/resources/quote_preview_invoice.rb +43 -0
  25. data/lib/stripe/resources/quote_preview_subscription_schedule.rb +11 -0
  26. data/lib/stripe/resources/subscription_schedule.rb +20 -0
  27. data/lib/stripe/resources/tax/association.rb +24 -0
  28. data/lib/stripe/resources/tax/form.rb +49 -0
  29. data/lib/stripe/resources/terminal/reader.rb +60 -0
  30. data/lib/stripe/resources/terminal/reader_collected_data.rb +14 -0
  31. data/lib/stripe/resources.rb +18 -0
  32. data/lib/stripe/services/account_notice_service.rb +39 -0
  33. data/lib/stripe/services/capital/financing_offer_service.rb +42 -0
  34. data/lib/stripe/services/capital/financing_summary_service.rb +19 -0
  35. data/lib/stripe/services/capital/financing_transaction_service.rb +31 -0
  36. data/lib/stripe/services/capital_service.rb +15 -0
  37. data/lib/stripe/services/financial_connections/account_inferred_balance_service.rb +19 -0
  38. data/lib/stripe/services/financial_connections/account_service.rb +3 -1
  39. data/lib/stripe/services/financial_connections/institution_service.rb +30 -0
  40. data/lib/stripe/services/financial_connections_service.rb +2 -1
  41. data/lib/stripe/services/gift_cards/card_service.rb +63 -0
  42. data/lib/stripe/services/gift_cards/transaction_service.rb +74 -0
  43. data/lib/stripe/services/gift_cards_service.rb +14 -0
  44. data/lib/stripe/services/invoice_payment_service.rb +28 -0
  45. data/lib/stripe/services/invoice_service.rb +44 -1
  46. data/lib/stripe/services/issuing/credit_underwriting_record_service.rb +74 -0
  47. data/lib/stripe/services/issuing/dispute_settlement_detail_service.rb +30 -0
  48. data/lib/stripe/services/issuing_service.rb +4 -1
  49. data/lib/stripe/services/margin_service.rb +50 -0
  50. data/lib/stripe/services/order_line_item_service.rb +17 -0
  51. data/lib/stripe/services/order_service.rb +78 -0
  52. data/lib/stripe/services/payment_intent_service.rb +37 -0
  53. data/lib/stripe/services/quote_line_service.rb +17 -0
  54. data/lib/stripe/services/quote_preview_invoice_service.rb +17 -0
  55. data/lib/stripe/services/quote_preview_subscription_schedule_service.rb +17 -0
  56. data/lib/stripe/services/quote_service.rb +49 -1
  57. data/lib/stripe/services/subscription_schedule_service.rb +11 -0
  58. data/lib/stripe/services/tax/association_service.rb +19 -0
  59. data/lib/stripe/services/tax/form_service.rb +37 -0
  60. data/lib/stripe/services/tax_service.rb +3 -1
  61. data/lib/stripe/services/terminal/reader_collected_data_service.rb +19 -0
  62. data/lib/stripe/services/terminal/reader_service.rb +33 -0
  63. data/lib/stripe/services/terminal_service.rb +2 -1
  64. data/lib/stripe/services/v1_services.rb +6 -1
  65. data/lib/stripe/services.rb +22 -0
  66. data/lib/stripe/stripe_configuration.rb +3 -1
  67. data/lib/stripe/util.rb +7 -1
  68. data/lib/stripe/version.rb +1 -1
  69. data/lib/stripe.rb +45 -0
  70. metadata +44 -3
data/OPENAPI_VERSION CHANGED
@@ -1 +1 @@
1
- v1318
1
+ v1319
data/VERSION CHANGED
@@ -1 +1 @@
1
- 13.1.0
1
+ 13.2.0-beta.1
@@ -14,6 +14,7 @@ module Stripe
14
14
  # object classes: The beginning of the section generated from our OpenAPI spec
15
15
  Account.object_name => Account,
16
16
  AccountLink.object_name => AccountLink,
17
+ AccountNotice.object_name => AccountNotice,
17
18
  AccountSession.object_name => AccountSession,
18
19
  ApplePayDomain.object_name => ApplePayDomain,
19
20
  ApplicationFee.object_name => ApplicationFee,
@@ -33,6 +34,9 @@ module Stripe
33
34
  BillingPortal::Configuration.object_name => BillingPortal::Configuration,
34
35
  BillingPortal::Session.object_name => BillingPortal::Session,
35
36
  Capability.object_name => Capability,
37
+ Capital::FinancingOffer.object_name => Capital::FinancingOffer,
38
+ Capital::FinancingSummary.object_name => Capital::FinancingSummary,
39
+ Capital::FinancingTransaction.object_name => Capital::FinancingTransaction,
36
40
  Card.object_name => Card,
37
41
  CashBalance.object_name => CashBalance,
38
42
  Charge.object_name => Charge,
@@ -59,22 +63,30 @@ module Stripe
59
63
  File.object_name => File,
60
64
  FileLink.object_name => FileLink,
61
65
  FinancialConnections::Account.object_name => FinancialConnections::Account,
66
+ FinancialConnections::AccountInferredBalance.object_name =>
67
+ FinancialConnections::AccountInferredBalance,
62
68
  FinancialConnections::AccountOwner.object_name => FinancialConnections::AccountOwner,
63
69
  FinancialConnections::AccountOwnership.object_name => FinancialConnections::AccountOwnership,
70
+ FinancialConnections::Institution.object_name => FinancialConnections::Institution,
64
71
  FinancialConnections::Session.object_name => FinancialConnections::Session,
65
72
  FinancialConnections::Transaction.object_name => FinancialConnections::Transaction,
66
73
  Forwarding::Request.object_name => Forwarding::Request,
67
74
  FundingInstructions.object_name => FundingInstructions,
75
+ GiftCards::Card.object_name => GiftCards::Card,
76
+ GiftCards::Transaction.object_name => GiftCards::Transaction,
68
77
  Identity::VerificationReport.object_name => Identity::VerificationReport,
69
78
  Identity::VerificationSession.object_name => Identity::VerificationSession,
70
79
  Invoice.object_name => Invoice,
71
80
  InvoiceItem.object_name => InvoiceItem,
72
81
  InvoiceLineItem.object_name => InvoiceLineItem,
82
+ InvoicePayment.object_name => InvoicePayment,
73
83
  InvoiceRenderingTemplate.object_name => InvoiceRenderingTemplate,
74
84
  Issuing::Authorization.object_name => Issuing::Authorization,
75
85
  Issuing::Card.object_name => Issuing::Card,
76
86
  Issuing::Cardholder.object_name => Issuing::Cardholder,
87
+ Issuing::CreditUnderwritingRecord.object_name => Issuing::CreditUnderwritingRecord,
77
88
  Issuing::Dispute.object_name => Issuing::Dispute,
89
+ Issuing::DisputeSettlementDetail.object_name => Issuing::DisputeSettlementDetail,
78
90
  Issuing::PersonalizationDesign.object_name => Issuing::PersonalizationDesign,
79
91
  Issuing::PhysicalBundle.object_name => Issuing::PhysicalBundle,
80
92
  Issuing::Token.object_name => Issuing::Token,
@@ -82,6 +94,8 @@ module Stripe
82
94
  LineItem.object_name => LineItem,
83
95
  LoginLink.object_name => LoginLink,
84
96
  Mandate.object_name => Mandate,
97
+ Margin.object_name => Margin,
98
+ Order.object_name => Order,
85
99
  PaymentIntent.object_name => PaymentIntent,
86
100
  PaymentLink.object_name => PaymentLink,
87
101
  PaymentMethod.object_name => PaymentMethod,
@@ -95,6 +109,8 @@ module Stripe
95
109
  ProductFeature.object_name => ProductFeature,
96
110
  PromotionCode.object_name => PromotionCode,
97
111
  Quote.object_name => Quote,
112
+ QuotePreviewInvoice.object_name => QuotePreviewInvoice,
113
+ QuotePreviewSubscriptionSchedule.object_name => QuotePreviewSubscriptionSchedule,
98
114
  Radar::EarlyFraudWarning.object_name => Radar::EarlyFraudWarning,
99
115
  Radar::ValueList.object_name => Radar::ValueList,
100
116
  Radar::ValueListItem.object_name => Radar::ValueListItem,
@@ -112,8 +128,10 @@ module Stripe
112
128
  Subscription.object_name => Subscription,
113
129
  SubscriptionItem.object_name => SubscriptionItem,
114
130
  SubscriptionSchedule.object_name => SubscriptionSchedule,
131
+ Tax::Association.object_name => Tax::Association,
115
132
  Tax::Calculation.object_name => Tax::Calculation,
116
133
  Tax::CalculationLineItem.object_name => Tax::CalculationLineItem,
134
+ Tax::Form.object_name => Tax::Form,
117
135
  Tax::Registration.object_name => Tax::Registration,
118
136
  Tax::Settings.object_name => Tax::Settings,
119
137
  Tax::Transaction.object_name => Tax::Transaction,
@@ -125,6 +143,7 @@ module Stripe
125
143
  Terminal::ConnectionToken.object_name => Terminal::ConnectionToken,
126
144
  Terminal::Location.object_name => Terminal::Location,
127
145
  Terminal::Reader.object_name => Terminal::Reader,
146
+ Terminal::ReaderCollectedData.object_name => Terminal::ReaderCollectedData,
128
147
  TestHelpers::TestClock.object_name => TestHelpers::TestClock,
129
148
  Token.object_name => Token,
130
149
  Topup.object_name => Topup,
@@ -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,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,86 @@ module Stripe
69
70
  )
70
71
  end
71
72
 
73
+ # Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.
74
+ #
75
+ # For Out of Band Payment, the payment is credited to the invoice immediately, increasing the amount_paid
76
+ # of the invoice and subsequently transitioning the status of the invoice to paid if necessary.
77
+ #
78
+ # For the PaymentIntent, when the PaymentIntent's status changes to succeeded, the payment is credited
79
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
80
+ # invoice's status becomes paid.
81
+ #
82
+ # If the PaymentIntent's status is already succeeded when it's attached, it's
83
+ # credited to the invoice immediately.
84
+ #
85
+ # See: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create) to learn more.
86
+ def attach_payment(params = {}, opts = {})
87
+ request_stripe_object(
88
+ method: :post,
89
+ path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(self["id"]) }),
90
+ params: params,
91
+ opts: opts
92
+ )
93
+ end
94
+
95
+ # Attaches a PaymentIntent or an Out of Band Payment to the invoice, adding it to the list of payments.
96
+ #
97
+ # For Out of Band Payment, the payment is credited to the invoice immediately, increasing the amount_paid
98
+ # of the invoice and subsequently transitioning the status of the invoice to paid if necessary.
99
+ #
100
+ # For the PaymentIntent, when the PaymentIntent's status changes to succeeded, the payment is credited
101
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
102
+ # invoice's status becomes paid.
103
+ #
104
+ # If the PaymentIntent's status is already succeeded when it's attached, it's
105
+ # credited to the invoice immediately.
106
+ #
107
+ # See: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create) to learn more.
108
+ def self.attach_payment(invoice, params = {}, opts = {})
109
+ request_stripe_object(
110
+ method: :post,
111
+ path: format("/v1/invoices/%<invoice>s/attach_payment", { invoice: CGI.escape(invoice) }),
112
+ params: params,
113
+ opts: opts
114
+ )
115
+ end
116
+
117
+ # Attaches a PaymentIntent to the invoice, adding it to the list of payments.
118
+ # When the PaymentIntent's status changes to succeeded, the payment is credited
119
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
120
+ # invoice's status becomes paid.
121
+ #
122
+ # If the PaymentIntent's status is already succeeded when it is attached, it is
123
+ # credited to the invoice immediately.
124
+ #
125
+ # Related guide: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create)
126
+ def attach_payment_intent(params = {}, opts = {})
127
+ request_stripe_object(
128
+ method: :post,
129
+ path: format("/v1/invoices/%<invoice>s/attach_payment_intent", { invoice: CGI.escape(self["id"]) }),
130
+ params: params,
131
+ opts: opts
132
+ )
133
+ end
134
+
135
+ # Attaches a PaymentIntent to the invoice, adding it to the list of payments.
136
+ # When the PaymentIntent's status changes to succeeded, the payment is credited
137
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
138
+ # invoice's status becomes paid.
139
+ #
140
+ # If the PaymentIntent's status is already succeeded when it is attached, it is
141
+ # credited to the invoice immediately.
142
+ #
143
+ # Related guide: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create)
144
+ def self.attach_payment_intent(invoice, params = {}, opts = {})
145
+ request_stripe_object(
146
+ method: :post,
147
+ path: format("/v1/invoices/%<invoice>s/attach_payment_intent", { invoice: CGI.escape(invoice) }),
148
+ params: params,
149
+ opts: opts
150
+ )
151
+ end
152
+
72
153
  # 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
154
  def self.create(params = {}, opts = {})
74
155
  request_stripe_object(method: :post, path: "/v1/invoices", params: params, opts: opts)
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # The invoice payment object
6
+ class InvoicePayment < APIResource
7
+ OBJECT_NAME = "invoice_payment"
8
+ def self.object_name
9
+ "invoice_payment"
10
+ end
11
+ end
12
+ end