stripe 10.5.0 → 10.6.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 +255 -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 +20 -0
  8. data/lib/stripe/request_signing_authenticator.rb +79 -0
  9. data/lib/stripe/resources/account_notice.rb +14 -0
  10. data/lib/stripe/resources/capital/financing_offer.rb +36 -0
  11. data/lib/stripe/resources/capital/financing_summary.rb +12 -0
  12. data/lib/stripe/resources/capital/financing_transaction.rb +13 -0
  13. data/lib/stripe/resources/confirmation_token.rb +13 -0
  14. data/lib/stripe/resources/customer_session.rb +12 -0
  15. data/lib/stripe/resources/financial_connections/account.rb +3 -0
  16. data/lib/stripe/resources/financial_connections/account_inferred_balance.rb +13 -0
  17. data/lib/stripe/resources/gift_cards/card.rb +26 -0
  18. data/lib/stripe/resources/gift_cards/transaction.rb +60 -0
  19. data/lib/stripe/resources/invoice.rb +39 -0
  20. data/lib/stripe/resources/invoice_payment.rb +11 -0
  21. data/lib/stripe/resources/issuing/credit_underwriting_record.rb +75 -0
  22. data/lib/stripe/resources/issuing/personalization_design.rb +83 -0
  23. data/lib/stripe/resources/issuing/physical_bundle.rb +13 -0
  24. data/lib/stripe/resources/margin.rb +14 -0
  25. data/lib/stripe/resources/order.rb +97 -0
  26. data/lib/stripe/resources/quote.rb +104 -0
  27. data/lib/stripe/resources/quote_phase.rb +31 -0
  28. data/lib/stripe/resources/quote_preview_invoice.rb +42 -0
  29. data/lib/stripe/resources/quote_preview_subscription_schedule.rb +10 -0
  30. data/lib/stripe/resources/subscription_schedule.rb +20 -0
  31. data/lib/stripe/resources/tax/form.rb +41 -0
  32. data/lib/stripe/resources/terminal/reader.rb +60 -0
  33. data/lib/stripe/resources.rb +19 -0
  34. data/lib/stripe/stripe_client.rb +62 -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 +46 -0
  39. metadata +23 -3
@@ -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,14 @@
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
+ end
14
+ end
@@ -0,0 +1,36 @@
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
+ # Acknowledges that platform has received and delivered the financing_offer to
14
+ # the intended merchant recipient.
15
+ def mark_delivered(params = {}, opts = {})
16
+ request_stripe_object(
17
+ method: :post,
18
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(self["id"]) }),
19
+ params: params,
20
+ opts: opts
21
+ )
22
+ end
23
+
24
+ # Acknowledges that platform has received and delivered the financing_offer to
25
+ # the intended merchant recipient.
26
+ def self.mark_delivered(financing_offer, params = {}, opts = {})
27
+ request_stripe_object(
28
+ method: :post,
29
+ path: format("/v1/capital/financing_offers/%<financing_offer>s/mark_delivered", { financing_offer: CGI.escape(financing_offer) }),
30
+ params: params,
31
+ opts: opts
32
+ )
33
+ end
34
+ end
35
+ end
36
+ 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,13 @@
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
+ 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
  # 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).
13
16
  def disconnect(params = {}, opts = {})
14
17
  request_stripe_object(
@@ -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 AccountInferredBalance < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "financial_connections.account_inferred_balance"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
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
+ # Validates a gift card code, returning the matching gift card object if it exists.
16
+ def self.validate(params = {}, opts = {})
17
+ request_stripe_object(
18
+ method: :post,
19
+ path: "/v1/gift_cards/cards/validate",
20
+ params: params,
21
+ opts: opts
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,60 @@
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
+ # Cancel a gift card transaction
20
+ def cancel(params = {}, opts = {})
21
+ request_stripe_object(
22
+ method: :post,
23
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(self["id"]) }),
24
+ params: params,
25
+ opts: opts
26
+ )
27
+ end
28
+
29
+ # Confirm a gift card transaction
30
+ def confirm(params = {}, opts = {})
31
+ request_stripe_object(
32
+ method: :post,
33
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(self["id"]) }),
34
+ params: params,
35
+ opts: opts
36
+ )
37
+ end
38
+
39
+ # Cancel a gift card transaction
40
+ def self.cancel(id, params = {}, opts = {})
41
+ request_stripe_object(
42
+ method: :post,
43
+ path: format("/v1/gift_cards/transactions/%<id>s/cancel", { id: CGI.escape(id) }),
44
+ params: params,
45
+ opts: opts
46
+ )
47
+ end
48
+
49
+ # Confirm a gift card transaction
50
+ def self.confirm(id, params = {}, opts = {})
51
+ request_stripe_object(
52
+ method: :post,
53
+ path: format("/v1/gift_cards/transactions/%<id>s/confirm", { id: CGI.escape(id) }),
54
+ params: params,
55
+ opts: opts
56
+ )
57
+ end
58
+ end
59
+ end
60
+ end
@@ -40,9 +40,30 @@ module Stripe
40
40
  extend Stripe::APIOperations::List
