stripe 5.55.0 → 8.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +122 -2
  3. data/Gemfile +1 -0
  4. data/Makefile +1 -1
  5. data/OPENAPI_VERSION +1 -0
  6. data/README.md +37 -3
  7. data/VERSION +1 -1
  8. data/lib/data/ca-certificates.crt +1241 -1937
  9. data/lib/stripe/api_operations/create.rb +6 -2
  10. data/lib/stripe/api_operations/delete.rb +12 -7
  11. data/lib/stripe/api_operations/list.rb +6 -9
  12. data/lib/stripe/api_operations/nested_resource.rb +62 -34
  13. data/lib/stripe/api_operations/request.rb +10 -0
  14. data/lib/stripe/api_operations/save.rb +11 -3
  15. data/lib/stripe/api_operations/search.rb +6 -9
  16. data/lib/stripe/api_resource.rb +1 -1
  17. data/lib/stripe/api_resource_test_helpers.rb +2 -0
  18. data/lib/stripe/api_version.rb +8 -0
  19. data/lib/stripe/instrumentation.rb +45 -7
  20. data/lib/stripe/object_types.rb +12 -10
  21. data/lib/stripe/resources/account.rb +36 -9
  22. data/lib/stripe/resources/account_link.rb +4 -0
  23. data/lib/stripe/resources/application_fee_refund.rb +5 -0
  24. data/lib/stripe/resources/apps/secret.rb +40 -0
  25. data/lib/stripe/resources/balance.rb +11 -0
  26. data/lib/stripe/resources/balance_transaction.rb +4 -0
  27. data/lib/stripe/resources/bank_account.rb +7 -0
  28. data/lib/stripe/resources/billing_portal/configuration.rb +1 -0
  29. data/lib/stripe/resources/billing_portal/session.rb +14 -0
  30. data/lib/stripe/resources/capability.rb +3 -0
  31. data/lib/stripe/resources/card.rb +6 -3
  32. data/lib/stripe/resources/cash_balance.rb +1 -0
  33. data/lib/stripe/resources/charge.rb +15 -3
  34. data/lib/stripe/resources/checkout/session.rb +41 -5
  35. data/lib/stripe/resources/country_spec.rb +6 -0
  36. data/lib/stripe/resources/coupon.rb +3 -0
  37. data/lib/stripe/resources/credit_note.rb +27 -9
  38. data/lib/stripe/resources/customer.rb +109 -19
  39. data/lib/stripe/resources/customer_balance_transaction.rb +6 -0
  40. data/lib/stripe/resources/customer_cash_balance_transaction.rb +14 -0
  41. data/lib/stripe/resources/discount.rb +4 -0
  42. data/lib/stripe/resources/dispute.rb +17 -3
  43. data/lib/stripe/resources/event.rb +29 -0
  44. data/lib/stripe/resources/exchange_rate.rb +11 -0
  45. data/lib/stripe/resources/file.rb +7 -0
  46. data/lib/stripe/resources/file_link.rb +3 -0
  47. data/lib/stripe/resources/financial_connections/account.rb +42 -6
  48. data/lib/stripe/resources/financial_connections/account_ownership.rb +1 -0
  49. data/lib/stripe/resources/financial_connections/session.rb +1 -0
  50. data/lib/stripe/resources/funding_instructions.rb +5 -0
  51. data/lib/stripe/resources/identity/verification_report.rb +11 -0
  52. data/lib/stripe/resources/identity/verification_session.rb +31 -5
  53. data/lib/stripe/resources/invoice.rb +96 -17
  54. data/lib/stripe/resources/invoice_item.rb +11 -0
  55. data/lib/stripe/resources/issuing/authorization.rb +25 -5
  56. data/lib/stripe/resources/issuing/card.rb +78 -8
  57. data/lib/stripe/resources/issuing/cardholder.rb +3 -0
  58. data/lib/stripe/resources/issuing/dispute.rb +13 -3
  59. data/lib/stripe/resources/issuing/transaction.rb +5 -0
  60. data/lib/stripe/resources/line_item.rb +1 -0
  61. data/lib/stripe/resources/mandate.rb +1 -0
  62. data/lib/stripe/resources/payment_intent.rb +71 -13
  63. data/lib/stripe/resources/payment_link.rb +15 -3
  64. data/lib/stripe/resources/payment_method.rb +25 -5
  65. data/lib/stripe/resources/payout.rb +28 -5
  66. data/lib/stripe/resources/person.rb +6 -0
  67. data/lib/stripe/resources/plan.rb +8 -0
  68. data/lib/stripe/resources/price.rb +6 -0
  69. data/lib/stripe/resources/product.rb +8 -0
  70. data/lib/stripe/resources/promotion_code.rb +2 -0
  71. data/lib/stripe/resources/quote.rb +52 -11
  72. data/lib/stripe/resources/radar/early_fraud_warning.rb +4 -0
  73. data/lib/stripe/resources/radar/value_list.rb +3 -0
  74. data/lib/stripe/resources/radar/value_list_item.rb +3 -0
  75. data/lib/stripe/resources/refund.rb +24 -5
  76. data/lib/stripe/resources/reporting/report_run.rb +8 -0
  77. data/lib/stripe/resources/reporting/report_type.rb +8 -1
  78. data/lib/stripe/resources/reversal.rb +13 -0
  79. data/lib/stripe/resources/review.rb +14 -3
  80. data/lib/stripe/resources/setup_attempt.rb +4 -0
  81. data/lib/stripe/resources/setup_intent.rb +52 -7
  82. data/lib/stripe/resources/shipping_rate.rb +3 -0
  83. data/lib/stripe/resources/sigma/scheduled_query_run.rb +4 -0
  84. data/lib/stripe/resources/source.rb +26 -6
  85. data/lib/stripe/resources/source_transaction.rb +4 -0
  86. data/lib/stripe/resources/subscription.rb +48 -3
  87. data/lib/stripe/resources/subscription_item.rb +2 -7
  88. data/lib/stripe/resources/subscription_schedule.rb +23 -5
  89. data/lib/stripe/resources/tax_code.rb +1 -0
  90. data/lib/stripe/resources/tax_id.rb +4 -0
  91. data/lib/stripe/resources/tax_rate.rb +3 -0
  92. data/lib/stripe/resources/terminal/configuration.rb +1 -0
  93. data/lib/stripe/resources/terminal/connection_token.rb +3 -0
  94. data/lib/stripe/resources/terminal/location.rb +3 -0
  95. data/lib/stripe/resources/terminal/reader.rb +70 -11
  96. data/lib/stripe/resources/test_helpers/test_clock.rb +13 -3
  97. data/lib/stripe/resources/token.rb +22 -0
  98. data/lib/stripe/resources/topup.rb +15 -3
  99. data/lib/stripe/resources/transfer.rb +10 -11
  100. data/lib/stripe/resources/treasury/credit_reversal.rb +14 -0
  101. data/lib/stripe/resources/treasury/debit_reversal.rb +14 -0
  102. data/lib/stripe/resources/treasury/financial_account.rb +52 -0
  103. data/lib/stripe/resources/treasury/inbound_transfer.rb +94 -0
  104. data/lib/stripe/resources/treasury/outbound_payment.rb +96 -0
  105. data/lib/stripe/resources/treasury/outbound_transfer.rb +100 -0
  106. data/lib/stripe/resources/treasury/received_credit.rb +30 -0
  107. data/lib/stripe/resources/treasury/received_debit.rb +30 -0
  108. data/lib/stripe/resources/treasury/transaction.rb +13 -0
  109. data/lib/stripe/resources/treasury/transaction_entry.rb +17 -0
  110. data/lib/stripe/resources/usage_record.rb +4 -0
  111. data/lib/stripe/resources/webhook_endpoint.rb +7 -0
  112. data/lib/stripe/resources.rb +12 -10
  113. data/lib/stripe/stripe_client.rb +25 -17
  114. data/lib/stripe/stripe_object.rb +2 -2
  115. data/lib/stripe/util.rb +38 -3
  116. data/lib/stripe/version.rb +1 -1
  117. metadata +17 -11
  118. data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
  119. data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
  120. data/lib/stripe/resources/issuing/card_details.rb +0 -10
  121. data/lib/stripe/resources/order.rb +0 -33
  122. data/lib/stripe/resources/order_return.rb +0 -10
  123. data/lib/stripe/resources/recipient.rb +0 -14
  124. data/lib/stripe/resources/sku.rb +0 -13
  125. data/lib/stripe/resources/three_d_secure.rb +0 -14
