stripe 5.55.0 → 13.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +567 -4
  3. data/Gemfile +12 -4
  4. data/Makefile +18 -3
  5. data/OPENAPI_VERSION +1 -0
  6. data/README.md +93 -21
  7. data/Rakefile +3 -6
  8. data/VERSION +1 -1
  9. data/examples/README.md +16 -0
  10. data/examples/example_template.rb +36 -0
  11. data/examples/meter_event_stream.rb +57 -0
  12. data/examples/thinevent_webhook_handler.rb +39 -0
  13. data/{bin → exe}/stripe-console +1 -1
  14. data/justfile +43 -0
  15. data/lib/data/ca-certificates.crt +1241 -1937
  16. data/lib/stripe/api_operations/create.rb +6 -2
  17. data/lib/stripe/api_operations/delete.rb +12 -7
  18. data/lib/stripe/api_operations/list.rb +6 -9
  19. data/lib/stripe/api_operations/nested_resource.rb +63 -35
  20. data/lib/stripe/api_operations/request.rb +29 -65
  21. data/lib/stripe/api_operations/save.rb +20 -10
  22. data/lib/stripe/api_operations/search.rb +11 -9
  23. data/lib/stripe/api_operations/singleton_save.rb +90 -0
  24. data/lib/stripe/api_requestor.rb +1131 -0
  25. data/lib/stripe/api_resource.rb +48 -18
  26. data/lib/stripe/api_resource_test_helpers.rb +9 -3
  27. data/lib/stripe/api_version.rb +8 -0
  28. data/lib/stripe/connection_manager.rb +5 -7
  29. data/lib/stripe/errors.rb +11 -13
  30. data/lib/stripe/event_types.rb +14 -0
  31. data/lib/stripe/events/v1_billing_meter_error_report_triggered_event.rb +23 -0
  32. data/lib/stripe/events/v1_billing_meter_no_meter_found_event.rb +13 -0
  33. data/lib/stripe/instrumentation.rb +37 -15
  34. data/lib/stripe/list_object.rb +5 -3
  35. data/lib/stripe/multipart_encoder.rb +7 -7
  36. data/lib/stripe/oauth.rb +14 -21
  37. data/lib/stripe/object_types.rb +151 -103
  38. data/lib/stripe/request_options.rb +129 -0
  39. data/lib/stripe/resources/account.rb +129 -25
  40. data/lib/stripe/resources/account_link.rb +12 -0
  41. data/lib/stripe/resources/account_session.rb +25 -0
  42. data/lib/stripe/resources/alipay_account.rb +1 -1
  43. data/lib/stripe/resources/apple_pay_domain.rb +38 -0
  44. data/lib/stripe/resources/application_fee.rb +9 -2
  45. data/lib/stripe/resources/application_fee_refund.rb +9 -2
  46. data/lib/stripe/resources/apps/secret.rb +55 -0
  47. data/lib/stripe/resources/balance.rb +14 -0
  48. data/lib/stripe/resources/balance_transaction.rb +19 -0
  49. data/lib/stripe/resources/bank_account.rb +53 -4
  50. data/lib/stripe/resources/billing/alert.rb +87 -0
  51. data/lib/stripe/resources/billing/credit_balance_summary.rb +14 -0
  52. data/lib/stripe/resources/billing/credit_balance_transaction.rb +26 -0
  53. data/lib/stripe/resources/billing/credit_grant.rb +90 -0
  54. data/lib/stripe/resources/billing/meter.rb +85 -0
  55. data/lib/stripe/resources/billing/meter_event.rb +26 -0
  56. data/lib/stripe/resources/billing/meter_event_adjustment.rb +26 -0
  57. data/lib/stripe/resources/billing/meter_event_summary.rb +17 -0
  58. data/lib/stripe/resources/billing_portal/configuration.rb +34 -0
  59. data/lib/stripe/resources/billing_portal/session.rb +27 -0
  60. data/lib/stripe/resources/capability.rb +7 -2
  61. data/lib/stripe/resources/card.rb +34 -3
  62. data/lib/stripe/resources/cash_balance.rb +4 -0
  63. data/lib/stripe/resources/charge.rb +52 -3
  64. data/lib/stripe/resources/checkout/session.rb +83 -5
  65. data/lib/stripe/resources/climate/order.rb +67 -0
  66. data/lib/stripe/resources/climate/product.rb +27 -0
  67. data/lib/stripe/resources/climate/supplier.rb +26 -0
  68. data/lib/stripe/resources/confirmation_token.rb +39 -0
  69. data/lib/stripe/resources/country_spec.rb +14 -0
  70. data/lib/stripe/resources/coupon.rb +48 -0
  71. data/lib/stripe/resources/credit_note.rb +67 -9
  72. data/lib/stripe/resources/credit_note_line_item.rb +4 -0
  73. data/lib/stripe/resources/customer.rb +172 -28
  74. data/lib/stripe/resources/customer_balance_transaction.rb +9 -1
  75. data/lib/stripe/resources/customer_cash_balance_transaction.rb +15 -0
  76. data/lib/stripe/resources/customer_session.rb +29 -0
  77. data/lib/stripe/resources/discount.rb +7 -0
  78. data/lib/stripe/resources/dispute.rb +41 -3
  79. data/lib/stripe/resources/entitlements/active_entitlement.rb +26 -0
  80. data/lib/stripe/resources/entitlements/feature.rb +49 -0
  81. data/lib/stripe/resources/ephemeral_key.rb +23 -0
  82. data/lib/stripe/resources/event.rb +38 -0
  83. data/lib/stripe/resources/exchange_rate.rb +34 -0
  84. data/lib/stripe/resources/file.rb +37 -15
  85. data/lib/stripe/resources/file_link.rb +26 -0
  86. data/lib/stripe/resources/financial_connections/account.rb +101 -6
  87. data/lib/stripe/resources/financial_connections/account_owner.rb +4 -0
  88. data/lib/stripe/resources/financial_connections/account_ownership.rb +4 -0
  89. data/lib/stripe/resources/financial_connections/session.rb +14 -0
  90. data/lib/stripe/resources/financial_connections/transaction.rb +26 -0
  91. data/lib/stripe/resources/forwarding/request.rb +52 -0
  92. data/lib/stripe/resources/funding_instructions.rb +8 -0
  93. data/lib/stripe/resources/identity/verification_report.rb +24 -0
  94. data/lib/stripe/resources/identity/verification_session.rb +117 -5
  95. data/lib/stripe/resources/invoice.rb +247 -20
  96. data/lib/stripe/resources/invoice_item.rb +54 -0
  97. data/lib/stripe/resources/invoice_line_item.rb +22 -1
  98. data/lib/stripe/resources/invoice_rendering_template.rb +65 -0
  99. data/lib/stripe/resources/issuing/authorization.rb +210 -5
  100. data/lib/stripe/resources/issuing/card.rb +128 -4
  101. data/lib/stripe/resources/issuing/cardholder.rb +36 -0
  102. data/lib/stripe/resources/issuing/dispute.rb +47 -2
  103. data/lib/stripe/resources/issuing/personalization_design.rb +119 -0
  104. data/lib/stripe/resources/issuing/physical_bundle.rb +26 -0
  105. data/lib/stripe/resources/issuing/token.rb +32 -0
  106. data/lib/stripe/resources/issuing/transaction.rb +79 -0
  107. data/lib/stripe/resources/line_item.rb +4 -0
  108. data/lib/stripe/resources/login_link.rb +4 -0
  109. data/lib/stripe/resources/mandate.rb +4 -0
  110. data/lib/stripe/resources/payment_intent.rb +238 -15
  111. data/lib/stripe/resources/payment_link.rb +39 -2
  112. data/lib/stripe/resources/payment_method.rb +78 -5
  113. data/lib/stripe/resources/payment_method_configuration.rb +59 -0
  114. data/lib/stripe/resources/payment_method_domain.rb +79 -0
  115. data/lib/stripe/resources/payout.rb +63 -5
  116. data/lib/stripe/resources/person.rb +8 -1
  117. data/lib/stripe/resources/plan.rb +51 -0
  118. data/lib/stripe/resources/price.rb +30 -1
  119. data/lib/stripe/resources/product.rb +55 -1
  120. data/lib/stripe/resources/product_feature.rb +13 -0
  121. data/lib/stripe/resources/promotion_code.rb +25 -0
  122. data/lib/stripe/resources/quote.rb +97 -39
  123. data/lib/stripe/resources/radar/early_fraud_warning.rb +17 -0
  124. data/lib/stripe/resources/radar/value_list.rb +56 -0
  125. data/lib/stripe/resources/radar/value_list_item.rb +46 -0
  126. data/lib/stripe/resources/refund.rb +70 -5
  127. data/lib/stripe/resources/reporting/report_run.rb +31 -0
  128. data/lib/stripe/resources/reporting/report_type.rb +21 -1
  129. data/lib/stripe/resources/reversal.rb +17 -2
  130. data/lib/stripe/resources/review.rb +24 -3
  131. data/lib/stripe/resources/setup_attempt.rb +12 -0
  132. data/lib/stripe/resources/setup_intent.rb +113 -7
  133. data/lib/stripe/resources/shipping_rate.rb +25 -0
  134. data/lib/stripe/resources/sigma/scheduled_query_run.rb +17 -0
  135. data/lib/stripe/resources/source.rb +52 -10
  136. data/lib/stripe/resources/source_transaction.rb +7 -0
  137. data/lib/stripe/resources/subscription.rb +118 -5
  138. data/lib/stripe/resources/subscription_item.rb +54 -6
  139. data/lib/stripe/resources/subscription_schedule.rb +60 -5
  140. data/lib/stripe/resources/tax/calculation.rb +48 -0
  141. data/lib/stripe/resources/tax/calculation_line_item.rb +13 -0
  142. data/lib/stripe/resources/tax/registration.rb +54 -0
  143. data/lib/stripe/resources/tax/settings.rb +17 -0
  144. data/lib/stripe/resources/tax/transaction.rb +56 -0
  145. data/lib/stripe/resources/tax/transaction_line_item.rb +13 -0
  146. data/lib/stripe/resources/tax_code.rb +9 -0
  147. data/lib/stripe/resources/tax_id.rb +34 -12
  148. data/lib/stripe/resources/tax_rate.rb +26 -0
  149. data/lib/stripe/resources/terminal/configuration.rb +54 -0
  150. data/lib/stripe/resources/terminal/connection_token.rb +16 -0
  151. data/lib/stripe/resources/terminal/location.rb +57 -0
  152. data/lib/stripe/resources/terminal/reader.rb +138 -11
  153. data/lib/stripe/resources/test_helpers/test_clock.rb +58 -3
  154. data/lib/stripe/resources/token.rb +29 -0
  155. data/lib/stripe/resources/topup.rb +40 -3
  156. data/lib/stripe/resources/transfer.rb +29 -6
  157. data/lib/stripe/resources/treasury/credit_reversal.rb +37 -0
  158. data/lib/stripe/resources/treasury/debit_reversal.rb +37 -0
  159. data/lib/stripe/resources/treasury/financial_account.rb +109 -0
  160. data/lib/stripe/resources/treasury/financial_account_features.rb +15 -0
  161. data/lib/stripe/resources/treasury/inbound_transfer.rb +130 -0
  162. data/lib/stripe/resources/treasury/outbound_payment.rb +152 -0
  163. data/lib/stripe/resources/treasury/outbound_transfer.rb +152 -0
  164. data/lib/stripe/resources/treasury/received_credit.rb +47 -0
  165. data/lib/stripe/resources/treasury/received_debit.rb +47 -0
  166. data/lib/stripe/resources/treasury/transaction.rb +26 -0
  167. data/lib/stripe/resources/treasury/transaction_entry.rb +30 -0
  168. data/lib/stripe/resources/usage_record.rb +9 -0
  169. data/lib/stripe/resources/usage_record_summary.rb +4 -0
  170. data/lib/stripe/resources/v2/billing/meter_event.rb +16 -0
  171. data/lib/stripe/resources/v2/billing/meter_event_adjustment.rb +15 -0
  172. data/lib/stripe/resources/v2/billing/meter_event_session.rb +15 -0
  173. data/lib/stripe/resources/v2/event.rb +13 -0
  174. data/lib/stripe/resources/v2/event_destination.rb +13 -0
  175. data/lib/stripe/resources/webhook_endpoint.rb +55 -0
  176. data/lib/stripe/resources.rb +51 -10
  177. data/lib/stripe/search_result_object.rb +5 -2
  178. data/lib/stripe/services/account_capability_service.rb +39 -0
  179. data/lib/stripe/services/account_external_account_service.rb +68 -0
  180. data/lib/stripe/services/account_link_service.rb +17 -0
  181. data/lib/stripe/services/account_login_link_service.rb +19 -0
  182. data/lib/stripe/services/account_person_service.rb +61 -0
  183. data/lib/stripe/services/account_service.rb +100 -0
  184. data/lib/stripe/services/account_session_service.rb +17 -0
  185. data/lib/stripe/services/apple_pay_domain_service.rb +50 -0
  186. data/lib/stripe/services/application_fee_refund_service.rb +60 -0
  187. data/lib/stripe/services/application_fee_service.rb +35 -0
  188. data/lib/stripe/services/apps/secret_service.rb +52 -0
  189. data/lib/stripe/services/apps_service.rb +13 -0
  190. data/lib/stripe/services/balance_service.rb +12 -0
  191. data/lib/stripe/services/balance_transaction_service.rb +32 -0
  192. data/lib/stripe/services/billing/alert_service.rb +74 -0
  193. data/lib/stripe/services/billing/credit_balance_summary_service.rb +19 -0
  194. data/lib/stripe/services/billing/credit_balance_transaction_service.rb +30 -0
  195. data/lib/stripe/services/billing/credit_grant_service.rb +74 -0
  196. data/lib/stripe/services/billing/meter_event_adjustment_service.rb +19 -0
  197. data/lib/stripe/services/billing/meter_event_service.rb +19 -0
  198. data/lib/stripe/services/billing/meter_event_summary_service.rb +19 -0
  199. data/lib/stripe/services/billing/meter_service.rb +81 -0
  200. data/lib/stripe/services/billing_portal/configuration_service.rb +52 -0
  201. data/lib/stripe/services/billing_portal/session_service.rb +19 -0
  202. data/lib/stripe/services/billing_portal_service.rb +14 -0
  203. data/lib/stripe/services/billing_service.rb +20 -0
  204. data/lib/stripe/services/charge_service.rb +69 -0
  205. data/lib/stripe/services/checkout/session_line_item_service.rb +19 -0
  206. data/lib/stripe/services/checkout/session_service.rb +72 -0
  207. data/lib/stripe/services/checkout_service.rb +13 -0
  208. data/lib/stripe/services/climate/order_service.rb +68 -0
  209. data/lib/stripe/services/climate/product_service.rb +30 -0
  210. data/lib/stripe/services/climate/supplier_service.rb +30 -0
  211. data/lib/stripe/services/climate_service.rb +15 -0
  212. data/lib/stripe/services/confirmation_token_service.rb +17 -0
  213. data/lib/stripe/services/country_spec_service.rb +28 -0
  214. data/lib/stripe/services/coupon_service.rb +51 -0
  215. data/lib/stripe/services/credit_note_line_item_service.rb +17 -0
  216. data/lib/stripe/services/credit_note_preview_lines_service.rb +17 -0
  217. data/lib/stripe/services/credit_note_service.rb +93 -0
  218. data/lib/stripe/services/customer_balance_transaction_service.rb +50 -0
  219. data/lib/stripe/services/customer_cash_balance_service.rb +28 -0
  220. data/lib/stripe/services/customer_cash_balance_transaction_service.rb +28 -0
  221. data/lib/stripe/services/customer_funding_instructions_service.rb +19 -0
  222. data/lib/stripe/services/customer_payment_method_service.rb +28 -0
  223. data/lib/stripe/services/customer_payment_source_service.rb +76 -0
  224. data/lib/stripe/services/customer_service.rb +89 -0
  225. data/lib/stripe/services/customer_session_service.rb +17 -0
  226. data/lib/stripe/services/customer_tax_id_service.rb +50 -0
  227. data/lib/stripe/services/dispute_service.rb +48 -0
  228. data/lib/stripe/services/entitlements/active_entitlement_service.rb +30 -0
  229. data/lib/stripe/services/entitlements/feature_service.rb +52 -0
  230. data/lib/stripe/services/entitlements_service.rb +14 -0
  231. data/lib/stripe/services/ephemeral_key_service.rb +28 -0
  232. data/lib/stripe/services/event_service.rb +22 -0
  233. data/lib/stripe/services/exchange_rate_service.rb +28 -0
  234. data/lib/stripe/services/file_link_service.rb +38 -0
  235. data/lib/stripe/services/file_service.rb +35 -0
  236. data/lib/stripe/services/financial_connections/account_owner_service.rb +19 -0
  237. data/lib/stripe/services/financial_connections/account_service.rb +81 -0
  238. data/lib/stripe/services/financial_connections/session_service.rb +30 -0
  239. data/lib/stripe/services/financial_connections/transaction_service.rb +30 -0
  240. data/lib/stripe/services/financial_connections_service.rb +15 -0
  241. data/lib/stripe/services/forwarding/request_service.rb +41 -0
  242. data/lib/stripe/services/forwarding_service.rb +13 -0
  243. data/lib/stripe/services/identity/verification_report_service.rb +30 -0
  244. data/lib/stripe/services/identity/verification_session_service.rb +106 -0
  245. data/lib/stripe/services/identity_service.rb +14 -0
  246. data/lib/stripe/services/invoice_item_service.rb +61 -0
  247. data/lib/stripe/services/invoice_line_item_service.rb +31 -0
  248. data/lib/stripe/services/invoice_rendering_template_service.rb +50 -0
  249. data/lib/stripe/services/invoice_service.rb +202 -0
  250. data/lib/stripe/services/invoice_upcoming_lines_service.rb +17 -0
  251. data/lib/stripe/services/issuing/authorization_service.rb +65 -0
  252. data/lib/stripe/services/issuing/card_service.rb +52 -0
  253. data/lib/stripe/services/issuing/cardholder_service.rb +52 -0
  254. data/lib/stripe/services/issuing/dispute_service.rb +63 -0
  255. data/lib/stripe/services/issuing/personalization_design_service.rb +52 -0
  256. data/lib/stripe/services/issuing/physical_bundle_service.rb +30 -0
  257. data/lib/stripe/services/issuing/token_service.rb +41 -0
  258. data/lib/stripe/services/issuing/transaction_service.rb +41 -0
  259. data/lib/stripe/services/issuing_service.rb +20 -0
  260. data/lib/stripe/services/mandate_service.rb +17 -0
  261. data/lib/stripe/services/oauth_service.rb +63 -0
  262. data/lib/stripe/services/payment_intent_service.rb +204 -0
  263. data/lib/stripe/services/payment_link_line_item_service.rb +17 -0
  264. data/lib/stripe/services/payment_link_service.rb +57 -0
  265. data/lib/stripe/services/payment_method_configuration_service.rb +50 -0
  266. data/lib/stripe/services/payment_method_domain_service.rb +66 -0
  267. data/lib/stripe/services/payment_method_service.rb +86 -0
  268. data/lib/stripe/services/payout_service.rb +66 -0
  269. data/lib/stripe/services/plan_service.rb +49 -0
  270. data/lib/stripe/services/price_service.rb +52 -0
  271. data/lib/stripe/services/product_feature_service.rb +50 -0
  272. data/lib/stripe/services/product_service.rb +70 -0
  273. data/lib/stripe/services/promotion_code_service.rb +50 -0
  274. data/lib/stripe/services/quote_computed_upfront_line_items_service.rb +17 -0
  275. data/lib/stripe/services/quote_line_item_service.rb +17 -0
  276. data/lib/stripe/services/quote_service.rb +92 -0
  277. data/lib/stripe/services/radar/early_fraud_warning_service.rb +32 -0
  278. data/lib/stripe/services/radar/value_list_item_service.rb +52 -0
  279. data/lib/stripe/services/radar/value_list_service.rb +63 -0
  280. data/lib/stripe/services/radar_service.rb +15 -0
  281. data/lib/stripe/services/refund_service.rb +63 -0
  282. data/lib/stripe/services/reporting/report_run_service.rb +41 -0
  283. data/lib/stripe/services/reporting/report_type_service.rb +30 -0
  284. data/lib/stripe/services/reporting_service.rb +14 -0
  285. data/lib/stripe/services/review_service.rb +33 -0
  286. data/lib/stripe/services/setup_attempt_service.rb +17 -0
  287. data/lib/stripe/services/setup_intent_service.rb +105 -0
  288. data/lib/stripe/services/shipping_rate_service.rb +50 -0
  289. data/lib/stripe/services/sigma/scheduled_query_run_service.rb +30 -0
  290. data/lib/stripe/services/sigma_service.rb +13 -0
  291. data/lib/stripe/services/source_service.rb +64 -0
  292. data/lib/stripe/services/source_transaction_service.rb +17 -0
  293. data/lib/stripe/services/subscription_item_service.rb +69 -0
  294. data/lib/stripe/services/subscription_item_usage_record_service.rb +23 -0
  295. data/lib/stripe/services/subscription_item_usage_record_summary_service.rb +19 -0
  296. data/lib/stripe/services/subscription_schedule_service.rb +72 -0
  297. data/lib/stripe/services/subscription_service.rb +127 -0
  298. data/lib/stripe/services/tax/calculation_line_item_service.rb +19 -0
  299. data/lib/stripe/services/tax/calculation_service.rb +37 -0
  300. data/lib/stripe/services/tax/registration_service.rb +54 -0
  301. data/lib/stripe/services/tax/settings_service.rb +30 -0
  302. data/lib/stripe/services/tax/transaction_line_item_service.rb +19 -0
  303. data/lib/stripe/services/tax/transaction_service.rb +48 -0
  304. data/lib/stripe/services/tax_code_service.rb +22 -0
  305. data/lib/stripe/services/tax_id_service.rb +38 -0
  306. data/lib/stripe/services/tax_rate_service.rb +38 -0
  307. data/lib/stripe/services/tax_service.rb +16 -0
  308. data/lib/stripe/services/terminal/configuration_service.rb +63 -0
  309. data/lib/stripe/services/terminal/connection_token_service.rb +19 -0
  310. data/lib/stripe/services/terminal/location_service.rb +64 -0
  311. data/lib/stripe/services/terminal/reader_service.rb +118 -0
  312. data/lib/stripe/services/terminal_service.rb +16 -0
  313. data/lib/stripe/services/test_helpers/confirmation_token_service.rb +19 -0
  314. data/lib/stripe/services/test_helpers/customer_service.rb +19 -0
  315. data/lib/stripe/services/test_helpers/issuing/authorization_service.rb +87 -0
  316. data/lib/stripe/services/test_helpers/issuing/card_service.rb +65 -0
  317. data/lib/stripe/services/test_helpers/issuing/personalization_design_service.rb +43 -0
  318. data/lib/stripe/services/test_helpers/issuing/transaction_service.rb +43 -0
  319. data/lib/stripe/services/test_helpers/issuing_service.rb +19 -0
  320. data/lib/stripe/services/test_helpers/refund_service.rb +19 -0
  321. data/lib/stripe/services/test_helpers/terminal/reader_service.rb +21 -0
  322. data/lib/stripe/services/test_helpers/terminal_service.rb +15 -0
  323. data/lib/stripe/services/test_helpers/test_clock_service.rb +63 -0
  324. data/lib/stripe/services/test_helpers/treasury/inbound_transfer_service.rb +43 -0
  325. data/lib/stripe/services/test_helpers/treasury/outbound_payment_service.rb +54 -0
  326. data/lib/stripe/services/test_helpers/treasury/outbound_transfer_service.rb +54 -0
  327. data/lib/stripe/services/test_helpers/treasury/received_credit_service.rb +21 -0
  328. data/lib/stripe/services/test_helpers/treasury/received_debit_service.rb +21 -0
  329. data/lib/stripe/services/test_helpers/treasury_service.rb +19 -0
  330. data/lib/stripe/services/test_helpers_service.rb +19 -0
  331. data/lib/stripe/services/token_service.rb +23 -0
  332. data/lib/stripe/services/topup_service.rb +49 -0
  333. data/lib/stripe/services/transfer_reversal_service.rb +56 -0
  334. data/lib/stripe/services/transfer_service.rb +47 -0
  335. data/lib/stripe/services/treasury/credit_reversal_service.rb +41 -0
  336. data/lib/stripe/services/treasury/debit_reversal_service.rb +41 -0
  337. data/lib/stripe/services/treasury/financial_account_features_service.rb +30 -0
  338. data/lib/stripe/services/treasury/financial_account_service.rb +70 -0
  339. data/lib/stripe/services/treasury/inbound_transfer_service.rb +52 -0
  340. data/lib/stripe/services/treasury/outbound_payment_service.rb +52 -0
  341. data/lib/stripe/services/treasury/outbound_transfer_service.rb +52 -0
  342. data/lib/stripe/services/treasury/received_credit_service.rb +30 -0
  343. data/lib/stripe/services/treasury/received_debit_service.rb +30 -0
  344. data/lib/stripe/services/treasury/transaction_entry_service.rb +30 -0
  345. data/lib/stripe/services/treasury/transaction_service.rb +30 -0
  346. data/lib/stripe/services/treasury_service.rb +22 -0
  347. data/lib/stripe/services/v1_services.rb +89 -0
  348. data/lib/stripe/services/v2/billing/meter_event_adjustment_service.rb +21 -0
  349. data/lib/stripe/services/v2/billing/meter_event_service.rb +21 -0
  350. data/lib/stripe/services/v2/billing/meter_event_session_service.rb +21 -0
  351. data/lib/stripe/services/v2/billing/meter_event_stream_service.rb +23 -0
  352. data/lib/stripe/services/v2/billing_service.rb +18 -0
  353. data/lib/stripe/services/v2/core/event_destination_service.rb +98 -0
  354. data/lib/stripe/services/v2/core/event_service.rb +32 -0
  355. data/lib/stripe/services/v2/core_service.rb +16 -0
  356. data/lib/stripe/services/v2_services.rb +14 -0
  357. data/lib/stripe/services/webhook_endpoint_service.rb +61 -0
  358. data/lib/stripe/services.rb +182 -0
  359. data/lib/stripe/singleton_api_resource.rb +3 -3
  360. data/lib/stripe/stripe_client.rb +55 -1028
  361. data/lib/stripe/stripe_configuration.rb +63 -42
  362. data/lib/stripe/stripe_object.rb +60 -38
  363. data/lib/stripe/stripe_response.rb +1 -3
  364. data/lib/stripe/stripe_service.rb +32 -0
  365. data/lib/stripe/thin_event.rb +37 -0
  366. data/lib/stripe/util.rb +109 -45
  367. data/lib/stripe/v2_list_object.rb +84 -0
  368. data/lib/stripe/version.rb +1 -1
  369. data/lib/stripe/webhook.rb +3 -2
  370. data/lib/stripe.rb +39 -0
  371. data/stripe.gemspec +7 -4
  372. metadata +252 -13
  373. data/lib/stripe/resources/bitcoin_receiver.rb +0 -24
  374. data/lib/stripe/resources/bitcoin_transaction.rb +0 -16
  375. data/lib/stripe/resources/issuing/card_details.rb +0 -10
  376. data/lib/stripe/resources/order.rb +0 -33
  377. data/lib/stripe/resources/order_return.rb +0 -10
  378. data/lib/stripe/resources/recipient.rb +0 -14
  379. data/lib/stripe/resources/sku.rb +0 -13
  380. data/lib/stripe/resources/three_d_secure.rb +0 -14
