ไลบรารี Elixir (omise-elixir)
ไลบรารี omise-elixir มอบอินเทอร์เฟซ Elixir ที่เป็นมาตรฐานสำหรับ Omise API พร้อมด้วย pattern matching, ฟีเจอร์ OTP และการผสานรวม Phoenix ที่ยอดเยี่ยม
การติดตั้ง
การใช้ Mix
เพิ่มลงใน mix.exs ของคุณ:
def deps do
[
{:omise, "~> 0.11"}
]
end
จากนั้นรัน:
mix deps.get
ข้อกำหนด
- Elixir 1.10 หรือสูงกว่า (รวมถึง Elixir 1.14+)
- Erlang/OTP 22+ (รวมถึง OTP 25+)
- Mix สำหรับการจัดการ dependency
- Phoenix 1.6+ (ไม่บังคับ สำหรับแอปพลิเคชัน Phoenix)
เริ่มต้นอย่างรวดเร็ว
การกำหนดค่าพื้นฐาน
# กำหนดค่า API keys ของคุณ
Omise.configure(
public_key: "pkey_test_123456789",
secret_key: "skey_test_123456789",
api_version: "2019-05-29"
)
การกำหนดค่า Phoenix
# config/config.exs
config :omise,
public_key: System.get_env("OMISE_PUBLIC_KEY"),
secret_key: System.get_env("OMISE_SECRET_KEY"),
api_version: "2019-05-29"
# config/runtime.exs (Phoenix 1.6+)
import Config
config :omise,
public_key: System.fetch_env!("OMISE_PUBLIC_KEY"),
secret_key: System.fetch_env!("OMISE_SECRET_KEY")
ตัวแปรสภาพแวดล้อม
# การพัฒนา/ทดสอบ
export OMISE_SECRET_KEY=skey_test_123456789
export OMISE_PUBLIC_KEY=pkey_test_123456789
# ผลิตภาพ
# export OMISE_SECRET_KEY=skey_live_123456789
# export OMISE_PUBLIC_KEY=pkey_live_123456789
การดำเนินการทั่วไป
การสร้าง ค่าธรรมเนียม
# สร้างค่าธรรมเนียมด้วย card token
{:ok, charge} = Omise.Charge.create(
amount: 100_000, # 1,000.00 บาท (ในหน่วยสกุลเงินที่เล็กที่สุด)
currency: "THB",
card: "tokn_test_123",
description: "Order #1234",
metadata: %{
order_id: "1234",
customer_name: "John Doe"
}
)
case charge do
%{paid: true} ->
IO.puts("Charge successful: #{charge.id}")
%{paid: false} ->
IO.puts("Charge failed: #{charge.failure_message}")
end
ด้วย Pattern Matching
defmodule Paymentบริการ do
def create_charge(token, amount) do
case Omise.Charge.create(amount: amount, currency: "THB", card: token) do
{:ok, %{paid: true} = charge} ->
{:ok, charge}
{:ok, %{paid: false, failure_message: message}} ->
{:error, message}
{:error, error} ->
{:error, error}
end
end
end
ด้วย 3D Secure
def create_secure_charge(token, amount, return_uri) do
case Omise.Charge.create(
amount: amount,
currency: "THB",
card: token,
return_uri: return_uri
) do
{:ok, %{authorized: true, authorize_uri: uri} = charge} when not is_nil(uri) ->
{:redirect, uri}
{:ok, %{authorized: true, paid: true} = charge} ->
{:success, charge}
{:ok, %{failure_message: message}} ->
{:error, message}
{:error, error} ->
{:error, error}
end
end
การดึงค่าธรรมเนียม
case Omise.Charge.retrieve("chrg_test_123") do
{:ok, charge} ->
IO.puts("Amount: #{charge.amount}")
IO.puts("Currency: #{charge.currency}")
IO.puts("Status: #{charge.status}")
IO.puts("Paid: #{charge.paid}")
{:error, error} ->
IO.puts("Error: #{inspect(error)}")
end