@@ -3,6 +3,17 @@
3
3
 
4
4
  module Stripe
5
5
  module Identity
6
+ # A VerificationReport is the result of an attempt to collect and verify data from a user.
7
+ # The collection of verification checks performed is determined from the `type` and `options`
8
+ # parameters used. You can find the result of each verification check performed in the
9
+ # appropriate sub-resource: `document`, `id_number`, `selfie`.
10
+ #
11
+ # Each VerificationReport contains a copy of any data collected by the user as well as
12
+ # reference IDs which can be used to access collected images through the [FileUpload](https://stripe.com/docs/api/files)
13
+ # API. To configure and create VerificationReports, use the
14
+ # [VerificationSession](https://stripe.com/docs/api/identity/verification_sessions) API.
15
+ #
16
+ # Related guides: [Accessing verification results](https://stripe.com/docs/identity/verification-sessions#results).
6
17
  class VerificationReport < APIResource
7
18
  extend Stripe::APIOperations::List
8
19
 
@@ -3,6 +3,17 @@
3
3
 
4
4
  module Stripe
5
5
  module Identity
6
+ # A VerificationSession guides you through the process of collecting and verifying the identities
7
+ # of your users. It contains details about the type of verification, such as what [verification
8
+ # check](https://stripe.com/docs/identity/verification-checks) to perform. Only create one VerificationSession for
9
+ # each verification in your system.
10
+ #
11
+ # A VerificationSession transitions through [multiple
12
+ # statuses](https://stripe.com/docs/identity/how-sessions-work) throughout its lifetime as it progresses through
13
+ # the verification flow. The VerificationSession contains the user's verified data after
14
+ # verification checks are complete.
15
+ #
16
+ # Related guide: [The Verification Sessions API](https://stripe.com/docs/identity/verification-sessions)
6
17
  class VerificationSession < APIResource