@@ -25,26 +25,11 @@ module Stripe
25
25
  # If `.logger` is set, the value of `.log_level` is ignored. The decision on
26
26
  # what levels to print is entirely deferred to the logger.
27
27
  class StripeConfiguration
28
- attr_accessor :api_key
29
- attr_accessor :api_version
30
- attr_accessor :client_id
31
- attr_accessor :enable_telemetry
32
- attr_accessor :logger
33
- attr_accessor :stripe_account
34
-
35
- attr_reader :api_base
36
- attr_reader :uploads_base
37
- attr_reader :connect_base
38
- attr_reader :ca_bundle_path
39
- attr_reader :log_level
40
- attr_reader :initial_network_retry_delay
41
- attr_reader :max_network_retries
42
- attr_reader :max_network_retry_delay
43
- attr_reader :open_timeout
44
- attr_reader :read_timeout
45
- attr_reader :write_timeout
46
- attr_reader :proxy
47
- attr_reader :verify_ssl_certs
28
+ attr_accessor :api_key, :api_version, :client_id, :enable_telemetry, :logger, :stripe_account, :stripe_context
29
+
30
+ attr_reader :api_base, :uploads_base, :connect_base, :meter_events_base, :base_addresses, :ca_bundle_path,
31
+ :log_level, :initial_network_retry_delay, :max_network_retries, :max_network_retry_delay,
32
+ :open_timeout, :read_timeout, :write_timeout, :proxy, :verify_ssl_certs
48
33
 
