stripe 10.10.0 → 10.11.0.pre.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +285 -40
  3. data/README.md +11 -0
  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 +23 -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/capital/financing_offer.rb +49 -0
  11. data/lib/stripe/resources/capital/financing_summary.rb +15 -0
  12. data/lib/stripe/resources/capital/financing_transaction.rb +27 -0
  13. data/lib/stripe/resources/confirmation_token.rb +16 -0
  14. data/lib/stripe/resources/customer.rb +11 -0
  15. data/lib/stripe/resources/customer_entitlement.rb +12 -0
  16. data/lib/stripe/resources/customer_entitlement_summary.rb +12 -0
  17. data/lib/stripe/resources/entitlements/event.rb +26 -0
  18. data/lib/stripe/resources/entitlements/feature.rb +38 -0
  19. data/lib/stripe/resources/financial_connections/account.rb +3 -0
  20. data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +14 -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 +53 -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/issuing/personalization_design.rb +119 -0
  27. data/lib/stripe/resources/issuing/physical_bundle.rb +26 -0
  28. data/lib/stripe/resources/margin.rb +37 -0
  29. data/lib/stripe/resources/order.rb +120 -0
  30. data/lib/stripe/resources/payment_intent.rb +50 -0
  31. data/lib/stripe/resources/quote.rb +104 -0
  32. data/lib/stripe/resources/quote_phase.rb +39 -0
  33. data/lib/stripe/resources/quote_preview_invoice.rb +43 -0
  34. data/lib/stripe/resources/quote_preview_subscription_schedule.rb +11 -0
  35. data/lib/stripe/resources/subscription_schedule.rb +20 -0
  36. data/lib/stripe/resources/tax/form.rb +49 -0
  37. data/lib/stripe/resources/terminal/reader.rb +60 -0
  38. data/lib/stripe/resources.rb +22 -0
  39. data/lib/stripe/stripe_client.rb +62 -28
  40. data/lib/stripe/stripe_configuration.rb +2 -1
  41. data/lib/stripe/util.rb +8 -1
  42. data/lib/stripe/version.rb +1 -1
  43. data/lib/stripe.rb +46 -0
  44. metadata +26 -3
@@ -16,6 +16,7 @@ module Stripe
16
16
  File.object_name_alt => File,
17
17
  Account.object_name => Account,
18
18
  AccountLink.object_name => AccountLink,
19
+ AccountNotice.object_name => AccountNotice,
19
20
  AccountSession.object_name => AccountSession,
20
21
  ApplePayDomain.object_name => ApplePayDomain,
21
22
  ApplicationFee.object_name => ApplicationFee,
@@ -27,6 +28,9 @@ module Stripe
27
28
  BillingPortal::Configuration.object_name => BillingPortal::Configuration,
28
29
  BillingPortal::Session.object_name => BillingPortal::Session,
29
30
  Capability.object_name => Capability,
31
+ Capital::FinancingOffer.object_name => Capital::FinancingOffer,
32
+ Capital::FinancingSummary.object_name => Capital::FinancingSummary,
33
+ Capital::FinancingTransaction.object_name => Capital::FinancingTransaction,
30
34
  Card.object_name => Card,
31
35
  CashBalance.object_name => CashBalance,
32
36
  Charge.object_name => Charge,
@@ -34,6 +38,7 @@ module Stripe
34
38
  Climate::Order.object_name => Climate::Order,
35
39
  Climate::Product.object_name => Climate::Product,
36
40
  Climate::Supplier.object_name => Climate::Supplier,
41
+ ConfirmationToken.object_name => ConfirmationToken,
37
42
  CountrySpec.object_name => CountrySpec,
38
43
  Coupon.object_name => Coupon,
39
44
  CreditNote.object_name => CreditNote,
@@ -41,35 +46,49 @@ module Stripe
41
46
  Customer.object_name => Customer,
42
47
  CustomerBalanceTransaction.object_name => CustomerBalanceTransaction,
43
48
  CustomerCashBalanceTransaction.object_name => CustomerCashBalanceTransaction,
49
+ CustomerEntitlement.object_name => CustomerEntitlement,
50
+ CustomerEntitlementSummary.object_name => CustomerEntitlementSummary,
44
51
  CustomerSession.object_name => CustomerSession,
45
52
  Discount.object_name => Discount,
46
53
  Dispute.object_name => Dispute,
54
+ Entitlements::Event.object_name => Entitlements::Event,
55
+ Entitlements::Feature.object_name => Entitlements::Feature,
47
56
  EphemeralKey.object_name => EphemeralKey,
48
57
  Event.object_name => Event,
49
58
  ExchangeRate.object_name => ExchangeRate,
50
59
  File.object_name => File,
51
60
  FileLink.object_name => FileLink,
52
61
  FinancialConnections::Account.object_name => FinancialConnections::Account,
62
+ FinancialConnections::AccountInferredBalance.object_name =>
63
+ FinancialConnections::AccountInferredBalance,
53
64
  FinancialConnections::AccountOwner.object_name => FinancialConnections::AccountOwner,