7
18
  extend Stripe::APIOperations::Create
8
19
  extend Stripe::APIOperations::List
@@ -10,13 +21,10 @@ module Stripe
10
21
 
11
22
  OBJECT_NAME = "identity.verification_session"
12
23
 
13
- custom_method :cancel, http_verb: :post
14
- custom_method :redact, http_verb: :post
15
-
16
24
  def cancel(params = {}, opts = {})
17
25
  request_stripe_object(
18
26
  method: :post,
19
- path: resource_url + "/cancel",
27
+ path: format("/v1/identity/verification_sessions/%<session>s/cancel", { session: CGI.escape(self["id"]) }),
20
28
  params: params,
21
29
  opts: opts
22
30
  )
@@ -25,7 +33,25 @@ module Stripe
25
33
  def redact(params = {}, opts = {})
26
34
  request_stripe_object(
27
35
  method: :post,
28
- path: resource_url + "/redact",
36
+ path: format("/v1/identity/verification_sessions/%<session>s/redact", { session: CGI.escape(self["id"]) }),
37
+ params: params,
38
+ opts: opts
39
+ )
40
+ end
41
+
42
+ def self.cancel(session, params = {}, opts = {})
43
+ request_stripe_object(
44
+ method: :post,
45
+ path: format("/v1/identity/verification_sessions/%<session>s/cancel", { session: CGI.escape(session) }),
46
+ params: params,
47
+ opts: opts
48
+ )
49
+ end
50
+
51
+ def self.redact(session, params = {}, opts = {})
52
+ request_stripe_object(
53
+ method: :post,
54
+ path: format("/v1/identity/verification_sessions/%<session>s/redact", { session: CGI.escape(session) }),
29
55
  params: params,
30
56
  opts: opts
31
57
  )
@@ -2,6 +2,38 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Invoices are statements of amounts owed by a customer, and are either
6
+ # generated one-off, or generated periodically from a subscription.
7
+ #
8
+ # They contain [invoice items](https://stripe.com/docs/api#invoiceitems), and proration adjustments
9
+ # that may be caused by subscription upgrades/downgrades (if necessary).
10
+ #
11
+ # If your invoice is configured to be billed through automatic charges,
12
+ # Stripe automatically finalizes your invoice and attempts payment. Note
13
+ # that finalizing the invoice,
14
+ # [when automatic](https://stripe.com/docs/billing/invoices/workflow/#auto_advance), does
15
+ # not happen immediately as the invoice is created. Stripe waits
16
+ # until one hour after the last webhook was successfully sent (or the last
17
+ # webhook timed out after failing). If you (and the platforms you may have
18
+ # connected to) have no webhooks configured, Stripe waits one hour after
19
+ # creation to finalize the invoice.
20
+ #
21
+ # If your invoice is configured to be billed by sending an email, then based on your
22
+ # [email settings](https://dashboard.stripe.com/account/billing/automatic),
23
+ # Stripe will email the invoice to your customer and await payment. These
24
+ # emails can contain a link to a hosted page to pay the invoice.
25
+ #
26
+ # Stripe applies any customer credit on the account before determining the
27
+ # amount due for the invoice (i.e., the amount that will be actually
28
+ # charged). If the amount due for the invoice is less than Stripe's [minimum allowed charge
29
+ # per currency](https://stripe.com/docs/currencies#minimum-and-maximum-charge-amounts), the
30
+ # invoice is automatically marked paid, and we add the amount due to the
31
+ # customer's credit balance which is applied to the next invoice.
32
+ #
33
+ # More details on the customer's credit balance are
34
+ # [here](https://stripe.com/docs/billing/customer/balance).
35
+ #
36
+ # Related guide: [Send Invoices to Customers](https://stripe.com/docs/billing/invoices/sending).
5
37
  class Invoice < APIResource