41
41
  extend Stripe::APIOperations::Search
42
42
  include Stripe::APIOperations::Save
43
+ extend Stripe::APIOperations::NestedResource
43
44
 
44
45
  OBJECT_NAME = "invoice"
45
46
 
47
+ nested_resource_class_methods :payment, operations: %i[retrieve list]
48
+
49
+ # Attaches a PaymentIntent to the invoice, adding it to the list of payments.
50
+ # When the PaymentIntent's status changes to succeeded, the payment is credited
51
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
52
+ # invoice's status becomes paid.
53
+ #
54
+ # If the PaymentIntent's status is already succeeded when it is attached, it is
55
+ # credited to the invoice immediately.
56
+ #
57
+ # Related guide: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create)
58
+ def attach_payment_intent(params = {}, opts = {})
59
+ request_stripe_object(
60
+ method: :post,
61
+ path: format("/v1/invoices/%<invoice>s/attach_payment_intent", { invoice: CGI.escape(self["id"]) }),
62
+ params: params,
63
+ opts: opts
64
+ )
65
+ end
66
+
46
67
  # Stripe automatically finalizes drafts before sending and attempting payment on invoices. However, if you'd like to finalize a draft invoice manually, you can do so using this method.
47
68
  def finalize_invoice(params = {}, opts = {})
48
69
  request_stripe_object(
@@ -95,6 +116,24 @@ module Stripe
95
116
  )
96
117
  end
97
118
 
119
+ # Attaches a PaymentIntent to the invoice, adding it to the list of payments.
120
+ # When the PaymentIntent's status changes to succeeded, the payment is credited
121
+ # to the invoice, increasing its amount_paid. When the invoice is fully paid, the
122
+ # invoice's status becomes paid.
123
+ #
124
+ # If the PaymentIntent's status is already succeeded when it is attached, it is
125
+ # credited to the invoice immediately.
126
+ #
127
+ # Related guide: [Create an invoice payment](https://stripe.com/docs/invoicing/payments/create)
128
+ def self.attach_payment_intent(invoice, params = {}, opts = {})
129
+ request_stripe_object(
130
+ method: :post,
131
+ path: format("/v1/invoices/%<invoice>s/attach_payment_intent", { invoice: CGI.escape(invoice) }),
132
+ params: params,
133
+ opts: opts
134
+ )
135
+ end
136
+
98
137
  # Stripe automatically finalizes drafts before sending and attempting payment on invoices. However, if you'd like to finalize a draft invoice manually, you can do so using this method.
99
138
  def self.finalize_invoice(invoice, params = {}, opts = {})
