stripe 8.7.0 → 9.0.0.pre.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +477 -301
  3. data/OPENAPI_VERSION +1 -1
  4. data/README.md +11 -0
  5. data/VERSION +1 -1
  6. data/lib/stripe/api_operations/request.rb +2 -0
  7. data/lib/stripe/api_version.rb +2 -1
  8. data/lib/stripe/object_types.rb +18 -0
  9. data/lib/stripe/request_signing_authenticator.rb +83 -0
  10. data/lib/stripe/resources/account_session.rb +17 -0
  11. data/lib/stripe/resources/capital/financing_offer.rb +32 -0
  12. data/lib/stripe/resources/capital/financing_summary.rb +12 -0
  13. data/lib/stripe/resources/capital/financing_transaction.rb +13 -0
  14. data/lib/stripe/resources/customer_session.rb +12 -0
  15. data/lib/stripe/resources/financial_connections/account.rb +39 -0
  16. data/lib/stripe/resources/financial_connections/inferred_balance.rb +13 -0
  17. data/lib/stripe/resources/financial_connections/transaction.rb +13 -0
  18. data/lib/stripe/resources/gift_cards/card.rb +25 -0
  19. data/lib/stripe/resources/gift_cards/transaction.rb +56 -0
  20. data/lib/stripe/resources/issuing/card.rb +18 -0
  21. data/lib/stripe/resources/issuing/card_bundle.rb +13 -0
  22. data/lib/stripe/resources/issuing/card_design.rb +58 -0
  23. data/lib/stripe/resources/order.rb +89 -0
  24. data/lib/stripe/resources/payment_method_configuration.rb +13 -0
  25. data/lib/stripe/resources/quote.rb +131 -0
  26. data/lib/stripe/resources/quote_phase.rb +29 -0
  27. data/lib/stripe/resources/quote_preview_invoice.rb +40 -0
  28. data/lib/stripe/resources/quote_preview_schedule.rb +8 -0
  29. data/lib/stripe/resources/subscription_schedule.rb +18 -0
  30. data/lib/stripe/resources/tax/form.rb +39 -0
  31. data/lib/stripe/resources/tax/registration.rb +19 -0
  32. data/lib/stripe/resources/terminal/reader.rb +54 -0
  33. data/lib/stripe/resources.rb +18 -0
  34. data/lib/stripe/stripe_client.rb +60 -26
  35. data/lib/stripe/stripe_configuration.rb +3 -0
  36. data/lib/stripe/util.rb +8 -1
  37. data/lib/stripe/version.rb +1 -1
  38. data/lib/stripe/webhook.rb +2 -1
  39. data/lib/stripe.rb +47 -0
  40. metadata +23 -4
data/OPENAPI_VERSION CHANGED
@@ -1 +1 @@
1
- v457
1
+ v482
data/README.md CHANGED
@@ -323,6 +323,17 @@ If your beta feature requires a `Stripe-Version` header to be sent, use the `Str
323
323
  Stripe.api_version += "; feature_beta=v3"
324
324
  ```
325
325
 
326
+ ### Custom requests
327
+
328
+ If you would like to send a request to an undocumented API (for example you are in a private beta), or if you prefer to bypass the method definitions in the library and specify your request details directly, you can use the `raw_request` method on `Stripe`.
329
+
330
+ ```ruby
331
+ resp = Stripe.raw_request(:post, "/v1/beta_endpoint", {param: 123}, {stripe_version: "2022-11-15; feature_beta=v3"})
332
+
333
+ # (Optional) resp is a StripeResponse. You can use `Stripe.deserialize` to get a StripeObject.
334
+ deserialized_resp = Stripe.deserialize(resp.http_body)
335
+ ```
336
+
326
337
  ## Support
327
338
 
328
339
  New features and bug fixes are released on the latest major version of the Stripe Ruby library. If you are on an older major version, we recommend that you upgrade to the latest in order to use the new features and bug fixes including those for security vulnerabilities. Older major versions of the package will continue to be available for use, but will not be receiving any updates.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 8.7.0
1
+ 9.0.0-beta.1
@@ -47,6 +47,7 @@ module Stripe
47
47
  api_key = headers.delete(:api_key)