6
38
  extend Stripe::APIOperations::Create
7
39
  include Stripe::APIOperations::Delete
@@ -11,16 +43,10 @@ module Stripe
11
43
 
12
44
  OBJECT_NAME = "invoice"
13
45
 
14
- custom_method :finalize_invoice, http_verb: :post, http_path: "finalize"
15
- custom_method :mark_uncollectible, http_verb: :post
16
- custom_method :pay, http_verb: :post
17
- custom_method :send_invoice, http_verb: :post, http_path: "send"
18
- custom_method :void_invoice, http_verb: :post, http_path: "void"
19
-
20
46
  def finalize_invoice(params = {}, opts = {})
21
47
  request_stripe_object(
22
48
  method: :post,
23
- path: resource_url + "/finalize",
49
+ path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(self["id"]) }),
24
50
  params: params,
25
51
  opts: opts
26
52
  )
@@ -29,7 +55,7 @@ module Stripe
29
55
  def mark_uncollectible(params = {}, opts = {})
30
56
  request_stripe_object(
31
57
  method: :post,
32
- path: resource_url + "/mark_uncollectible",
58
+ path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(self["id"]) }),
33
59
  params: params,
34
60
  opts: opts
35
61
  )
@@ -38,7 +64,7 @@ module Stripe
38
64
  def pay(params = {}, opts = {})
39
65
  request_stripe_object(
40
66
  method: :post,
41
- path: resource_url + "/pay",
67
+ path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(self["id"]) }),
42
68
  params: params,
43
69
  opts: opts
44
70
  )
@@ -47,7 +73,7 @@ module Stripe
47
73
  def send_invoice(params = {}, opts = {})
48
74
  request_stripe_object(
49
75
  method: :post,
50
- path: resource_url + "/send",
76
+ path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(self["id"]) }),
51
77
  params: params,
52
78
  opts: opts
53
79
  )
@@ -56,20 +82,73 @@ module Stripe
56
82
  def void_invoice(params = {}, opts = {})
57
83
  request_stripe_object(
58
84
  method: :post,
59
- path: resource_url + "/void",
85
+ path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(self["id"]) }),
86
+ params: params,
87
+ opts: opts
88
+ )
89
+ end
90
+
91
+ def self.finalize_invoice(invoice, params = {}, opts = {})
92
+ request_stripe_object(
93
+ method: :post,
94
+ path: format("/v1/invoices/%<invoice>s/finalize", { invoice: CGI.escape(invoice) }),
95
+ params: params,
96
+ opts: opts
97
+ )
98
+ end
99
+
100
+ def self.list_upcoming_line_items(params = {}, opts = {})
101
+ request_stripe_object(
102
+ method: :get,
103
+ path: "/v1/invoices/upcoming/lines",
104
+ params: params,
105
+ opts: opts
106
+ )
107
+ end
108
+
109
+ def self.mark_uncollectible(invoice, params = {}, opts = {})
110
+ request_stripe_object(
111
+ method: :post,
112
+ path: format("/v1/invoices/%<invoice>s/mark_uncollectible", { invoice: CGI.escape(invoice) }),
113
+ params: params,
114
+ opts: opts
115
+ )
116
+ end
117
+
118
+ def self.pay(invoice, params = {}, opts = {})
119
+ request_stripe_object(
120
+ method: :post,
121
+ path: format("/v1/invoices/%<invoice>s/pay", { invoice: CGI.escape(invoice) }),
122
+ params: params,
123
+ opts: opts
124
+ )
125
+ end
126
+
127
+ def self.send_invoice(invoice, params = {}, opts = {})
128
+ request_stripe_object(
129
+ method: :post,
130
+ path: format("/v1/invoices/%<invoice>s/send", { invoice: CGI.escape(invoice) }),
60
131
  params: params,
61
132
  opts: opts
62
133
  )
63
134
  end
64
135
 