54
65
  FinancialConnections::AccountOwnership.object_name =>
55
66
  FinancialConnections::AccountOwnership,
56
67
  FinancialConnections::Session.object_name => FinancialConnections::Session,
57
68
  FinancialConnections::Transaction.object_name => FinancialConnections::Transaction,
58
69
  FundingInstructions.object_name => FundingInstructions,
70
+ GiftCards::Card.object_name => GiftCards::Card,
71
+ GiftCards::Transaction.object_name => GiftCards::Transaction,
59
72
  Identity::VerificationReport.object_name => Identity::VerificationReport,
60
73
  Identity::VerificationSession.object_name => Identity::VerificationSession,
61
74
  Invoice.object_name => Invoice,
62
75
  InvoiceItem.object_name => InvoiceItem,
63
76
  InvoiceLineItem.object_name => InvoiceLineItem,
77
+ InvoicePayment.object_name => InvoicePayment,
64
78
  Issuing::Authorization.object_name => Issuing::Authorization,
65
79
  Issuing::Card.object_name => Issuing::Card,
66
80
  Issuing::Cardholder.object_name => Issuing::Cardholder,
81
+ Issuing::CreditUnderwritingRecord.object_name => Issuing::CreditUnderwritingRecord,
67
82
  Issuing::Dispute.object_name => Issuing::Dispute,
83
+ Issuing::PersonalizationDesign.object_name => Issuing::PersonalizationDesign,
84
+ Issuing::PhysicalBundle.object_name => Issuing::PhysicalBundle,
68
85
  Issuing::Token.object_name => Issuing::Token,
69
86
  Issuing::Transaction.object_name => Issuing::Transaction,
70
87
  LineItem.object_name => LineItem,
71
88
  LoginLink.object_name => LoginLink,
72
89
  Mandate.object_name => Mandate,
90
+ Margin.object_name => Margin,
91
+ Order.object_name => Order,
73
92
  PaymentIntent.object_name => PaymentIntent,
74
93
  PaymentLink.object_name => PaymentLink,
75
94
  PaymentMethod.object_name => PaymentMethod,
@@ -82,6 +101,9 @@ module Stripe
82
101
  Product.object_name => Product,
83
102
  PromotionCode.object_name => PromotionCode,
84
103
  Quote.object_name => Quote,
104
+ QuotePhase.object_name => QuotePhase,
105
+ QuotePreviewInvoice.object_name => QuotePreviewInvoice,
106
+ QuotePreviewSubscriptionSchedule.object_name => QuotePreviewSubscriptionSchedule,
85
107
  Radar::EarlyFraudWarning.object_name => Radar::EarlyFraudWarning,
86
108
  Radar::ValueList.object_name => Radar::ValueList,
87
109
  Radar::ValueListItem.object_name => Radar::ValueListItem,
@@ -101,6 +123,7 @@ module Stripe
101
123
  SubscriptionSchedule.object_name => SubscriptionSchedule,
102
124
  Tax::Calculation.object_name => Tax::Calculation,
103
125
  Tax::CalculationLineItem.object_name => Tax::CalculationLineItem,
126
+ Tax::Form.object_name => Tax::Form,
104
127
  Tax::Registration.object_name => Tax::Registration,
105
128
  Tax::Settings.object_name => Tax::Settings,
106
129
  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,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
+ # Acknowledges that platform has received and delivered the financing_offer to
17
+ # the intended merchant recipient.
18
+ def mark_delivered(params = {}, opts = {})
19
+ request_stripe_object(
20
+ method: :post,
21
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(self["id"]) }),
22
+ params: params,
23
+ opts: opts
24
+ )
25
+ end
26
+
27
+ # Acknowledges that platform has received and delivered the financing_offer to
28
+ # the intended merchant recipient.
29
+ def self.mark_delivered(financing_offer, params = {}, opts = {})
30
+ request_stripe_object(
31
+ method: :post,
32
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(financing_offer) }),
33
+ params: params,
34
+ opts: opts
35
+ )
36
+ end
37
+
38
+ # Retrieves the financing offers available for Connected accounts that belong to your platform.
39
+ def self.list(filters = {}, opts = {})
40
+ request_stripe_object(
41
+ method: :get,
42
+ path: "/v1/capital/financing_offers",
43
+ params: filters,
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
@@ -0,0 +1,16 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # ConfirmationTokens help transport client side data collected by Stripe JS over
6
+ # to your server for confirming a PaymentIntent or SetupIntent. If the confirmation
7
+ # is successful, values present on the ConfirmationToken are written onto the Intent.
8
+ #
9
+ # To learn more or request access, visit the related guided: [Finalize payments on the server using Confirmation Tokens](https://stripe.com/docs/payments/finalize-payments-on-the-server-confirmation-tokens).
10
+ class ConfirmationToken < APIResource
11
+ OBJECT_NAME = "confirmation_token"
12
+ def self.object_name
13
+ "confirmation_token"
14
+ end
15
+ end
16
+ end
@@ -22,6 +22,7 @@ module Stripe
22
22
  nested_resource_class_methods :cash_balance_transaction, operations: %i[retrieve list]
23
23
  nested_resource_class_methods :source, operations: %i[create retrieve update delete list]
24
24
  nested_resource_class_methods :tax_id, operations: %i[create retrieve delete list]
25
+ nested_resource_class_methods :entitlement, operations: %i[list]
25
26
 
26
27
  # Retrieve funding instructions for a customer cash balance. If funding instructions do not yet exist for the customer, new
27
28
  # funding instructions will be created. If funding instructions have already been created for a given customer, the same
@@ -185,6 +186,16 @@ module Stripe
185
186
  )
