Current section
Files
Jump to
Current section
Files
lib/securion.ex
defmodule Securion do
@moduledoc """
Elixir client library to the [SecurionPay](https://securionpay.com) payment
gateway REST APIs.
> Please refer to the [docs](https://securionpay.com/docs/api) of the original REST
APIs when in doubt. This client library is a thin wrapper around it and
most details are left unchanged.
However, some API shortcuts (e.g. on-the-go card creation for new
subscriptions, see the
[https://securionpay.com/docs/api#subscription-create](docs))
were removed in favor of simpler, composable APIs.
`securion` doesn't fully cover the original APIs yet, possibly ever. Only
core features are available. Most notably, subscriptions, plans, and events
are *not* supported.
## Installation
Add `securion` as dependency in `mix.exs`:
defp deps do
[
{:securion, "~> x.y.z"}
]
end
## Configuration
You must provide your SecurionPay API secret key. The public key is **not** required.
# config/config.exs
config :securion,
secret_key: "sk_ ..."
You should also run your tests with test-only API keys, like so:
# config/test.exs
config :securion,
secret_key: "sk_test_ ..."
## Overview
- `Securion.Customer` - Customers APIs.
- `Securion.Card` - Payment cards APIs.
- `Securion.Token` - One-time only tokens for safely handling payment
cards.
- `Securion.Charge` - Transactions APIs.
"""
import Securion.Resource
@default_limit 10
@doc """
Fetches a page of SecurionPay resources (`list`). `limit`
determines the maximum number of resources.
"""
def fetch_list(list, limit \\ @default_limit) do
get(list.path, list.params ++ [limit: limit])
end
@doc """
Fetches a page of SecurionPay resources (`list`). `limit`
determines the maximum number of resources.
**Only resources that follow `cursor` will be selected.**
"""
def fetch_list_after(list, cursor, limit \\ @default_limit) do
get(list.path, list.params ++ [limit: limit, startingAfterId: cursor])
end
@doc """
Fetches a page of SecurionPay resources (`list`). `limit`
determines the maximum number of resources.
**Only resources that precede `cursor` will be selected.**
"""
def fetch_list_before(list, cursor, limit \\ @default_limit) do
get(list.path, list.params ++ [limit: limit, startingBeforeId: cursor])
end
end