65
- def self.upcoming(params, opts = {})
66
- resp, opts = execute_resource_request(:get, resource_url + "/upcoming", params, opts)
67
- Util.convert_to_stripe_object(resp.data, opts)
136
+ def self.upcoming(params = {}, opts = {})
137
+ request_stripe_object(
138
+ method: :get,
139
+ path: "/v1/invoices/upcoming",
140
+ params: params,
141
+ opts: opts
142
+ )
68
143
  end
69
144
 
70
- def self.list_upcoming_line_items(params, opts = {})
71
- resp, opts = execute_resource_request(:get, resource_url + "/upcoming/lines", params, opts)
72
- Util.convert_to_stripe_object(resp.data, opts)
145
+ def self.void_invoice(invoice, params = {}, opts = {})
146
+ request_stripe_object(
147
+ method: :post,
148
+ path: format("/v1/invoices/%<invoice>s/void", { invoice: CGI.escape(invoice) }),
149
+ params: params,
150
+ opts: opts
151
+ )
73
152
  end
74
153
 
75
154
  def self.search(params = {}, opts = {})
@@ -2,6 +2,17 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # Invoice Items represent the component lines of an [invoice](https://stripe.com/docs/api/invoices). An invoice item is added to an
6
+ # invoice by creating or updating it with an `invoice` field, at which point it will be included as
7
+ # [an invoice line item](https://stripe.com/docs/api/invoices/line_item) within
8
+ # [invoice.lines](https://stripe.com/docs/api/invoices/object#invoice_object-lines).
9
+ #
10
+ # Invoice Items can be created before you are ready to actually send the invoice. This can be particularly useful when combined
11
+ # with a [subscription](https://stripe.com/docs/api/subscriptions). Sometimes you want to add a charge or credit to a customer, but actually charge
12
+ # or credit the customer's card only at the end of a regular billing cycle. This is useful for combining several charges
13
+ # (to minimize per-transaction fees), or for having Stripe tabulate your usage-based billing totals.
14
+ #
15
+ # Related guides: [Integrate with the Invoicing API](https://stripe.com/docs/invoicing/integration), [Subscription Invoices](https://stripe.com/docs/billing/invoices/subscription#adding-upcoming-invoice-items).
5
16
  class InvoiceItem < APIResource
6
17
  extend Stripe::APIOperations::Create
7
18
  include Stripe::APIOperations::Delete
@@ -3,19 +3,21 @@
3
3
 
4
4
  module Stripe
5
5
  module Issuing
6
+ # When an [issued card](https://stripe.com/docs/issuing) is used to make a purchase, an Issuing `Authorization`
7
+ # object is created. [Authorizations](https://stripe.com/docs/issuing/purchases/authorizations) must be approved for the
8
+ # purchase to be completed successfully.
9
+ #
10
+ # Related guide: [Issued Card Authorizations](https://stripe.com/docs/issuing/purchases/authorizations).
6
11
  class Authorization < APIResource
7
12
  extend Stripe::APIOperations::List
8
13
  include Stripe::APIOperations::Save
9
14
 
10
15
  OBJECT_NAME = "issuing.authorization"
11
16
 
12
- custom_method :approve, http_verb: :post
13
- custom_method :decline, http_verb: :post
14
-
15
17
  def approve(params = {}, opts = {})
16
18
  request_stripe_object(
17
19
  method: :post,
18
- path: resource_url + "/approve",
20
+ path: format("/v1/issuing/authorizations/%<authorization>s/approve", { authorization: CGI.escape(self["id"]) }),
19
21
  params: params,
20
22
  opts: opts
21
23
  )
@@ -24,7 +26,25 @@ module Stripe
24
26
  def decline(params = {}, opts = {})
25
27
  request_stripe_object(
26
28
  method: :post,
27
- path: resource_url + "/decline",
29
+ path: format("/v1/issuing/authorizations/%<authorization>s/decline", { authorization: CGI.escape(self["id"]) }),
30
+ params: params,
31
+ opts: opts
32
+ )
33
+ end
34
+
35
+ def self.approve(authorization, params = {}, opts = {})
36
+ request_stripe_object(
37
+ method: :post,
38
+ path: format("/v1/issuing/authorizations/%<authorization>s/approve", { authorization: CGI.escape(authorization) }),
39
+ params: params,
40
+ opts: opts
41
+ )
42
+ end
43
+
44
+ def self.decline(authorization, params = {}, opts = {})
45
+ request_stripe_object(
46
+ method: :post,
47
+ path: format("/v1/issuing/authorizations/%<authorization>s/decline", { authorization: CGI.escape(authorization) }),
28
48
  params: params,
29
49
  opts: opts
30
50
  )