100
139
  request_stripe_object(
@@ -0,0 +1,11 @@
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
+ extend Stripe::APIOperations::List
8
+
9
+ OBJECT_NAME = "invoice_payment"
10
+ end
11
+ end
@@ -0,0 +1,75 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Issuing
6
+ # Every time an applicant submits an application for a Charge Card product your platform offers, or every time your platform takes a proactive credit decision on an existing account, you must record the decision by creating a new `CreditUnderwritingRecord` object on a connected account.
7
+ #
8
+ # [Follow the guide](https://stripe.com/docs/issuing/credit/report-credit-decisions-and-manage-aans) to learn about your requirements as a platform.
9
+ class CreditUnderwritingRecord < APIResource
10
+ extend Stripe::APIOperations::List
11
+
12
+ OBJECT_NAME = "issuing.credit_underwriting_record"
13
+
14
+ # Update a CreditUnderwritingRecord object to correct mistakes.
15
+ def correct(params = {}, opts = {})
16
+ request_stripe_object(
17
+ method: :post,
18
+ path: format("/v1/issuing/credit_underwriting_records/%<credit_underwriting_record>s/correct", { credit_underwriting_record: CGI.escape(self["id"]) }),
19
+ params: params,
20
+ opts: opts
21
+ )
22
+ end
23
+
24
+ # Update a CreditUnderwritingRecord object from a decision made on a credit application.
25
+ def report_decision(params = {}, opts = {})
26
+ request_stripe_object(
27
+ method: :post,
28
+ path: format("/v1/issuing/credit_underwriting_records/%<credit_underwriting_record>s/report_decision", { credit_underwriting_record: CGI.escape(self["id"]) }),
29
+ params: params,
30
+ opts: opts
31
+ )
32
+ end
33
+
34
+ # Update a CreditUnderwritingRecord object to correct mistakes.
35
+ def self.correct(credit_underwriting_record, params = {}, opts = {})
36
+ request_stripe_object(
37
+ method: :post,
38
+ path: format("/v1/issuing/credit_underwriting_records/%<credit_underwriting_record>s/correct", { credit_underwriting_record: CGI.escape(credit_underwriting_record) }),
39
+ params: params,
40
+ opts: opts
41
+ )
42
+ end
43
+
44
+ # Creates a CreditUnderwritingRecord object with information about a credit application submission.
45
+ def self.create_from_application(params = {}, opts = {})
46
+ request_stripe_object(
47
+ method: :post,
48
+ path: "/v1/issuing/credit_underwriting_records/create_from_application",
49
+ params: params,
50
+ opts: opts
51
+ )
52
+ end
53
+
54
+ # Creates a CreditUnderwritingRecord object from an underwriting decision coming from a proactive review of an existing accountholder.
55
+ def self.create_from_proactive_review(params = {}, opts = {})
56
+ request_stripe_object(
57
+ method: :post,
58
+ path: "/v1/issuing/credit_underwriting_records/create_from_proactive_review",
59
+ params: params,
60
+ opts: opts
61
+ )
62
+ end
63
+
64
+ # Update a CreditUnderwritingRecord object from a decision made on a credit application.
65
+ def self.report_decision(credit_underwriting_record, params = {}, opts = {})
66
+ request_stripe_object(
67
+ method: :post,
68
+ path: format("/v1/issuing/credit_underwriting_records/%<credit_underwriting_record>s/report_decision", { credit_underwriting_record: CGI.escape(credit_underwriting_record) }),
69
+ params: params,
70
+ opts: opts
71
+ )
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,83 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ module Issuing
6
+ # A Personalization Design is a logical grouping of a Physical Bundle, card logo, and carrier text that represents a product line.
7
+ class PersonalizationDesign < APIResource
8
+ extend Stripe::APIOperations::Create
9
+ extend Stripe::APIOperations::List
10
+ include Stripe::APIOperations::Save
11
+
12
+ OBJECT_NAME = "issuing.personalization_design"
13
+
14
+ def test_helpers
15
+ TestHelpers.new(self)
16
+ end
17
+
18
+ class TestHelpers < APIResourceTestHelpers
19
+ RESOURCE_CLASS = PersonalizationDesign
20
+
21
+ # Updates the status of the specified testmode personalization design object to active.
22
+ def self.activate(personalization_design, params = {}, opts = {})
23
+ request_stripe_object(
24
+ method: :post,
25
+ path: format("/v1/test_helpers/issuing/personalization_designs/%<personalization_design>s/activate", { personalization_design: CGI.escape(personalization_design) }),
26
+ params: params,
27
+ opts: opts
28
+ )
29
+ end
30
+
31
+ # Updates the status of the specified testmode personalization design object to inactive.
32
+ def self.deactivate(personalization_design, params = {}, opts = {})
33
+ request_stripe_object(
34
+ method: :post,
35
+ path: format("/v1/test_helpers/issuing/personalization_designs/%<personalization_design>s/deactivate", { personalization_design: CGI.escape(personalization_design) }),
36
+ params: params,
37
+ opts: opts
38
+ )
39
+ end
40
+
41
+ # Updates the status of the specified testmode personalization design object to rejected.
42
+ def self.reject(personalization_design, params = {}, opts = {})
43
+ request_stripe_object(
44
+ method: :post,
45
+ path: format("/v1/test_helpers/issuing/personalization_designs/%<personalization_design>s/reject", { personalization_design: CGI.escape(personalization_design) }),
46
+ params: params,
47
+ opts: opts
48
+ )
49
+ end
50
+
51
+ # Updates the status of the specified testmode personalization design object to active.
52
+ def activate(params = {}, opts = {})
53
+ @resource.request_stripe_object(
54
+ method: :post,
55
+ path: format("/v1/test_helpers/issuing/personalization_designs/%<personalization_design>s/activate", { personalization_design: CGI.escape(@resource["id"]) }),
56
+ params: params,
57
+ opts: opts
58
+ )
59
+ end
60
+
61
+ # Updates the status of the specified testmode personalization design object to inactive.
62
+ def deactivate(params = {}, opts = {})
63
+ @resource.request_stripe_object(
64
+ method: :post,
65
+ path: format("/v1/test_helpers/issuing/personalization_designs/%<personalization_design>s/deactivate", { personalization_design: CGI.escape(@resource["id"]) }),
66
+ params: params,
67
+ opts: opts
68
+ )
69
+ end
70
+
71
+ # Updates the status of the specified testmode personalization design object to rejected.
72
+ def reject(params = {}, opts = {})
73
+ @resource.request_stripe_object(
74
+ method: :post,
75
+ path: format("/v1/test_helpers/issuing/personalization_designs/%<personalization_design>s/reject", { personalization_design: CGI.escape(@resource["id"]) }),
76
+ params: params,
77
+ opts: opts
78
+ )
79
+ end
80
+ end
81
+ end
82
+ end
83
+ 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 Physical 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 PhysicalBundle < APIResource
8
+ extend Stripe::APIOperations::List
9
+
10
+ OBJECT_NAME = "issuing.physical_bundle"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # File generated from our OpenAPI spec
2
+ # frozen_string_literal: true
3
+
4
+ module Stripe
5
+ # A (partner) margin represents a specific discount distributed in partner reseller programs to business partners who
6
+ # resell products and services and earn a discount (margin) for doing so.
7
+ class Margin < APIResource
8
+ extend Stripe::APIOperations::Create
9
+ extend Stripe::APIOperations::List
10
+ include Stripe::APIOperations::Save
11
+
12
+ OBJECT_NAME = "margin"
13
+ end
14
+ end
@@ -0,0 +1,97 @@
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
+ # Cancels the order as well as the payment intent if one is attached.
18
+ def cancel(params = {}, opts = {})
19
+ request_stripe_object(
20
+ method: :post,
21
+ path: format("/v1/orders/%<id>s/cancel", { id: CGI.escape(self["id"]) }),
22
+ params: params,
23
+ opts: opts
24
+ )
25
+ end
26
+
27
+ # When retrieving an order, there is an includable line_items property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.
28
+ def list_line_items(params = {}, opts = {})
29
+ request_stripe_object(
30
+ method: :get,
31
+ path: format("/v1/orders/%<id>s/line_items", { id: CGI.escape(self["id"]) }),
32
+ params: params,
33
+ opts: opts
34
+ )
35
+ end
36
+
37
+ # Reopens a submitted order.
38
+ def reopen(params = {}, opts = {})
39
+ request_stripe_object(
40
+ method: :post,
41
+ path: format("/v1/orders/%<id>s/reopen", { id: CGI.escape(self["id"]) }),
42
+ params: params,
43
+ opts: opts
44
+ )
45
+ end
46
+
47
+ # Submitting an Order transitions the status to processing and creates a PaymentIntent object so the order can be paid. If the Order has an amount_total of 0, no PaymentIntent object will be created. Once the order is submitted, its contents cannot be changed, unless the [reopen](https://stripe.com/docs/api#reopen_order) method is called.
48
+ def submit(params = {}, opts = {})
49
+ request_stripe_object(
50
+ method: :post,
51
+ path: format("/v1/orders/%<id>s/submit", { id: CGI.escape(self["id"]) }),
52
+ params: params,
53
+ opts: opts
54
+ )
55
+ end
56
+
57
+ # Cancels the order as well as the payment intent if one is attached.
58
+ def self.cancel(id, params = {}, opts = {})
59
+ request_stripe_object(
60
+ method: :post,
61
+ path: format("/v1/orders/%<id>s/cancel", { id: CGI.escape(id) }),
62
+ params: params,
63
+ opts: opts
64
+ )
65
+ end
66
+
67
+ # When retrieving an order, there is an includable line_items property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.
68
+ def self.list_line_items(id, params = {}, opts = {})
69
+ request_stripe_object(
70
+ method: :get,
71
+ path: format("/v1/orders/%<id>s/line_items", { id: CGI.escape(id) }),
72
+ params: params,
73
+ opts: opts
74
+ )
75
+ end
76
+
77
+ # Reopens a submitted order.
78
+ def self.reopen(id, params = {}, opts = {})
79
+ request_stripe_object(
80
+ method: :post,
81
+ path: format("/v1/orders/%<id>s/reopen", { id: CGI.escape(id) }),
82
+ params: params,
83
+ opts: opts
84
+ )
85
+ end
86
+
87
+ # Submitting an Order transitions the status to processing and creates a PaymentIntent object so the order can be paid. If the Order has an amount_total of 0, no PaymentIntent object will be created. Once the order is submitted, its contents cannot be changed, unless the [reopen](https://stripe.com/docs/api#reopen_order) method is called.
88
+ def self.submit(id, params = {}, opts = {})
89
+ request_stripe_object(
90
+ method: :post,
91
+ path: format("/v1/orders/%<id>s/submit", { id: CGI.escape(id) }),
92
+ params: params,
93
+ opts: opts
94
+ )
95
+ end
96
+ end
97
+ end