ไลบรารี่ Ruby (omise-ruby)
omise-ruby gem มอบอินเทอร์เฟส Ruby ที่ครอบคลุมสำหรับ Omise API พร้อมการรวม Rails ที่ยอดเยี่ยม โค้ด Ruby ตามหลักสำนวน และการจัดการข้อผิดพลาดที่แข็งแกร่ง
การติดตั้ง
การใช้ Bundler (แนะนำ)
เพิ่มลงใน Gemfile ของคุณ:
gem 'omise', '~> 0.11.0'
จากนั้นรัน:
bundle install
การใช้ RubyGems
gem install omise
ข้อกำหนด
- Ruby 2.6 หรือสูงกว่า (รวมถึง Ruby 3.x)
- Bundler (สำหรับแอปพลิเคชัน Rails)
- การเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้สำหรับการเรียก API
เริ่มต้นอย่างรวดเร็ว
การกำหนดค่าพื้นฐาน
require 'omise'
# กำหนดค่าด้วย API keys ของคุณ
Omise.api_key = 'skey_test_123456789'
Omise.api_version = '2019-05-29'
# ตัวเลือก: ตั้งค่า API endpoint (สำหรับการทดสอบ)
# Omise.api_url = 'https://api.omise.co'
การกำหนดค่า Rails
สร้าง initializer ที่ config/initializers/omise.rb:
# config/initializers/omise.rb
Omise.api_key = ENV['OMISE_SECRET_KEY']
Omise.api_version = '2019-05-29'
# กำหนดค่า timeout (ตัวเลือก)
Omise.timeout = 30 # วินาที
# เปิดใช้งานโหมดดีบักในการพัฒนา
Omise.debug = Rails.env.development?
ตัวแปรสภาพแวดล้อม
เพิ ่มลงในไฟล์ .env ของคุณ:
# การพัฒนา/ทดสอบ
OMISE_SECRET_KEY=skey_test_123456789
OMISE_PUBLIC_KEY=pkey_test_123456789
# ผลิตภาพ
# OMISE_SECRET_KEY=skey_live_123456789
# OMISE_PUBLIC_KEY=pkey_live_123456789
การตรวจสอบสิทธิ์
ไลบรารี่ใช้ secret key ของคุณสำหรับการดำเนินการ API ทั้งหมด:
# ตัวเลือก 1: การกำหนดค่าแบบทั่วโลก (แนะนำ)
Omise.api_key = ENV['OMISE_SECRET_KEY']
# ตัวเลือก 2: การกำหนดค่า ต่อคำขอ
charge = Omise::Charge.retrieve('chrg_test_123', key: 'skey_test_alternate')
การดำเนินการทั่วไป
การสร้างค่าธรรมเนียม
ด ้วย Token
# สร้างค่าธรรมเนียมด้วยโทเคนบัตร
charge = Omise::Charge.create(
amount: 100_000, # 1,000.00 THB (in smallest currency unit)
currency: 'THB',
card: 'tokn_test_123',
description: 'Order #1234',
metadata: {
order_id: '1234',
customer_name: 'John Doe'
}
)
if charge.paid
puts "Charge successful: #{charge.id}"
else
puts "Charge failed: #{charge.failure_message}"
end
ด้วยลูกค้า
# สร้างค่าธรรมเนียมสำหรับลูกค้าที่มีอยู่
charge = Omise::Charge.create(
amount: 50_000,
currency: 'THB',
customer: 'cust_test_123',
description: 'Subscription payment'
)
ด้วย 3D Secure
# สร้างค่าธรรมเนียมที่อาจต้องใช้ 3D Secure
charge = Omise::Charge.create(
amount: 100_000,
currency: 'THB',
card: 'tokn_test_123',
return_uri: 'https://example.com/payment/callback'
)
if charge.authorized
if charge.authorize_uri
# เปลี่ยนเส้นทางลูกค้าไปยัง authorize_uri สำหรับ 3D Secure
redirect_to charge.authorize_uri
else
# เรียกเก็บเงินเสร็จสมบูรณ์โดยไม่ต้องใช้ 3D Secure
process_successful_payment(charge)
end
end
การดึงค่าธรรมเนียม
# ดึงค่าธรรมเนียมตาม ID
charge = Omise::Charge.retrieve('chrg_test_123')
puts "Amount: #{charge.amount}"
puts "Currency: #{charge.currency}"
puts "Status: #{charge.status}"
puts "Paid: #{charge.paid}"
การแสดงรายชื่อค่าธรรมเนียม
# แสดงรายการค่าธร รมเนียมทั้งหมดพร้อมการแบ่งหน้า
charges = Omise::Charge.list(
limit: 20,
offset: 0,
order: 'reverse_chronological'
)
charges.each do |charge|
puts "#{charge.id}: #{charge.amount} #{charge.currency}"
end
# แสดงรายการค่าธรรมเนียมพร้อมตัวกรอง
recent_charges = Omise::Charge.list(
from: 1.week.ago.to_date.iso8601,
to: Date.today.iso8601
)
การสร้างลูกค้า
# สร้างลูกค้าโดยไม่มีบัตร
customer = Omise::Customer.create(
email: 'customer@example.com',
description: 'John Doe',
metadata: {
user_id: '12345',
account_type: 'premium'
}
)
puts "Customer created: #{customer.id}"
การบันทึกบัตรเข้าไปในลูกค้า
# อัปเดตลูกค้าด้วยโทเคนบัตร
customer = Omise::Customer.retrieve('cust_test_123')
customer.update(card: 'tokn_test_456')
puts "Card saved: #{customer.default_card}"
# หรือสร้างลูกค้าพร้อมบัตรในขั้นตอนเดียว
customer = Omise::Customer.create(
email: 'customer@example.com',
description: 'John Doe',
card: 'tokn_test_123'
)
การแสดงรายชื่อบัตรลูกค้า
customer = Omise::Customer.retrieve('cust_test_123')
customer.cards.each do |card|
puts "#{card.brand} ending in #{card.last_digits}"
puts "Expires: #{card.expiration_month}/#{card.expiration_year}"
end
การสร้างการคืนเงิน
# คืนเงินเต็มจำนวน
refund = Omise::Refund.create(
charge: 'chrg_test_123',
amount: nil # nil สำหรับคืนเงินเต็มจำนวน
)
# คืนเงินบางส่วน
refund = Omise::Refund.create(
charge: 'chrg_test_123',
amount: 25_000, # 250.00 THB
metadata: {
reason: 'customer_request',
ticket_id: 'TICKET-123'
}
)
puts "Refund #{refund.id}: #{refund.amount} #{refund.currency}"
การสร้างการโอน
# สร้างการโอนไปยังบัญชีธนาคารของคุณ
transfer = Omise::Transfer.create(
amount: 500_000, # 5,000.00 THB
recipient: 'recp_test_123',
metadata: {
payout_id: 'PAYOUT-456'
}
)
puts "Transfer #{transfer.id}: #{transfer.amount}"