49
34
  def self.setup
50
35
  new.tap do |instance|
@@ -52,6 +37,25 @@ module Stripe
52
37
  end
53
38
  end
54
39
 
40
+ # Set options to the StripeClient configured options, if valid as a client option and provided
41
+ # Otherwise, for user configurable global options, set them to the global configuration
42
+ # For all other options, set them to the StripeConfiguration default value
43
+ def self.client_init(config_opts)
44
+ global_config = Stripe.config
45
+ imported_options = USER_CONFIGURABLE_GLOBAL_OPTIONS - StripeClient::CLIENT_OPTIONS
46
+ client_config = StripeConfiguration.setup do |instance|
47
+ imported_options.each do |key|
48
+ begin
49
+ instance.public_send("#{key}=", global_config.public_send(key)) if global_config.respond_to?(key)
50
+ rescue NotImplementedError => e
51
+ # In Ruby <= 2.5, we can't set write_timeout on Net::HTTP, log an error and continue
52
+ Util.log_error("Failed to set #{key} on client configuration: #{e}")
53
+ end
54
+ end
55
+ end
56
+ client_config.reverse_duplicate_merge(config_opts)
57
+ end
58
+
55
59
  # Create a new config based off an existing one. This is useful when the
56
60
  # caller wants to override the global configuration
