# Omise Elixir Client
[![Build Status](](
[![Coverage Status](](

**Omise for Elixir**

## Installation

  First, add `omise` to your list of dependencies in `mix.exs`:

  def deps do
    [{:omise, "~> 0.9.0"}]

  Then update your dependencies with:

  $ mix deps.get

## Configuration

Set the following configuration variables in `config/config.exs` file:

config :omise,
  public_key: "pkey_test_xxx",
  secret_key: "skey_test_xxx"

Or manually configure at runtime:

Omise.configure(public_key: "pkey_test_xxx", secret_key: "skey_test_xxx")

To configure the HTTP options, you could optionally add `:http_options` key to the omise configuration. For a full list of the available options, please check [HTTPoison documentation](

config :omise,
  http_options: [timeout: 60_000, recv_timeout: 60_000]

## Example

charge_params = [amount: 100_00, currency: "thb", card: "tokn_xxx"]

with {:ok, %Omise.Charge{paid: true}} <- Omise.Charge.create(charge_params) do
  # handle success
  IO.puts "Thank you :)"
  {:ok, %Omise.Charge{failure_code: failure_code}} ->
    # handle failure

  {:error, %Omise.Error{code: code, message: message}} ->
    # handle error

You can also set a per-request key and api version when making an API call:

Omise.Charge.list([], key: "skey_test_xxx", api_version: "2015-11-17")

Omise.Charge.retrieve("chrg_test_4yq7duw15p9hdrjp8oq", key: "skey_test_xxx")

  amount: 1000_00,
  currency: "thb",
  customer: "cust_test_xxx"
], key: "skey_test_xxx")

## Development

- Install all dependencies with `mix deps.get`
- Run tests with `mix test`

## Documentation