48
48
  api_base = headers.delete(:api_base)
49
49
  client = headers.delete(:client)
50
+ api_mode = headers.delete(:api_mode)
50
51
  # Assume all remaining opts must be headers
51
52
 
52
53
  resp, opts[:api_key] = client.send(
@@ -54,6 +55,7 @@ module Stripe
54
55
  method, url,
55
56
  api_base: api_base, api_key: api_key,
56
57
  headers: headers, params: params,
58
+ api_mode: api_mode,
57
59
  &read_body_chunk_block
58
60
  )
59
61
 
@@ -3,6 +3,7 @@
3
3
 
4
4
  module Stripe
5
5
  module ApiVersion
6
- CURRENT = "2022-11-15"
6
+ CURRENT = "2023-08-16"
7
+ PREVIEW = "2023-08-11.preview-v2"
7
8
  end
8
9
  end
@@ -14,6 +14,7 @@ module Stripe
14
14
  # business objects
15
15
  Account::OBJECT_NAME => Account,
16
16
  AccountLink::OBJECT_NAME => AccountLink,
17
+ AccountSession::OBJECT_NAME => AccountSession,
17
18
  ApplePayDomain::OBJECT_NAME => ApplePayDomain,
18
19
  ApplicationFee::OBJECT_NAME => ApplicationFee,
19
20
  ApplicationFeeRefund::OBJECT_NAME => ApplicationFeeRefund,
@@ -24,6 +25,9 @@ module Stripe
24
25
  BillingPortal::Configuration::OBJECT_NAME => BillingPortal::Configuration,
25
26
  BillingPortal::Session::OBJECT_NAME => BillingPortal::Session,
26
27
  Capability::OBJECT_NAME => Capability,
28
+ Capital::FinancingOffer::OBJECT_NAME => Capital::FinancingOffer,
29
+ Capital::FinancingSummary::OBJECT_NAME => Capital::FinancingSummary,
30
+ Capital::FinancingTransaction::OBJECT_NAME => Capital::FinancingTransaction,
27
31
  Card::OBJECT_NAME => Card,
28
32
  CashBalance::OBJECT_NAME => CashBalance,
29
33
  Charge::OBJECT_NAME => Charge,
@@ -35,6 +39,7 @@ module Stripe
35
39
  Customer::OBJECT_NAME => Customer,
36
40
  CustomerBalanceTransaction::OBJECT_NAME => CustomerBalanceTransaction,
37
41
  CustomerCashBalanceTransaction::OBJECT_NAME => CustomerCashBalanceTransaction,
42
+ CustomerSession::OBJECT_NAME => CustomerSession,
38
43
  Discount::OBJECT_NAME => Discount,
39
44
  Dispute::OBJECT_NAME => Dispute,
40
45
  EphemeralKey::OBJECT_NAME => EphemeralKey,
@@ -47,8 +52,12 @@ module Stripe
47
52
  FinancialConnections::AccountOwner::OBJECT_NAME => FinancialConnections::AccountOwner,
48
53
  FinancialConnections::AccountOwnership::OBJECT_NAME =>
49
54
  FinancialConnections::AccountOwnership,
55
+ FinancialConnections::InferredBalance::OBJECT_NAME => FinancialConnections::InferredBalance,
50
56
  FinancialConnections::Session::OBJECT_NAME => FinancialConnections::Session,
57
+ FinancialConnections::Transaction::OBJECT_NAME => FinancialConnections::Transaction,
51
58
  FundingInstructions::OBJECT_NAME => FundingInstructions,
59
+ GiftCards::Card::OBJECT_NAME => GiftCards::Card,
60
+ GiftCards::Transaction::OBJECT_NAME => GiftCards::Transaction,
52
61
  Identity::VerificationReport::OBJECT_NAME => Identity::VerificationReport,
53
62
  Identity::VerificationSession::OBJECT_NAME => Identity::VerificationSession,
54
63
  Invoice::OBJECT_NAME => Invoice,
@@ -56,15 +65,19 @@ module Stripe
56
65
  InvoiceLineItem::OBJECT_NAME => InvoiceLineItem,
57
66
  Issuing::Authorization::OBJECT_NAME => Issuing::Authorization,