57
61
  def reverse_duplicate_merge(hash)
@@ -59,25 +63,32 @@ module Stripe
59
63
  hash.each do |option, value|
60
64
  instance.public_send("#{option}=", value)
61
65
  end
66
+ instance.send("instance_variable_set", "@base_addresses",
67
+ { api: instance.api_base, connect: instance.connect_base,
68
+ files: instance.uploads_base, meter_events: instance.meter_events_base, })
62
69
  end
63
70
  end
64
71
 
65
72
  def initialize
73
+ @api_version = ApiVersion::CURRENT
66
74
  @ca_bundle_path = Stripe::DEFAULT_CA_BUNDLE_PATH
67
75
  @enable_telemetry = true
68
76
  @verify_ssl_certs = true
69
77
 
70
- @max_network_retries = 0
78
+ @max_network_retries = 2
71
79
  @initial_network_retry_delay = 0.5
72
- @max_network_retry_delay = 2
80
+ @max_network_retry_delay = 5
73
81
 
74
82
  @open_timeout = 30
75
83
  @read_timeout = 80
76
84
  @write_timeout = 30
77
85
 
78
- @api_base = "https://api.stripe.com"
79
- @connect_base = "https://connect.stripe.com"
80
- @uploads_base = "https://files.stripe.com"
86
+ @api_base = DEFAULT_API_BASE
87
+ @connect_base = DEFAULT_CONNECT_BASE
88
+ @uploads_base = DEFAULT_UPLOAD_BASE
89
+ @meter_events_base = DEFAULT_METER_EVENTS_BASE
90
+ @base_addresses = { api: @api_base, connect: @connect_base, files: @uploads_base,
91
+ meter_events: @meter_events_base, }
81
92
  end
