Current section
Files
Jump to
Current section
Files
lib/payment_links.ex
defmodule Conekta.PaymentLinks do
@moduledoc """
Functions for creating and managing payment links (checkouts).
Endpoint: https://api.conekta.io/checkouts
"""
alias Conekta.Handler
alias Conekta.Client
alias Conekta.CheckoutResponse
alias Conekta.CheckoutsResponse
@doc """
Create a new payment link
[Conekta Documentation](https://developers.conekta.com/api#create-checkout)
**Method**: `POST`
Conekta.PaymentLinks.create(%Conekta.Checkout{})
# => {:ok, %Conekta.CheckoutResponse{}}
"""
def create(checkout) do
case Client.post_request("checkouts", checkout) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %CheckoutResponse{})}
end
end
@doc """
List all payment links
**Method**: `GET`
Conekta.PaymentLinks.list()
# => {:ok, %Conekta.CheckoutsResponse{}}
"""
def list do
case Client.get_request("checkouts") do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %CheckoutsResponse{})}
end
end
@doc """
Get a payment link by ID
**Method**: `GET`
Conekta.PaymentLinks.find(checkout_id)
# => {:ok, %Conekta.CheckoutResponse{}}
"""
def find(checkout_id) do
case Client.get_request("checkouts/" <> checkout_id) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %CheckoutResponse{})}
end
end
@doc """
Cancel a payment link
**Method**: `PUT`
Conekta.PaymentLinks.cancel(checkout_id)
# => {:ok, %Conekta.CheckoutResponse{}}
"""
def cancel(checkout_id) do
case Client.put_request("checkouts/" <> checkout_id <> "/cancel", %{}) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %CheckoutResponse{})}
end
end
@doc """
Send a payment link via email
**Method**: `POST`
Conekta.PaymentLinks.send_email(checkout_id, "customer@example.com")
# => {:ok, %Conekta.CheckoutResponse{}}
"""
def send_email(checkout_id, email) do
case Client.post_request("checkouts/" <> checkout_id <> "/email", %{email: email}) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %CheckoutResponse{})}
end
end
@doc """
Send a payment link via SMS
**Method**: `POST`
Conekta.PaymentLinks.send_sms(checkout_id, "+521234567890")
# => {:ok, %Conekta.CheckoutResponse{}}
"""
def send_sms(checkout_id, phone) do
case Client.post_request("checkouts/" <> checkout_id <> "/sms", %{phonenumber: phone}) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %CheckoutResponse{})}
end
end
end