58
67
  Issuing::Card::OBJECT_NAME => Issuing::Card,
68
+ Issuing::CardBundle::OBJECT_NAME => Issuing::CardBundle,
69
+ Issuing::CardDesign::OBJECT_NAME => Issuing::CardDesign,
59
70
  Issuing::Cardholder::OBJECT_NAME => Issuing::Cardholder,
60
71
  Issuing::Dispute::OBJECT_NAME => Issuing::Dispute,
61
72
  Issuing::Transaction::OBJECT_NAME => Issuing::Transaction,
62
73
  LineItem::OBJECT_NAME => LineItem,
63
74
  LoginLink::OBJECT_NAME => LoginLink,
64
75
  Mandate::OBJECT_NAME => Mandate,
76
+ Order::OBJECT_NAME => Order,
65
77
  PaymentIntent::OBJECT_NAME => PaymentIntent,
66
78
  PaymentLink::OBJECT_NAME => PaymentLink,
67
79
  PaymentMethod::OBJECT_NAME => PaymentMethod,
80
+ PaymentMethodConfiguration::OBJECT_NAME => PaymentMethodConfiguration,
68
81
  Payout::OBJECT_NAME => Payout,
69
82
  Person::OBJECT_NAME => Person,
70
83
  Plan::OBJECT_NAME => Plan,
@@ -72,6 +85,9 @@ module Stripe
72
85
  Product::OBJECT_NAME => Product,
73
86
  PromotionCode::OBJECT_NAME => PromotionCode,
74
87
  Quote::OBJECT_NAME => Quote,
88
+ QuotePhase::OBJECT_NAME => QuotePhase,
89
+ QuotePreviewInvoice::OBJECT_NAME => QuotePreviewInvoice,
90
+ QuotePreviewSchedule::OBJECT_NAME => QuotePreviewSchedule,
75
91
  Radar::EarlyFraudWarning::OBJECT_NAME => Radar::EarlyFraudWarning,
76
92
  Radar::ValueList::OBJECT_NAME => Radar::ValueList,
77
93
  Radar::ValueListItem::OBJECT_NAME => Radar::ValueListItem,
@@ -91,6 +107,8 @@ module Stripe
91
107
  SubscriptionSchedule::OBJECT_NAME => SubscriptionSchedule,
92
108
  Tax::Calculation::OBJECT_NAME => Tax::Calculation,
93
109
  Tax::CalculationLineItem::OBJECT_NAME => Tax::CalculationLineItem,
110
+ Tax::Form::OBJECT_NAME => Tax::Form,
111
+ Tax::Registration::OBJECT_NAME => Tax::Registration,
94
112
  Tax::Settings::OBJECT_NAME => Tax::Settings,
95
113
  Tax::Transaction::OBJECT_NAME => Tax::Transaction,
96
114
  Tax::TransactionLineItem::OBJECT_NAME => Tax::TransactionLineItem,