82
93
 
83
94
  def log_level=(val)
@@ -86,13 +97,16 @@ module Stripe
86
97
  val = Stripe::LEVEL_DEBUG
87
98
  elsif val == "info"
88
99
  val = Stripe::LEVEL_INFO
100
+ elsif val == "error"
101
+ val = Stripe::LEVEL_ERROR
89
102
  end
90
103
 
91
104
  levels = [Stripe::LEVEL_INFO, Stripe::LEVEL_DEBUG, Stripe::LEVEL_ERROR]
92
105
 
93
106
  if !val.nil? && !levels.include?(val)
94
107
  raise ArgumentError,
95
- "log_level should only be set to `nil`, `debug` or `info`"
108
+ "log_level should only be set to `nil`, `debug`, `info`, " \
109
+ "or `error`"
96
110
  end
97
111
  @log_level = val
98
112
  end
@@ -111,46 +125,53 @@ module Stripe
111
125
 
112
126
  def open_timeout=(open_timeout)
113
127
  @open_timeout = open_timeout
114
- StripeClient.clear_all_connection_managers(config: self)
128
+ APIRequestor.clear_all_connection_managers(config: self)
115
129
  end
116
130
 
117
131
  def read_timeout=(read_timeout)
118
132
  @read_timeout = read_timeout