@@ -3,6 +3,7 @@
3
3
 
4
4
  module Stripe
5
5
  module Issuing
6
+ # You can [create physical or virtual cards](https://stripe.com/docs/issuing/cards) that are issued to cardholders.
6
7
  class Card < APIResource
7
8
  extend Stripe::APIOperations::Create
8
9
  extend Stripe::APIOperations::List
@@ -10,15 +11,84 @@ module Stripe
10
11
 
11
12
  OBJECT_NAME = "issuing.card"
12
13
 
13
- custom_method :details, http_verb: :get
14
+ def test_helpers
15
+ TestHelpers.new(self)
16
+ end
17
+
18
+ class TestHelpers < APIResourceTestHelpers
19
+ RESOURCE_CLASS = Card
20
+
21
+ def self.deliver_card(card, params = {}, opts = {})
22
+ request_stripe_object(
23
+ method: :post,
24
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/deliver", { card: CGI.escape(card) }),
25
+ params: params,
26
+ opts: opts
27
+ )
28
+ end
29
+
30
+ def self.fail_card(card, params = {}, opts = {})
31
+ request_stripe_object(
32
+ method: :post,
33
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/fail", { card: CGI.escape(card) }),
34
+ params: params,
35
+ opts: opts
36
+ )
37
+ end
38
+
39
+ def self.return_card(card, params = {}, opts = {})
40
+ request_stripe_object(
41
+ method: :post,
42
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/return", { card: CGI.escape(card) }),
43
+ params: params,
44
+ opts: opts
45
+ )
46
+ end
47
+
48
+ def self.ship_card(card, params = {}, opts = {})
49
+ request_stripe_object(
50
+ method: :post,
51
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/ship", { card: CGI.escape(card) }),
52
+ params: params,
53
+ opts: opts
54
+ )
55
+ end
56
+
57
+ def deliver_card(params = {}, opts = {})
58
+ @resource.request_stripe_object(
59
+ method: :post,
60
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/deliver", { card: CGI.escape(@resource["id"]) }),
61
+ params: params,
62
+ opts: opts
63
+ )
64
+ end
65
+
66
+ def fail_card(params = {}, opts = {})
67
+ @resource.request_stripe_object(
68
+ method: :post,
69
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/fail", { card: CGI.escape(@resource["id"]) }),
70
+ params: params,
71
+ opts: opts
72
+ )
73
+ end
74
+
75
+ def return_card(params = {}, opts = {})
76
+ @resource.request_stripe_object(
77
+ method: :post,
78
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/return", { card: CGI.escape(@resource["id"]) }),
79
+ params: params,
80
+ opts: opts
81
+ )
82
+ end
14
83
 
15
- def details(params = {}, opts = {})
16
- request_stripe_object(
17
- method: :get,
18
- path: resource_url + "/details",
19
- params: params,
20
- opts: opts
21
- )
84
+ def ship_card(params = {}, opts = {})
85
+ @resource.request_stripe_object(
86
+ method: :post,
87
+ path: format("/v1/test_helpers/issuing/cards/%<card>s/shipping/ship", { card: CGI.escape(@resource["id"]) }),
88
+ params: params,
89
+ opts: opts
90
+ )
91
+ end
22
92
  end
23
93
  end
24
94
  end
@@ -3,6 +3,9 @@
3
3
 
4
4
  module Stripe
5
5
  module Issuing
6
+ # An Issuing `Cardholder` object represents an individual or business entity who is [issued](https://stripe.com/docs/issuing) cards.
7
+ #
8
+ # Related guide: [How to create a Cardholder](https://stripe.com/docs/issuing/cards#create-cardholder)
6
9
  class Cardholder < APIResource
7
10
  extend Stripe::APIOperations::Create
8
11
  extend Stripe::APIOperations::List
@@ -3,6 +3,9 @@
3
3
 
4
4
  module Stripe
5
5
  module Issuing
6
+ # As a [card issuer](https://stripe.com/docs/issuing), you can dispute transactions that the cardholder does not recognize, suspects to be fraudulent, or has other issues with.
7
+ #
8
+ # Related guide: [Disputing Transactions](https://stripe.com/docs/issuing/purchases/disputes)
6
9
  class Dispute < APIResource
7
10
  extend Stripe::APIOperations::Create
8
11
  extend Stripe::APIOperations::List
@@ -10,12 +13,19 @@ module Stripe
10
13
 
11
14
  OBJECT_NAME = "issuing.dispute"
12
15
 