186
187
  end
187
188
 
189
+ # Retrieve the entitlement summary for a customer
190
+ def self.retrieve_entitlement_summary(customer, params = {}, opts = {})
191
+ request_stripe_object(
192
+ method: :get,
193
+ path: format("/v1/customers/%<customer>s/entitlement_summary", { customer: CGI.escape(customer) }),
194
+ params: params,
195
+ opts: opts
196
+ )
197
+ end
198
+
188
199
  def test_helpers
189
200
  TestHelpers.new(self)
190
201
  end
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # A entitlement for a customer describes access to a feature.
6
+ class CustomerEntitlement < APIResource
7
+ OBJECT_NAME = "customer_entitlement"
8
+ def self.object_name
9
+ "customer_entitlement"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # A summary of a customer's entitlements.
6
+ class CustomerEntitlementSummary < APIResource
7
+ OBJECT_NAME = "customer_entitlement_summary"
8
+ def self.object_name
9
+ "customer_entitlement_summary"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,26 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Entitlements
6
+ # An entitlement event either grants or revokes an entitlement to a feature for a customer.
7
+ class Event < APIResource
8
+ extend Stripe::APIOperations::Create
9
+
10
+ OBJECT_NAME = "entitlements.event"
11
+ def self.object_name
12
+ "entitlements.event"
13
+ end
14
+
15
+ # Create an entitlement event manually, outside of the entitlement events automatically created by Stripe lifecycle events.
16
+ def self.create(params = {}, opts = {})
17
+ request_stripe_object(
18
+ method: :post,
19
+ path: "/v1/entitlements/events",
20
+ params: params,
21
+ opts: opts
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,38 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Entitlements
6
+ # A feature represents a monetizable ability or functionality in your system.
7
+ # Features can be assigned to products, and when those products are purchased, Stripe will create an entitlement to the feature for the purchasing customer.
8
+ class Feature < APIResource
9
+ extend Stripe::APIOperations::Create
10
+ extend Stripe::APIOperations::List
11
+
12
+ OBJECT_NAME = "entitlements.feature"
13
+ def self.object_name
14
+ "entitlements.feature"
15
+ end
16
+
17
+ # Creates a feature
18
+ def self.create(params = {}, opts = {})
19
+ request_stripe_object(
20
+ method: :post,
21
+ path: "/v1/entitlements/features",
22
+ params: params,
23
+ opts: opts
24
+ )
25
+ end
26
+
27
+ # Retrieve a list of features
28
+ def self.list(filters = {}, opts = {})
29
+ request_stripe_object(
30
+ method: :get,
31
+ path: "/v1/entitlements/features",
32
+ params: filters,
33
+ opts: opts
34
+ )
35
+ end
36
+ end
37
+ end
38
+ 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,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
+ # Validates a gift card code, returning the matching gift card object if it exists.
19
+ def self.validate(params = {}, opts = {})
20
+ request_stripe_object(
21
+ method: :post,
22
+ path: "/v1/gift_cards/cards/validate",
23
+ params: params,
24
+ opts: opts
25
+ )
26
+ end
27
+
28
+ # Creates a new gift card object.
29
+ def self.create(params = {}, opts = {})
30
+ request_stripe_object(
31
+ method: :post,
32
+ path: "/v1/gift_cards/cards",
33
+ params: params,
34
+ opts: opts
35
+ )
36
+ end
37
+
38
+ # List gift cards for an account
39
+ def self.list(filters = {}, opts = {})
40
+ request_stripe_object(
41
+ method: :get,
42
+ path: "/v1/gift_cards/cards",
43
+ params: filters,
44
+ opts: opts
45
+ )
46
+ end
47
+
48
+ # Update a gift card
49
+ def self.update(id, params = {}, opts = {})
50
+ request_stripe_object(
51
+ method: :post,
52
+ path: format("/v1/gift_cards/cards/%<id>s", { id: CGI.escape(id) }),
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
+ # Confirm a gift card transaction
33
+ def confirm(params = {}, opts = {})
34
+ request_stripe_object(
35
+ method: :post,
36
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(self["id"]) }),
37
+ params: params,
38
+ opts: opts
39
+ )
40
+ end
41
+
42
+ # Cancel a gift card transaction
43
+ def self.cancel(id, params = {}, opts = {})
44
+ request_stripe_object(
45
+ method: :post,
46
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(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