Current section
Files
Jump to
Current section
Files
lib/charges.ex
defmodule Conekta.Charges do
@moduledoc """
Functions for listing and updating charges.
Charges are created through orders (see `Conekta.Orders.create_charge/2`).
This module provides standalone listing and updating.
Endpoint: https://api.conekta.io/charges
"""
alias Conekta.Handler
alias Conekta.Client
alias Conekta.ChargeResponse
alias Conekta.ChargesResponse
@doc """
List all charges across all orders
**Method**: `GET`
Conekta.Charges.list()
# => {:ok, %Conekta.ChargesResponse{}}
"""
def list do
case Client.get_request("charges") do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %ChargesResponse{})}
end
end
@doc """
Get a charge by ID
**Method**: `GET`
Conekta.Charges.find(charge_id)
# => {:ok, %Conekta.ChargeResponse{}}
"""
def find(charge_id) do
case Client.get_request("charges/" <> charge_id) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %ChargeResponse{})}
end
end
@doc """
Update a charge's reference ID
**Method**: `PUT`
Conekta.Charges.update(charge_id, %Conekta.ChargeUpdateRequest{reference_id: "ref_123"})
# => {:ok, %Conekta.ChargeResponse{}}
"""
def update(charge_id, charge) do
case Client.put_request("charges/" <> charge_id, charge) do
{:ok, content} ->
body = Handler.handle_status_code(content)
{:ok, Poison.decode!(body, as: %ChargeResponse{})}
end
end
end