119
- StripeClient.clear_all_connection_managers(config: self)
133
+ APIRequestor.clear_all_connection_managers(config: self)
120
134
  end
121
135
 
122
136
  def write_timeout=(write_timeout)
123
- unless Net::HTTP.instance_methods.include?(:write_timeout=)
124
- raise NotImplementedError
125
- end
137
+ raise NotImplementedError unless Net::HTTP.instance_methods.include?(:write_timeout=)
126
138
 
127
139
  @write_timeout = write_timeout
128
- StripeClient.clear_all_connection_managers(config: self)
140
+ APIRequestor.clear_all_connection_managers(config: self)
129
141
  end
130
142
 
131
143
  def proxy=(proxy)
132
144
  @proxy = proxy
133
- StripeClient.clear_all_connection_managers(config: self)
145
+ APIRequestor.clear_all_connection_managers(config: self)
134
146
  end
135
147
 
136
148
  def verify_ssl_certs=(verify_ssl_certs)
137
149
  @verify_ssl_certs = verify_ssl_certs
138
- StripeClient.clear_all_connection_managers(config: self)
150
+ APIRequestor.clear_all_connection_managers(config: self)
151
+ end
152
+
153
+ def meter_events_base=(meter_events_base)
154
+ @meter_events_base = meter_events_base
155
+ @base_addresses[:meter_events] = meter_events_base
156
+ APIRequestor.clear_all_connection_managers(config: self)
139
157
  end
140
158
 
141
159
  def uploads_base=(uploads_base)
142
160
  @uploads_base = uploads_base
143
- StripeClient.clear_all_connection_managers(config: self)
161
+ @base_addresses[:files] = uploads_base
162
+ APIRequestor.clear_all_connection_managers(config: self)
144
163
  end
145
164
 
146
165
  def connect_base=(connect_base)
147
166
  @connect_base = connect_base
148
- StripeClient.clear_all_connection_managers(config: self)
167
+ @base_addresses[:connect] = connect_base
168
+ APIRequestor.clear_all_connection_managers(config: self)
149
169
  end
150
170
 
151
171
  def api_base=(api_base)
152
172
  @api_base = api_base
153
- StripeClient.clear_all_connection_managers(config: self)
173
+ @base_addresses[:api] = api_base
174
+ APIRequestor.clear_all_connection_managers(config: self)
154
175
  end
155
176
 
156
177
  def ca_bundle_path=(path)
@@ -159,7 +180,7 @@ module Stripe
159
180
  # empty this field so a new store is initialized
160
181
  @ca_store = nil
161
182
 
162
- StripeClient.clear_all_connection_managers(config: self)
183
+ APIRequestor.clear_all_connection_managers(config: self)
163
184
  end
164
185
 
165
186
  # A certificate store initialized from the the bundle in #ca_bundle_path and
@@ -173,10 +194,10 @@ module Stripe
173
194
  # and is itself not thread safe.
174
195
  def ca_store
175
196
  @ca_store ||= begin
176
- store = OpenSSL::X509::Store.new
177
- store.add_file(ca_bundle_path)
178
- store
179
- end
197
+ store = OpenSSL::X509::Store.new
198
+ store.add_file(ca_bundle_path)
199
+ store
200
+ end
180
201
  end
181
202
 
182
203
  def enable_telemetry?
@@ -4,6 +4,8 @@ module Stripe
4
4
  class StripeObject
5
5
  include Enumerable
6
6
 
7
+ attr_reader :last_response
8
+
7
9
  @@permanent_attributes = Set.new([:id]) # rubocop:disable Style/ClassVars
8
10
 
9
11
  # The default :id method is deprecated and isn't useful to us
@@ -70,7 +72,8 @@ module Stripe
70
72
  @additive_params.include?(name)
71
73
  end
72
74
 
73
- def initialize(id = nil, opts = {})
75
+ def initialize(id = nil, opts = {}, api_mode = :v1, requestor = nil)
76
+ @api_mode = api_mode
74
77
  id, @retrieve_params = Util.normalize_id(id)
75
78
  @opts = Util.normalize_opts(opts)
