Closed xixa closed 1 year ago
For anyone stumbling upon this, I've created a PR to bring back the delete
method in: https://github.com/beam-community/stripity_stripe/pull/753.
As a workaround while we wait for the maintainers to get to it, you can either:
Stripe.Request
that does exactly the same as the SDK would do:defmodule MyApp.Stripe do
@spec delete_subscription(String.t()) :: {:ok, Stripe.Subscription.t()} | {:error, Stripe.Error.t()}
def delete_subscription(id) do
Stripe.Request.new_request()
|> Stripe.Request.put_endpoint("subscriptions/#{Stripe.Request.get_id!(id)}")
|> Stripe.Request.put_method(:delete)
|> Stripe.Request.put_params(%{})
|> Stripe.Request.make_request()
end
end
MyApp.Stripe.delete_subscription("sub_12345")
If you need parameters:
defmodule MyApp.Stripe do
@spec delete_subscription(String.t(), map) :: {:ok, Stripe.Subscription.t()} | {:error, Stripe.Error.t()}
def delete_subscription(id, params \\ %{}) do
Stripe.Request.new_request()
|> Stripe.Request.put_endpoint("subscriptions/#{Stripe.Request.get_id!(id)}")
|> Stripe.Request.put_method(:delete)
|> Stripe.Request.put_params(params)
|> Stripe.Request.make_request()
end
end
MyApp.Stripe.delete_subscription("sub_12345", %{invoice_now: true})
If you want to be fully covered by what stripity_stripe
does:
defmodule MyApp.Stripe do
@doc """
Delete a subscription.
Takes the subscription `id` or a `Stripe.Subscription` struct.
"""
@spec delete_subscription(Stripe.id() | Stripe.Subscription.t()) :: {:ok, Stripe.Subscription.t()} | {:error, Stripe.Error.t()}
def delete_subscription(id), do: delete_subscription(id, %{}, [])
@doc """
Delete a subscription.
Takes the subscription `id` or a `Stripe.Subscription` struct.
Second argument can be a map of cancellation `params`, such as `invoice_now`,
or a list of options, such as custom API key.
"""
@spec delete_subscription(Stripe.id() | Stripe.Subscription.t(), Stripe.options()) :: {:ok, Stripe.Subscription.t()} | {:error, Stripe.Error.t()}
def delete_subscription(id, opts) when is_list(opts) do
delete_subscription(id, %{}, opts)
end
@spec delete_subscription(Stripe.id() | Stripe.Subscription.t(), params) :: {:ok, Stripe.Subscription.t()} | {:error, Stripe.Error.t()}
when params: %{
optional(:invoice_now) => boolean,
optional(:prorate) => boolean
}
def delete_subscription(id, params) when is_map(params) do
delete_subscription(id, params, [])
end
@doc """
Delete a subscription.
Takes the subscription `id` or a `Stripe.Subscription` struct.
Second argument is a map of cancellation `params`, such as `invoice_now`.
Third argument is a list of options, such as custom API key.
"""
@spec delete_subscription(Stripe.id() | Stripe.Subscription.t(), params, Stripe.options()) ::
{:ok, Stripe.Subscription.t()} | {:error, Stripe.Error.t()}
when params: %{
optional(:invoice_now) => boolean,
optional(:prorate) => boolean
}
def delete_subscription(id, params, opts) do
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint("subscriptions/#{Stripe.Request.get_id!(id)}")
|> Stripe.Request.put_method(:delete)
|> Stripe.Request.put_params(params)
|> Stripe.Request.make_request()
end
end
Definitely fat fingered that one. Sorry about that. Will fix in 2.17.1
Hi,
Subscription.delete
was entirely removed from the module on 2.17, but Isn't it just its use withat_period_end
that was deprecated as opposed to the entire method?How can you achieve immediate subscription cancelation otherwise?