13
- custom_method :submit, http_verb: :post
14
-
15
16
  def submit(params = {}, opts = {})
16
17
  request_stripe_object(
17
18
  method: :post,
18
- path: resource_url + "/submit",
19
+ path: format("/v1/issuing/disputes/%<dispute>s/submit", { dispute: CGI.escape(self["id"]) }),
20
+ params: params,
21
+ opts: opts
22
+ )
23
+ end
24
+
25
+ def self.submit(dispute, params = {}, opts = {})
26
+ request_stripe_object(
27
+ method: :post,
28
+ path: format("/v1/issuing/disputes/%<dispute>s/submit", { dispute: CGI.escape(dispute) }),
19
29
  params: params,
20
30
  opts: opts
21
31
  )
@@ -3,6 +3,11 @@
3
3
 
4
4
  module Stripe
5
5
  module Issuing
6
+ # Any use of an [issued card](https://stripe.com/docs/issuing) that results in funds entering or leaving
7
+ # your Stripe account, such as a completed purchase or refund, is represented by an Issuing
8
+ # `Transaction` object.
9
+ #
10
+ # Related guide: [Issued Card Transactions](https://stripe.com/docs/issuing/purchases/transactions).
6
11
  class Transaction < APIResource
7
12
  extend Stripe::APIOperations::List
8
13
  include Stripe::APIOperations::Save
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A line item.
5
6
  class LineItem < APIResource
6
7
  OBJECT_NAME = "item"
7
8
  end
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A Mandate is a record of the permission a customer has given you to debit their payment method.
5
6
  class Mandate < APIResource
6
7
  OBJECT_NAME = "mandate"
7
8
  end
@@ -2,6 +2,17 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A PaymentIntent guides you through the process of collecting a payment from your customer.
6
+ # We recommend that you create exactly one PaymentIntent for each order or
7
+ # customer session in your system. You can reference the PaymentIntent later to
8
+ # see the history of payment attempts for a particular session.
9
+ #
10
+ # A PaymentIntent transitions through
11
+ # [multiple statuses](https://stripe.com/docs/payments/intents#intent-statuses)
12
+ # throughout its lifetime as it interfaces with Stripe.js to perform
13
+ # authentication flows and ultimately creates at most one successful charge.
14
+ #
15
+ # Related guide: [Payment Intents API](https://stripe.com/docs/payments/payment-intents).
5
16
  class PaymentIntent < APIResource
6
17
  extend Stripe::APIOperations::Create
7
18
  extend Stripe::APIOperations::List
@@ -10,17 +21,10 @@ module Stripe
10
21
 
11
22
  OBJECT_NAME = "payment_intent"
12
23
 
13
- custom_method :apply_customer_balance, http_verb: :post
14
- custom_method :cancel, http_verb: :post
15
- custom_method :capture, http_verb: :post
16
- custom_method :confirm, http_verb: :post
17
- custom_method :increment_authorization, http_verb: :post
18
- custom_method :verify_microdeposits, http_verb: :post
19
-
20
24
  def apply_customer_balance(params = {}, opts = {})
21
25
  request_stripe_object(
22
26
  method: :post,
23
- path: resource_url + "/apply_customer_balance",
27
+ path: format("/v1/payment_intents/%<intent>s/apply_customer_balance", { intent: CGI.escape(self["id"]) }),
24
28
  params: params,
25
29
  opts: opts
26
30
  )
@@ -29,7 +33,7 @@ module Stripe
29
33
  def cancel(params = {}, opts = {})
30
34
  request_stripe_object(
31
35
  method: :post,
32
- path: resource_url + "/cancel",
36
+ path: format("/v1/payment_intents/%<intent>s/cancel", { intent: CGI.escape(self["id"]) }),
33
37
  params: params,
34
38
  opts: opts
35
39
  )
@@ -38,7 +42,7 @@ module Stripe
38
42
  def capture(params = {}, opts = {})
39
43
  request_stripe_object(
40
44
  method: :post,
41
- path: resource_url + "/capture",
45
+ path: format("/v1/payment_intents/%<intent>s/capture", { intent: CGI.escape(self["id"]) }),
42
46
  params: params,
43
47
  opts: opts
44
48
  )
@@ -47,7 +51,7 @@ module Stripe
47
51
  def confirm(params = {}, opts = {})
48
52
  request_stripe_object(
49
53
  method: :post,
50
- path: resource_url + "/confirm",
54
+ path: format("/v1/payment_intents/%<intent>s/confirm", { intent: CGI.escape(self["id"]) }),
51
55
  params: params,
52
56
  opts: opts
53
57
  )