76
79
  @original_values = {}
@@ -80,13 +83,15 @@ module Stripe
80
83
  @unsaved_values = Set.new
81
84
  @transient_values = Set.new
82
85
  @values[:id] = id if id
86
+ @last_response = nil
87
+ @requestor = requestor || APIRequestor.active_requestor
83
88
  end
84
89
 
85
- def self.construct_from(values, opts = {})
90
+ def self.construct_from(values, opts = {}, last_response = nil, api_mode = :v1, requestor = nil)
86
91
  values = Stripe::Util.symbolize_names(values)
87
92
 
88
93
  # work around protected #initialize_from for now
89
- new(values[:id]).send(:initialize_from, values, opts)
94
+ new(values[:id]).send(:initialize_from, values, opts, last_response, api_mode: api_mode, requestor: requestor)
90
95
  end
91
96
 
92
97
  # Determines the equality of two Stripe objects. Stripe objects are
@@ -148,7 +153,7 @@ module Stripe
148
153
  def update_attributes(values, opts = {}, dirty: true)
149
154
  values.each do |k, v|
150
155
  add_accessors([k], values) unless metaclass.method_defined?(k.to_sym)
151
- @values[k] = Util.convert_to_stripe_object(v, opts)
156
+ @values[k] = Util.convert_to_stripe_object(v, opts, api_mode: @api_mode, requestor: @requestor)
152
157
  dirty_value!(@values[k]) if dirty
153
158
  @unsaved_values.add(k)
154
159
  end
@@ -217,20 +222,22 @@ module Stripe
217
222
  # This allows us to remove certain features that cannot or should not be
218
223
  # serialized.
219
224
  def marshal_dump
220
- # The StripeClient instance in @opts is not serializable and is not
225
+ # The APIRequestor instance in @opts is not serializable and is not
221
226
  # really a property of the StripeObject, so we exclude it when
222
227
  # dumping
223
228
  opts = @opts.clone
229
+
230
+ # TODO: (major) Remove the :client option. This is not explicitly supported as a user-specified option.
224
231
  opts.delete(:client)
225
232
  [@values, opts]
226
233
  end
227
234
 
228
235
  # Implements custom decoding for Ruby's Marshal. Consumes data that's
229
236
  # produced by #marshal_dump.
230
- def marshal_load(data)
237
+ def marshal_load(data, api_mode: :v1)
231
238
  values, opts = data
232
- initialize(values[:id])
233
- initialize_from(values, opts)
239
+ initialize(values[:id], api_mode: api_mode)
240
+ initialize_from(values, opts, api_mode: api_mode, requestor: @requestor)
234
241
  end
235
242
 
236
243
  def serialize_params(options = {})
@@ -320,8 +327,8 @@ module Stripe
320
327
  # Here we swallow that error and issue a warning so at least
321
328
  # the program doesn't crash.
322
329
  warn("WARNING: Unable to remove method `#{method_name}`; " \
323
- "if custom, please consider renaming to a name that doesn't " \
324
- "collide with an API property name.")
330
+ "if custom, please consider renaming to a name that doesn't " \
331
+ "collide with an API property name.")
325
332
  end
326
333
  end
327
334
  end
@@ -351,17 +358,15 @@ module Stripe
351
358
  define_method(:"#{k}=") do |v|
352
359
  if v == ""
353
360
  raise ArgumentError, "You cannot set #{k} to an empty string. " \
354
- "We interpret empty strings as nil in requests. " \
355
- "You may set (object).#{k} = nil to delete the property."
361
+ "We interpret empty strings as nil in requests. " \
362
+ "You may set (object).#{k} = nil to delete the property."
356
363
  end
357
- @values[k] = Util.convert_to_stripe_object(v, @opts)
364
+ @values[k] = Util.convert_to_stripe_object(v, @opts, api_mode: @api_mode, requestor: @requestor)
358
365
  dirty_value!(@values[k])
359
366
  @unsaved_values.add(k)
360
367
  end
361
368
 
362
- if [FalseClass, TrueClass].include?(values[k].class)
363
- define_method(:"#{k}?") { @values[k] }
364
- end
369
+ define_method(:"#{k}?") { @values[k] } if [FalseClass, TrueClass].include?(values[k].class)
365
370
  end
366
371
  end
367
372
  end
@@ -369,7 +374,6 @@ module Stripe
369
374
  # Disabling the cop because it's confused by the fact that the methods are
370
375
  # protected, but we do define `#respond_to_missing?` just below. Hopefully
371
376
  # this is fixed in more recent Rubocop versions.
372
- # rubocop:disable Style/MissingRespondToMissing
373
377
  protected def method_missing(name, *args)
374
378
  # TODO: only allow setting in updateable classes.
375
379
  if name.to_s.end_with?("=")
@@ -405,16 +409,14 @@ module Stripe
405
409
 
406
410
  raise NoMethodError,
407
411
  e.message + ". HINT: The '#{name}' attribute was set in the " \
408
- "past, however. It was then wiped when refreshing the object " \
409
- "with the result returned by Stripe's API, probably as a " \
410
- "result of a save(). The attributes currently available on " \
411
- "this object are: #{@values.keys.join(', ')}"
412
+ "past, however. It was then wiped when refreshing the object " \
413
+ "with the result returned by Stripe's API, probably as a " \
414
+ "result of a save(). The attributes currently available on " \
415
+ "this object are: #{@values.keys.join(', ')}"
412
416
  end
413
417
  end
414
- # rubocop:enable Style/MissingRespondToMissing
415
-
416
418
  protected def respond_to_missing?(symbol, include_private = false)
417
- @values && @values.key?(symbol) || super
419
+ (@values && @values.key?(symbol)) || super
418
420
  end
419
421
 
420
422
  # Re-initializes the object based on a hash of values (usually one that's
@@ -429,13 +431,17 @@ module Stripe
429
431
  # * +:opts:+ Options for StripeObject like an API key.
430
432
  # * +:partial:+ Indicates that the re-initialization should not attempt to
431
433
  # remove accessors.
432
- protected def initialize_from(values, opts, partial = false)
434
+ protected def initialize_from(values, opts, last_response = nil, api_mode:, requestor: nil)
435
+ @api_mode = api_mode
436
+ @last_response = last_response
437
+ @requestor = requestor
438
+
433
439
  @opts = Util.normalize_opts(opts)
