Opn Payments for Elixir
First, add omise to your list of dependencies in mix.exs:
def deps do
[{:omise, "~> 0.11.0"}]
endThen update your dependencies with:
$ mix deps.getSet the following configuration variables in config/config.exs:
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 the :http_options key to the Opn Payments configuration. For a full list of the available options, please check HTTPoison documentation.
config :omise,
http_options: [timeout: 60_000, recv_timeout: 60_000]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 :)"
else
{:ok, %Omise.Charge{failure_code: failure_code}} ->
# handle failure
{:error, %Omise.Error{code: code, message: message}} ->
# handle error
end
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")
Omise.Charge.create([
amount: 1000_00,
currency: "thb",
customer: "cust_test_xxx"
], key: "skey_test_xxx")The Omise Elixir SDK supports Passkey authentication for enhanced security and user experience. Passkey provides a passwordless authentication method that uses biometric authentication or device PINs, making payments more secure and convenient for users.
Before implementing Passkey authentication:
- Ensure your Omise account supports Passkey authentication
- Configure your frontend to collect proper card holder data (email/phoneNumber)
To use Passkey authentication, you must request cardholder data fields (email or phone number) during the payment process on the frontend. This information is required for the backend Passkey authentication setup.
Once you have created a token on the frontend that includes the email/phoneNumber of the user, you can now use this token to create a passkey charge.
To create a passkey charge you must set the authentication field in the charge request to PASSKEY. This will trigger the required flows and you will also be able to check the authenticated_by field in the charge response in order to check the actual authentication method. Here is an example code for creating a charge with the passkey flow:
Omise.Charge.create(
amount: 10_000,
currency: "thb",
card: token.id,
capture: true,
return_uri: "https://www.example.com/complete",
authentication: "PASSKEY"
)- Install all dependencies with
mix deps.get - Run tests with
mix test