@@ -56,7 +60,7 @@ module Stripe
56
60
  def increment_authorization(params = {}, opts = {})
57
61
  request_stripe_object(
58
62
  method: :post,
59
- path: resource_url + "/increment_authorization",
63
+ path: format("/v1/payment_intents/%<intent>s/increment_authorization", { intent: CGI.escape(self["id"]) }),
60
64
  params: params,
61
65
  opts: opts
62
66
  )
@@ -65,7 +69,61 @@ module Stripe
65
69
  def verify_microdeposits(params = {}, opts = {})
66
70
  request_stripe_object(
67
71
  method: :post,
68
- path: resource_url + "/verify_microdeposits",
72
+ path: format("/v1/payment_intents/%<intent>s/verify_microdeposits", { intent: CGI.escape(self["id"]) }),
73
+ params: params,
74
+ opts: opts
75
+ )
76
+ end
77
+
78
+ def self.apply_customer_balance(intent, params = {}, opts = {})
79
+ request_stripe_object(
80
+ method: :post,
81
+ path: format("/v1/payment_intents/%<intent>s/apply_customer_balance", { intent: CGI.escape(intent) }),
82
+ params: params,
83
+ opts: opts
84
+ )
85
+ end
86
+
87
+ def self.cancel(intent, params = {}, opts = {})
88
+ request_stripe_object(
89
+ method: :post,
90
+ path: format("/v1/payment_intents/%<intent>s/cancel", { intent: CGI.escape(intent) }),
91
+ params: params,
92
+ opts: opts
93
+ )
94
+ end
95
+
96
+ def self.capture(intent, params = {}, opts = {})
97
+ request_stripe_object(
98
+ method: :post,
99
+ path: format("/v1/payment_intents/%<intent>s/capture", { intent: CGI.escape(intent) }),
100
+ params: params,
101
+ opts: opts
102
+ )
103
+ end
104
+
105
+ def self.confirm(intent, params = {}, opts = {})
106
+ request_stripe_object(
107
+ method: :post,
108
+ path: format("/v1/payment_intents/%<intent>s/confirm", { intent: CGI.escape(intent) }),
109
+ params: params,
110
+ opts: opts
111
+ )
112
+ end
113
+
114
+ def self.increment_authorization(intent, params = {}, opts = {})
115
+ request_stripe_object(
116
+ method: :post,
117
+ path: format("/v1/payment_intents/%<intent>s/increment_authorization", { intent: CGI.escape(intent) }),
118
+ params: params,
119
+ opts: opts
120
+ )
121
+ end
122
+
123
+ def self.verify_microdeposits(intent, params = {}, opts = {})
124
+ request_stripe_object(
125
+ method: :post,
126
+ path: format("/v1/payment_intents/%<intent>s/verify_microdeposits", { intent: CGI.escape(intent) }),
69
127
  params: params,
70
128
  opts: opts
71
129
  )
@@ -2,6 +2,11 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Stripe
5
+ # A payment link is a shareable URL that will take your customers to a hosted payment page. A payment link can be shared and used multiple times.
6
+ #
7
+ # When a customer opens a payment link it will open a new [checkout session](https://stripe.com/docs/api/checkout/sessions) to render the payment page. You can use [checkout session events](https://stripe.com/docs/api/events/types#event_types-checkout.session.completed) to track payments through payment links.
8
+ #
9
+ # Related guide: [Payment Links API](https://stripe.com/docs/payments/payment-links/api)
5
10
  class PaymentLink < APIResource
6
11
  extend Stripe::APIOperations::Create
7
12
  extend Stripe::APIOperations::List
@@ -9,12 +14,19 @@ module Stripe
9
14
 
10
15
  OBJECT_NAME = "payment_link"
11
16
 
12
- custom_method :list_line_items, http_verb: :get, http_path: "line_items"
13
-
14
17
  def list_line_items(params = {}, opts = {})
15
18
  request_stripe_object(
16
19
  method: :get,
17
- path: resource_url + "/line_items",
20
+ path: format("/v1/payment_links/%<payment_link>s/line_items", { payment_link: CGI.escape(self["id"]) }),
21
+ params: params,
22
+ opts: opts
23
+ )
24
+ end
25
+
26
+ def self.list_line_items(payment_link, params = {}, opts = {})
27
+ request_stripe_object(
28
+ method: :get,
29
+ path: format("/v1/payment_links/%<payment_link>s/line_items", { payment_link: CGI.escape(payment_link) }),
18
30
  params: params,
19
31
  opts: opts
20
32
  )