434
440
 
435
441
  # the `#send` is here so that we can keep this method private
436
- @original_values = self.class.send(:deep_copy, values)
442
+ @original_values = self.class.send(:deep_copy, values, api_mode: api_mode)
437
443
 
438
- removed = partial ? Set.new : Set.new(@values.keys - values.keys)
444
+ removed = Set.new(@values.keys - values.keys)
439
445
  added = Set.new(values.keys - @values.keys)
440
446
 
441
447
  # Wipe old state before setting new. This is useful for e.g. updating a
@@ -460,7 +466,21 @@ module Stripe
460
466
  self
461
467
  end
462
468
 
463
- protected def serialize_params_value(value, original, unsaved, force,
469
+ # Should only be for v2 events and lists, for now.
470
+ protected def _request(method:, path:, base_address:, params: {}, opts: {})
471
+ req_opts = RequestOptions.extract_opts_from_hash(opts)
472
+ req_opts = RequestOptions.combine_opts(@opts, req_opts)
473
+ @requestor.execute_request(
474
+ method,
475
+ path,
476
+ base_address,
477
+ params: params,
478
+ opts: req_opts
479
+ )
480
+ end
481
+
482
+ # rubocop:todo Metrics/PerceivedComplexity
483
+ protected def serialize_params_value(value, original, unsaved, force, # rubocop:todo Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
464
484
  key: nil)
465
485
  if value.nil?
466
486
  ""
@@ -494,8 +514,8 @@ module Stripe
494
514
  value
495
515
  else
496
516
  raise ArgumentError, "Cannot save property `#{key}` containing " \
497
- "an API resource. It doesn't appear to be persisted and is " \
498
- "not marked as `save_with_parent`."
517
+ "an API resource. It doesn't appear to be persisted and is " \
518
+ "not marked as `save_with_parent`."
499
519
  end
500
520
 
501
521
  elsif value.is_a?(Array)
@@ -515,7 +535,7 @@ module Stripe
515
535
  # example by appending a new hash onto `additional_owners` for an
516
536
  # account.
517
537
  elsif value.is_a?(Hash)
518
- Util.convert_to_stripe_object(value, @opts).serialize_params
538
+ Util.convert_to_stripe_object(value, @opts, api_mode: @api_mode, requestor: @requestor).serialize_params
519
539
 
520
540
  elsif value.is_a?(StripeObject)
521
541
  update = value.serialize_params(force: force)
@@ -535,24 +555,26 @@ module Stripe
535
555
  value
536
556
  end
537
557
  end
558
+ # rubocop:enable Metrics/PerceivedComplexity
538
559
 
539
560
  # Produces a deep copy of the given object including support for arrays,
540
561
  # hashes, and StripeObjects.
541
- private_class_method def self.deep_copy(obj)
562
+ private_class_method def self.deep_copy(obj, api_mode:)
542
563
  case obj
543
564
  when Array
544
- obj.map { |e| deep_copy(e) }
565
+ obj.map { |e| deep_copy(e, api_mode: api_mode) }
545
566
  when Hash
546
567
  obj.each_with_object({}) do |(k, v), copy|
547
- copy[k] = deep_copy(v)
568
+ copy[k] = deep_copy(v, api_mode: api_mode)
548
569
  copy
549
570
  end
550
571
  when StripeObject
551
572
  obj.class.construct_from(
552
- deep_copy(obj.instance_variable_get(:@values)),
553
- obj.instance_variable_get(:@opts).select do |k, _v|
554
- Util::OPTS_COPYABLE.include?(k)
555
- end
573
+ deep_copy(obj.instance_variable_get(:@values), api_mode: api_mode),
574
+ RequestOptions.copyable(obj.instance_variable_get(:@opts)),
575
+ nil,
576
+ api_mode,
577
+ obj.instance_variable_get(:@requestor)
556
578
  )
557
579
  else
558
580
  obj
@@ -41,9 +41,7 @@ module Stripe
41
41
 
42
42
  def [](name)
43
43
  values = @hash[name.downcase]
44
- if values && values.count > 1
45
- warn("Duplicate header values for `#{name}`; returning only first")
46
- end
44
+ warn("Duplicate header values for `#{name}`; returning only first") if values && values.count > 1
47
45
  values ? values.first : nil
48
46
  end
49
47
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+ # typed: true
3
+
4
+ module Stripe
5
+ class StripeService
6
+ # Initializes a new StripeService
7
+ def initialize(requestor)
8
+ @requestor = requestor
9
+ end
10
+
11
+ def request(method:, path:, base_address:, params: {}, opts: {})
12
+ @requestor.execute_request(
13
+ method,
14
+ path,
15
+ base_address,
16
+ params: params,
17
+ opts: RequestOptions.extract_opts_from_hash(opts)
18
+ )
19
+ end
20
+
21
+ def request_stream(method:, path:, base_address:, params: {}, opts: {}, &read_body_chunk_block)
22
+ @requestor.execute_request_stream(
23
+ method,
24
+ path,
25
+ base_address,
26
+ params: params,
27
+ opts: RequestOptions.extract_opts_from_hash(opts),
28
+ &read_body_chunk_block
29
+ )
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Stripe
4
+ class EventReasonRequest
5
+ attr_reader :id, :idempotency_key
6
+
7
+ def initialize(event_reason_request_payload = {})
8
+ @id = event_reason_request_payload[:id]
9
+ @idempotency_key = event_reason_request_payload[:idempotency_key]
10
+ end
11
+ end
12
+
13
+ class EventReason
14
+ attr_reader :type, :request
15
+
16
+ def initialize(event_reason_payload = {})
17
+ @type = event_reason_payload[:type]
18
+ @request = EventReasonRequest.new(event_reason_payload[:request])
19
+ end
20
+ end
21
+
22
+ class ThinEvent
23
+ attr_reader :id, :type, :created, :context, :related_object, :livemode, :reason
24
+
25
+ def initialize(event_payload = {})
26
+ @id = event_payload[:id]
27
+ @type = event_payload[:type]
28
+ @created = event_payload[:created]
29
+ @context = event_payload[:context]
30
+ @livemode = event_payload[:livemode]
31
+ @related_object = event_payload[:related_object]
32
+ return if event_payload[:reason].nil?
33
+
34
+ @reason = EventReason.new(event_payload[:reason])
35
+ end
36
+ end
37
+ end