@@ -0,0 +1,83 @@
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
+ unless auth_token.is_a?(String)
17
+ raise ArgumentError, "auth_token must be a string"
18
+ end
19
+ unless sign_lambda.is_a?(Proc)
20
+ raise ArgumentError, "sign_lambda must be a lambda"
21
+ end
22
+
23
+ @auth_token = auth_token
24
+ @sign_lambda = sign_lambda
25
+ end
26
+
27
+ def authenticate(method, headers, body)
28
+ covered_headers = [CONTENT_TYPE_HEADER_NAME,
29
+ CONTENT_DIGEST_HEADER_NAME,
30
+ STRIPE_CONTEXT_HEADER_NAME,
31
+ STRIPE_ACCOUNT_HEADER_NAME,
32
+ AUTHORIZATION_HEADER_NAME,]
33
+
34
+ headers[AUTHORIZATION_HEADER_NAME] = "STRIPE-V2-SIG #{auth_token}"
35
+
36
+ if method == :get
37
+ covered_headers -= [CONTENT_TYPE_HEADER_NAME,
38
+ CONTENT_DIGEST_HEADER_NAME,]
39
+ else
40
+ content = body || ""
41
+ headers[CONTENT_DIGEST_HEADER_NAME] =
42
+ %(sha-256=:#{content_digest(content)}:)
43
+ end
44
+
45
+ covered_headers_formatted = covered_headers
46
+ .map { |string| %("#{string.downcase}") }
47
+ .join(" ")
48
+
49
+ signature_input = "(#{covered_headers_formatted});created=#{created_time}"
50
+
51
+ inputs = covered_headers
52
+ .map { |header| %("#{header.downcase}": #{headers[header]}) }
53
+ .join("\n")
54
+
55
+ signature_base = %(#{inputs}\n"@signature-params": #{signature_input})
56
+ .encode(Encoding::UTF_8)
57
+
58
+ headers[SIGNATURE_INPUT_HEADER_NAME] = "sig1=#{signature_input}"
59
+
60
+ headers[SIGNATURE_HEADER_NAME] =
61
+ "sig1=:#{encoded_signature(signature_base)}:"
62
+ end
63
+
64
+ private def sign(signature_base)
65
+ @sign_lambda.call(signature_base)
66
+ end
67
+
68
+ private def encoded_signature(signature_base)
69
+ Base64.strict_encode64(sign(signature_base))
70
+ rescue StandardError
71
+ raise AuthenticationError, "Encountered '#{e.message} (#{e.class})' "\
72
+ "when calculating request signature."
73
+ end
74
+
75
+ private def content_digest(content)
76
+ Base64.strict_encode64(OpenSSL::Digest.new("SHA256").digest(content))
77
+ end
78
+
79
+ private def created_time
80
+ Time.now.to_i
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,17 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # An AccountSession allows a Connect platform to grant access to a connected account in Connect embedded components.
6
+ #
7
+ # We recommend that you create an AccountSession each time you need to display an embedded component
8
+ # to your user. Do not save AccountSessions to your database as they expire relatively
9
+ # quickly, and cannot be used more than once.
10
+ #
11
+ # Related guide: [Connect embedded components](https://stripe.com/docs/connect/get-started-connect-embedded-components)
12
+ class AccountSession < APIResource
13
+ extend Stripe::APIOperations::Create
14
+
15
+ OBJECT_NAME = "account_session"
16
+ end
17
+ end
@@ -0,0 +1,32 @@
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
+
13
+ def mark_delivered(params = {}, opts = {})
14
+ request_stripe_object(
15
+ method: :post,
16
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(self["id"]) }),
17
+ params: params,
18
+ opts: opts
19
+ )
20
+ end
21
+
22
+ def self.mark_delivered(financing_offer, params = {}, opts = {})
23
+ request_stripe_object(
24
+ method: :post,
25
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(financing_offer) }),
26
+ params: params,
27
+ opts: opts
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,12 @@
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
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
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
+ end
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # A customer session allows you to grant client access to Stripe's frontend SDKs (like StripeJs)
6
+ # control over a customer.
7
+ class CustomerSession < APIResource
8
+ extend Stripe::APIOperations::Create
9
+
10
+ OBJECT_NAME = "customer_session"
11
+ end
12
+ end
@@ -6,9 +6,12 @@ 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
 
13
+ nested_resource_class_methods :inferred_balance, operations: %i[list]
14
+
12
15
  def disconnect(params = {}, opts = {})
13
16
  request_stripe_object(
14
17
  method: :post,
@@ -36,6 +39,24 @@ module Stripe
36
39
  )
37
40
  end
38
41
 
42
+ def subscribe(params = {}, opts = {})
43
+ request_stripe_object(
44
+ method: :post,
45
+ path: format("/v1/financial_connections/accounts/%<account>s/subscribe", { account: CGI.escape(self["id"]) }),
46
+ params: params,
47
+ opts: opts
48
+ )
49
+ end
50
+
51
+ def unsubscribe(params = {}, opts = {})
52
+ request_stripe_object(
53
+ method: :post,
54
+ path: format("/v1/financial_connections/accounts/%<account>s/unsubscribe", { account: CGI.escape(self["id"]) }),
55
+ params: params,
56
+ opts: opts
57
+ )
58
+ end
59
+
39
60
  def self.disconnect(account, params = {}, opts = {})
40
61
  request_stripe_object(
41
62
  method: :post,
@@ -62,6 +83,24 @@ module Stripe
62
83
  opts: opts
63
84
  )
64
85
  end
86
+
87
+ def self.subscribe(account, params = {}, opts = {})
88
+ request_stripe_object(
89
+ method: :post,
90
+ path: format("/v1/financial_connections/accounts/%<account>s/subscribe", { account: CGI.escape(account) }),
91
+ params: params,
92
+ opts: opts
93
+ )
94
+ end
95
+
96
+ def self.unsubscribe(account, params = {}, opts = {})
97
+ request_stripe_object(
98
+ method: :post,
99
+ path: format("/v1/financial_connections/accounts/%<account>s/unsubscribe", { account: CGI.escape(account) }),
100
+ params: params,
101
+ opts: opts
102
+ )
103
+ end
65
104
  end
66
105
  end
67
106
  end
@@ -0,0 +1,13 @@
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 InferredBalance < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "financial_connections.account_inferred_balance"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module FinancialConnections
6
+ # A Transaction represents a real transaction that affects a Financial Connections Account balance.
7
+ class Transaction < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "financial_connections.transaction"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
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
+
15
+ def self.validate(params = {}, opts = {})
16
+ request_stripe_object(
17
+ method: :post,
18
+ path: "/v1/gift_cards/cards/validate",
19
+ params: params,
20
+ opts: opts
21
+ )
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,56 @@
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
+
19
+ def cancel(params = {}, opts = {})
20
+ request_stripe_object(
21
+ method: :post,
22
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(self["id"]) }),
23
+ params: params,
24
+ opts: opts
25
+ )
26
+ end
27
+
28
+ def confirm(params = {}, opts = {})
29
+ request_stripe_object(
30
+ method: :post,
31
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(self["id"]) }),
32
+ params: params,
33
+ opts: opts
34
+ )
35
+ end
36
+
37
+ def self.cancel(id, params = {}, opts = {})
38
+ request_stripe_object(
39
+ method: :post,
40
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(id) }),
41
+ params: params,
42
+ opts: opts
43
+ )
44
+ end
45
+
46
+ def self.confirm(id, params = {}, opts = {})
47
+ request_stripe_object(
48
+ method: :post,
49
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(id) }),
50
+ params: params,
51
+ opts: opts
52
+ )
53
+ end
54
+ end
55
+ end
56
+ end
@@ -54,6 +54,15 @@ module Stripe
54
54
  )
