dodopayments 2.1.2 → 2.2.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/README.md +1 -1
- data/lib/dodopayments/client.rb +7 -0
- data/lib/dodopayments/resources/webhooks.rb +11 -1
- data/lib/dodopayments/version.rb +1 -1
- data/lib/dodopayments.rb +1 -0
- data/rbi/dodopayments/client.rbi +6 -0
- data/rbi/dodopayments/resources/webhooks.rbi +10 -2
- data/sig/dodopayments/client.rbs +3 -0
- data/sig/dodopayments/resources/webhooks.rbs +3 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 288683b7ef76f820f060d6adff43714ad2fb7be3a72f47e3244d07c81e744fe8
|
|
4
|
+
data.tar.gz: 3f7d919faa8bf245058c30aa1fee3c7ab7a1a845036528e34bd3e8e81aa6f290
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1d7c7dc76e74e7da61a5762ec7132be03c49c1abd34b904d6c07ccfb1e9a24f0e54f45884cef06f14dbf09b695ffe6f6e8aea0719b00a2b2e532cdce79e5240
|
|
7
|
+
data.tar.gz: b0128ca6313bcabc75be7378752e04e9f4865538a0638782dd5e311467c46193aaa92798004ee9dd43970f804dffc2b7cca71df5138b16edd280ef0afbefac53
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.0 (2026-03-21)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v2.1.2...v2.2.0](https://github.com/dodopayments/dodopayments-ruby/compare/v2.1.2...v2.2.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **client:** add webhook support ([8f3488c](https://github.com/dodopayments/dodopayments-ruby/commit/8f3488c1db4e3c8b58c9d9bb208448db009c4ad3))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Chores
|
|
13
|
+
|
|
14
|
+
* **ci:** skip uploading artifacts on stainless-internal branches ([15197f0](https://github.com/dodopayments/dodopayments-ruby/commit/15197f0450856e33a2e6fa990ea4e0d0bc294022))
|
|
15
|
+
* **internal:** tweak CI branches ([dc3f7dc](https://github.com/dodopayments/dodopayments-ruby/commit/dc3f7dc0938f71b047786e11f56c4b51a1e0a776))
|
|
16
|
+
* **tests:** bump steady to v0.19.4 ([4247a60](https://github.com/dodopayments/dodopayments-ruby/commit/4247a60b34ccc131f2b906b03eb0f23841a18240))
|
|
17
|
+
* **tests:** bump steady to v0.19.5 ([7f4e044](https://github.com/dodopayments/dodopayments-ruby/commit/7f4e04431b6f274cccd98ef0d9bd322a1c73868a))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Refactors
|
|
21
|
+
|
|
22
|
+
* **tests:** switch from prism to steady ([62bcdf6](https://github.com/dodopayments/dodopayments-ruby/commit/62bcdf666e0b382ba8dc83bb530cff79c31931bc))
|
|
23
|
+
|
|
3
24
|
## 2.1.2 (2026-03-06)
|
|
4
25
|
|
|
5
26
|
Full Changelog: [v2.1.1...v2.1.2](https://github.com/dodopayments/dodopayments-ruby/compare/v2.1.1...v2.1.2)
|
data/README.md
CHANGED
data/lib/dodopayments/client.rb
CHANGED
|
@@ -24,6 +24,9 @@ module Dodopayments
|
|
|
24
24
|
# @return [String]
|
|
25
25
|
attr_reader :bearer_token
|
|
26
26
|
|
|
27
|
+
# @return [String, nil]
|
|
28
|
+
attr_reader :webhook_key
|
|
29
|
+
|
|
27
30
|
# @return [Dodopayments::Resources::CheckoutSessions]
|
|
28
31
|
attr_reader :checkout_sessions
|
|
29
32
|
|
|
@@ -103,6 +106,8 @@ module Dodopayments
|
|
|
103
106
|
#
|
|
104
107
|
# @param bearer_token [String, nil] Bearer Token for API authentication Defaults to `ENV["DODO_PAYMENTS_API_KEY"]`
|
|
105
108
|
#
|
|
109
|
+
# @param webhook_key [String, nil] Defaults to `ENV["DODO_PAYMENTS_WEBHOOK_KEY"]`
|
|
110
|
+
#
|
|
106
111
|
# @param environment [:live_mode, :test_mode, nil] Specifies the environment to use for the API.
|
|
107
112
|
#
|
|
108
113
|
# Each environment maps to a different base URL:
|
|
@@ -122,6 +127,7 @@ module Dodopayments
|
|
|
122
127
|
# @param max_retry_delay [Float]
|
|
123
128
|
def initialize(
|
|
124
129
|
bearer_token: ENV["DODO_PAYMENTS_API_KEY"],
|
|
130
|
+
webhook_key: ENV["DODO_PAYMENTS_WEBHOOK_KEY"],
|
|
125
131
|
environment: nil,
|
|
126
132
|
base_url: ENV["DODO_PAYMENTS_BASE_URL"],
|
|
127
133
|
max_retries: self.class::DEFAULT_MAX_RETRIES,
|
|
@@ -139,6 +145,7 @@ module Dodopayments
|
|
|
139
145
|
end
|
|
140
146
|
|
|
141
147
|
@bearer_token = bearer_token.to_s
|
|
148
|
+
@webhook_key = webhook_key&.to_s
|
|
142
149
|
|
|
143
150
|
super(
|
|
144
151
|
base_url: base_url,
|
|
@@ -175,8 +175,18 @@ module Dodopayments
|
|
|
175
175
|
|
|
176
176
|
# @param payload [String] The raw webhook payload as a string
|
|
177
177
|
#
|
|
178
|
+
# @param headers [Hash{String=>String}] The raw HTTP headers that came with the payload
|
|
179
|
+
#
|
|
180
|
+
# @param key [String, nil] The webhook signing key
|
|
181
|
+
#
|
|
178
182
|
# @return [Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
|
|
179
|
-
def unwrap(payload)
|
|
183
|
+
def unwrap(payload, headers:, key: @client.webhook_key)
|
|
184
|
+
if key.nil?
|
|
185
|
+
raise ArgumentError.new("Cannot verify a webhook without a key on either the client's webhook_key or passed in as an argument")
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
::StandardWebhooks::Webhook.new(key).verify(payload, headers)
|
|
189
|
+
|
|
180
190
|
parsed = JSON.parse(payload, symbolize_names: true)
|
|
181
191
|
Dodopayments::Internal::Type::Converter.coerce(Dodopayments::Models::UnwrapWebhookEvent, parsed)
|
|
182
192
|
end
|
data/lib/dodopayments/version.rb
CHANGED
data/lib/dodopayments.rb
CHANGED
data/rbi/dodopayments/client.rbi
CHANGED
|
@@ -23,6 +23,9 @@ module Dodopayments
|
|
|
23
23
|
sig { returns(String) }
|
|
24
24
|
attr_reader :bearer_token
|
|
25
25
|
|
|
26
|
+
sig { returns(T.nilable(String)) }
|
|
27
|
+
attr_reader :webhook_key
|
|
28
|
+
|
|
26
29
|
sig { returns(Dodopayments::Resources::CheckoutSessions) }
|
|
27
30
|
attr_reader :checkout_sessions
|
|
28
31
|
|
|
@@ -98,6 +101,7 @@ module Dodopayments
|
|
|
98
101
|
sig do
|
|
99
102
|
params(
|
|
100
103
|
bearer_token: T.nilable(String),
|
|
104
|
+
webhook_key: T.nilable(String),
|
|
101
105
|
environment: T.nilable(T.any(Symbol, String)),
|
|
102
106
|
base_url: T.nilable(String),
|
|
103
107
|
max_retries: Integer,
|
|
@@ -109,6 +113,8 @@ module Dodopayments
|
|
|
109
113
|
def self.new(
|
|
110
114
|
# Bearer Token for API authentication Defaults to `ENV["DODO_PAYMENTS_API_KEY"]`
|
|
111
115
|
bearer_token: ENV["DODO_PAYMENTS_API_KEY"],
|
|
116
|
+
# Defaults to `ENV["DODO_PAYMENTS_WEBHOOK_KEY"]`
|
|
117
|
+
webhook_key: ENV["DODO_PAYMENTS_WEBHOOK_KEY"],
|
|
112
118
|
# Specifies the environment to use for the API.
|
|
113
119
|
#
|
|
114
120
|
# Each environment maps to a different base URL:
|
|
@@ -171,7 +171,11 @@ module Dodopayments
|
|
|
171
171
|
end
|
|
172
172
|
|
|
173
173
|
sig do
|
|
174
|
-
params(
|
|
174
|
+
params(
|
|
175
|
+
payload: String,
|
|
176
|
+
headers: T::Hash[String, String],
|
|
177
|
+
key: T.nilable(String)
|
|
178
|
+
).returns(
|
|
175
179
|
T.any(
|
|
176
180
|
Dodopayments::CreditAddedWebhookEvent,
|
|
177
181
|
Dodopayments::CreditBalanceLowWebhookEvent,
|
|
@@ -208,7 +212,11 @@ module Dodopayments
|
|
|
208
212
|
end
|
|
209
213
|
def unwrap(
|
|
210
214
|
# The raw webhook payload as a string
|
|
211
|
-
payload
|
|
215
|
+
payload,
|
|
216
|
+
# The raw HTTP headers that came with the payload
|
|
217
|
+
headers:,
|
|
218
|
+
# The webhook signing key
|
|
219
|
+
key: @client.webhook_key
|
|
212
220
|
)
|
|
213
221
|
end
|
|
214
222
|
|
data/sig/dodopayments/client.rbs
CHANGED
|
@@ -15,6 +15,8 @@ module Dodopayments
|
|
|
15
15
|
|
|
16
16
|
attr_reader bearer_token: String
|
|
17
17
|
|
|
18
|
+
attr_reader webhook_key: String?
|
|
19
|
+
|
|
18
20
|
attr_reader checkout_sessions: Dodopayments::Resources::CheckoutSessions
|
|
19
21
|
|
|
20
22
|
attr_reader payments: Dodopayments::Resources::Payments
|
|
@@ -63,6 +65,7 @@ module Dodopayments
|
|
|
63
65
|
|
|
64
66
|
def initialize: (
|
|
65
67
|
?bearer_token: String?,
|
|
68
|
+
?webhook_key: String?,
|
|
66
69
|
?environment: :live_mode | :test_mode | nil,
|
|
67
70
|
?base_url: String?,
|
|
68
71
|
?max_retries: Integer,
|
|
@@ -81,7 +81,9 @@ module Dodopayments
|
|
|
81
81
|
| Dodopayments::SubscriptionUpdatedWebhookEvent)
|
|
82
82
|
|
|
83
83
|
def unwrap: (
|
|
84
|
-
String payload
|
|
84
|
+
String payload,
|
|
85
|
+
headers: ::Hash[String, String],
|
|
86
|
+
?key: String?
|
|
85
87
|
) -> (Dodopayments::CreditAddedWebhookEvent
|
|
86
88
|
| Dodopayments::CreditBalanceLowWebhookEvent
|
|
87
89
|
| Dodopayments::CreditDeductedWebhookEvent
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dodopayments
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dodo Payments
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03-
|
|
11
|
+
date: 2026-03-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: cgi
|
|
@@ -38,6 +38,20 @@ dependencies:
|
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: standardwebhooks
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
41
55
|
description:
|
|
42
56
|
email: support@dodopayments.com
|
|
43
57
|
executables: []
|