Current section

Files

Jump to
conekta lib subscriptions.ex
Raw

lib/subscriptions.ex

defmodule Conekta.Subscriptions do
@moduledoc """
Functions for managing customer subscriptions.
Endpoint: https://api.conekta.io/customers/{customer_id}/subscription
"""
alias Conekta.Handler
alias Conekta.Client
alias Conekta.SubscriptionResponse
@doc """
Create a subscription for a customer
[Conekta Documentation](https://developers.conekta.com/api#create-subscription)
**Method**: `POST`
Conekta.Subscriptions.create(customer_id, %Conekta.SubscriptionRequest{plan_id: "plan_123"})
# => {:ok, %Conekta.SubscriptionResponse{}}
"""
def create(customer_id, subscription) do
case Client.post_request("customers/" <> customer_id <> "/subscription", subscription) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %SubscriptionResponse{})}
end
end
@doc """
Get a customer's subscription
[Conekta Documentation](https://developers.conekta.com/api#subscription)
**Method**: `GET`
Conekta.Subscriptions.get(customer_id)
# => {:ok, %Conekta.SubscriptionResponse{}}
"""
def get(customer_id) do
case Client.get_request("customers/" <> customer_id <> "/subscription") do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %SubscriptionResponse{})}
end
end
@doc """
Update a customer's subscription
[Conekta Documentation](https://developers.conekta.com/api#update-subscription)
**Method**: `PUT`
Conekta.Subscriptions.update(customer_id, %Conekta.SubscriptionRequest{plan_id: "new_plan"})
# => {:ok, %Conekta.SubscriptionResponse{}}
"""
def update(customer_id, subscription) do
case Client.put_request("customers/" <> customer_id <> "/subscription", subscription) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %SubscriptionResponse{})}
end
end
@doc """
Pause a customer's subscription
**Method**: `POST`
Conekta.Subscriptions.pause(customer_id)
# => {:ok, %Conekta.SubscriptionResponse{}}
"""
def pause(customer_id) do
case Client.post_request("customers/" <> customer_id <> "/subscription/pause") do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %SubscriptionResponse{})}
end
end
@doc """
Resume a paused subscription
**Method**: `POST`
Conekta.Subscriptions.resume(customer_id)
# => {:ok, %Conekta.SubscriptionResponse{}}
"""
def resume(customer_id) do
case Client.post_request("customers/" <> customer_id <> "/subscription/resume") do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %SubscriptionResponse{})}
end
end
@doc """
Cancel a customer's subscription
**Method**: `POST`
Conekta.Subscriptions.cancel(customer_id)
# => {:ok, %Conekta.SubscriptionResponse{}}
"""
def cancel(customer_id) do
case Client.post_request("customers/" <> customer_id <> "/subscription/cancel") do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %SubscriptionResponse{})}
end
end
end