55
55
  end
56
56
 
57
+ def self.submit_card(card, params = {}, opts = {})
58
+ request_stripe_object(
59
+ method: :post,
60
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/submit", { card: CGI.escape(card) }),
61
+ params: params,
62
+ opts: opts
63
+ )
64
+ end
65
+
57
66
  def deliver_card(params = {}, opts = {})
58
67
  @resource.request_stripe_object(
59
68
  method: :post,
@@ -89,6 +98,15 @@ module Stripe
89
98
  opts: opts
90
99
  )
91
100
  end
101
+
102
+ def submit_card(params = {}, opts = {})
103
+ @resource.request_stripe_object(
104
+ method: :post,
105
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/submit", { card: CGI.escape(@resource["id"]) }),
106
+ params: params,
107
+ opts: opts
108
+ )
109
+ end
92
110
  end
93
111
  end
94
112
  end
@@ -0,0 +1,13 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Issuing
6
+ # A Card Bundle represents the bundle of physical items - card stock, carrier letter, and envelope - that is shipped to a cardholder when you create a physical card.
7
+ class CardBundle < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "issuing.card_bundle"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,58 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Issuing
6
+ # A Card Design is a logical grouping of a Card Bundle, card logo, and carrier text that represents a product line.
7
+ class CardDesign < APIResource
8
+ extend Stripe::APIOperations::List
9
+ include Stripe::APIOperations::Save
10
+
11
+ OBJECT_NAME = "issuing.card_design"
12
+
13
+ def test_helpers
14
+ TestHelpers.new(self)
15
+ end
16
+
17
+ class TestHelpers < APIResourceTestHelpers
18
+ RESOURCE_CLASS = CardDesign
19
+
20
+ def self.activate_testmode(card_design, params = {}, opts = {})
21
+ request_stripe_object(
22
+ method: :post,
23
+ path: format("/v1/test_helpers/issuing/card_designs/%<card_design>s/status/activate", { card_design: CGI.escape(card_design) }),
24
+ params: params,
25
+ opts: opts
26
+ )
27
+ end
28
+
29
+ def self.deactivate_testmode(card_design, params = {}, opts = {})
30
+ request_stripe_object(
31
+ method: :post,
32
+ path: format("/v1/test_helpers/issuing/card_designs/%<card_design>s/status/deactivate", { card_design: CGI.escape(card_design) }),
33
+ params: params,
34
+ opts: opts
35
+ )
36
+ end
37
+
38
+ def activate_testmode(params = {}, opts = {})
39
+ @resource.request_stripe_object(
40
+ method: :post,
41
+ path: format("/v1/test_helpers/issuing/card_designs/%<card_design>s/status/activate", { card_design: CGI.escape(@resource["id"]) }),
42
+ params: params,
43
+ opts: opts
44
+ )
45
+ end
46
+
47
+ def deactivate_testmode(params = {}, opts = {})
48
+ @resource.request_stripe_object(
49
+ method: :post,
50
+ path: format("/v1/test_helpers/issuing/card_designs/%<card_design>s/status/deactivate", { card_design: CGI.escape(@resource["id"]) }),
51
+ params: params,
52
+ opts: opts
53
+ )
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,89 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # An Order describes a purchase being made by a customer, including the
6
+ # products & quantities being purchased, the order status, the payment information,
7
+ # and the billing/shipping details.
8
+ #
9
+ # Related guide: [Orders overview](https://stripe.com/docs/orders)
10
+ class Order < APIResource
11
+ extend Stripe::APIOperations::Create
12
+ extend Stripe::APIOperations::List
13
+ include Stripe::APIOperations::Save
14
+
15
+ OBJECT_NAME = "order"
16
+
17
+ def cancel(params = {}, opts = {})
18
+ request_stripe_object(
19
+ method: :post,
20
+ path: format("/v1/orders/%<id>s/cancel", { id: CGI.escape(self["id"]) }),
21
+ params: params,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ def list_line_items(params = {}, opts = {})
27
+ request_stripe_object(
28
+ method: :get,
29
+ path: format("/v1/orders/%<id>s/line_items", { id: CGI.escape(self["id"]) }),
30
+ params: params,
31
+ opts: opts
32
+ )
33
+ end
34
+
35
+ def reopen(params = {}, opts = {})
36
+ request_stripe_object(
37
+ method: :post,
38
+ path: format("/v1/orders/%<id>s/reopen", { id: CGI.escape(self["id"]) }),
39
+ params: params,
40
+ opts: opts
41
+ )
42
+ end
43
+
44
+ def submit(params = {}, opts = {})
45
+ request_stripe_object(
46
+ method: :post,
47
+ path: format("/v1/orders/%<id>s/submit", { id: CGI.escape(self["id"]) }),
48
+ params: params,
49
+ opts: opts
50
+ )
51
+ end
52
+
53
+ def self.cancel(id, params = {}, opts = {})
54
+ request_stripe_object(
55
+ method: :post,
56
+ path: format("/v1/orders/%<id>s/cancel", { id: CGI.escape(id) }),
57
+ params: params,
58
+ opts: opts
59
+ )
60
+ end
61
+
62
+ def self.list_line_items(id, params = {}, opts = {})
63
+ request_stripe_object(
64
+ method: :get,
65
+ path: format("/v1/orders/%<id>s/line_items", { id: CGI.escape(id) }),
66
+ params: params,
67
+ opts: opts
68
+ )
69
+ end
70
+
71
+ def self.reopen(id, params = {}, opts = {})
72
+ request_stripe_object(
73
+ method: :post,
74
+ path: format("/v1/orders/%<id>s/reopen", { id: CGI.escape(id) }),
75
+ params: params,
76
+ opts: opts
77
+ )
78
+ end
79
+
80
+ def self.submit(id, params = {}, opts = {})
81
+ request_stripe_object(
82
+ method: :post,
83
+ path: format("/v1/orders/%<id>s/submit", { id: CGI.escape(id) }),
84
+ params: params,
85
+ opts: opts
86
+ )
87
+ end
88
+ end
89
+ end