ข้ามไปยังเนื้อหาหลัก

การ Authentication

Omise ใช้ API keys เพื่อ authenticate คำขอ คุณจะต้องใช้ keys ที่แตกต่างกันสำหรับการดำเนินการที่แตกต่างกันเพื่อรักษาความปลอดภัยการผูกรวมของคุณ

ภาพรวม

Omise ใช้ HTTP Basic Authentication โดยที่ API key ของคุณทำหน้าที่เป็น username และฟิลด์ password ว่างเปล่า คำขอ API ทั้งหมดต้องทำผ่าน HTTPS - การเรียกที่ทำผ่าน HTTP ธรรมดาจะล้มเหลว

สาม Types ของ API Keys

1. Public Key

ใช้สำหรับ: การดำเนินการฝั่ง client (เบราว์เซอร์ แอปมือถือ)

รูปแบบ: pkey_test_... (test) หรือ pkey_... (live)

ความสามารถ:

  • ✅ สร้าง tokens (tokenize บัตร)
  • ✅ สร้าง sources (สำหรับวิธีการชำระเงินทางเลือก)
  • ✅ ดู tokens และ sources
  • ❌ สร้าง charges (ต้องใช้ secret key)
  • ❌ เข้าถึงข้อมูลบัญชี

ปลอดภัยที่จะเปิดเผย: ใช่ public key ของคุณสามารถรวมอยู่ในโค้ดฝั่ง client อย่าง JavaScript, แอปมือถือ หรือ HTML ได้อย่างปลอดภัย

ตัวอย่างการใช้งาน

# สังเกตเครื่องหมายโคลอนหลัง key (รูปแบบ username:password โดยมี password ว่าง)
curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_5xp6c8ltm5wb5o45cls: \
-d "card[name]=Somchai Prasert" \
-d "card[number]=4242424242424242" \
-d "card[expiration_month]=12" \
-d "card[expiration_year]=2027" \
-d "card[security_code]=123"
ทำไมต้องใช้ Public Keys?

Public keys ช่วยให้คุณ tokenize ข้อมูลที่ละเอียดอ่อนบนฝั่ง client ดังนั้นข้อมูลบัตรจะไม่ผ่านเซิร์ฟเวอร์ของคุณเลย สิ่งนี้ช่วยลดความต้องการการปฏิบัติตาม PCI ของคุณอย่างมาก

2. Secret Key

ใช้สำหรับ: การดำเนินการฝั่ง server

รูปแบบ: skey_test_... (test) หรือ skey_... (live)

ความสามารถ:

  • ✅ สร้าง charges
  • ✅ สร้าง refunds
  • ✅ จัดการ customers
  • ✅ สร้างและจัดการ transfers
  • ✅ เข้าถึงข้อมูลบัญชีทั้งหมด
  • ✅ ดำเนินการทั้งหมด

ปลอดภัยที่จะเปิดเผย: ไม่! Secret keys ต้องเก็บเป็นความลับและใช้เฉพาะฝั่ง server เท่านั้น

ตัวอย่างการใช้งาน

curl https://api.omise.co/charges \
-X POST \
-u skey_test_5xp6c8n0jvds5mmjizz: \
-d "amount=100000" \
-d "currency=thb" \
-d "card=tokn_test_5xp6ca4dtzx5cskm9mk"
เก็บ Secret Keys ให้เป็นความลับ

อย่า commit secret keys ไปยัง version control, เปิดเผยในโค้ดฝั่ง client หรือแชร์สาธารณะ ใช้ environment variables หรือการจัดการ configuration ที่ปลอดภัยเสมอ

3. Chain Key

ใช้สำหรับ: การดำเนินการ sub-merchant (หากคุณกำลังสร้าง marketplace/platform)

รูปแบบ: ck_test_... (test) หรือ ck_... (live)

ความสามารถ:

  • ✅ ทำคำขอในนามของ sub-merchants ที่เชื่อมต่อ
  • ✅ ความสามารถทั้งหมดของ secret key สำหรับ sub-accounts

ปลอดภัยที่จะเปิดเผย: ไม่! ปฏิบัติต่อ chain keys ด้วยความปลอดภัยเช่นเดียวกับ secret keys

Chain keys มีความเกี่ยวข้องเฉพาะเมื่อคุณกำลังใช้ Omise Connect เพื่อจัดการบัญชี sub-merchant ผู้ขายส่วนใหญ่จะไม่ต้องการ chain keys

Test กับ Live Keys

แต่ละ key type มีทั้งเวอร์ชัน test และ live:

สภาพแวดล้อมPublic Key PrefixSecret Key Prefixวัตถุประสงค์
Testpkey_test_skey_test_การพัฒนาและทดสอบ
Livepkey_skey_ธุรกรรม production
การตรวจจับสภาพแวดล้อมอัตโนมัติ

Test keys ทำงานได้เฉพาะในโหมดทดสอบและ live keys ทำงานได้เฉพาะในโหมดจริงเท่านั้น สิ่งนี้ป้องกัน charges ที่เกิดขึ้นโดยไม่ได้ตั้งใจระหว่างการพัฒนา

จะหา Keys ของคุณได้ที่ไหน

  1. เข้าสู่ระบบ Omise Dashboard ของคุณ
  2. ไปที่ SettingsKeys
  3. คุณจะเห็น keys ของคุณสำหรับทั้งสภาพแวดล้อมทดสอบและจริง

Test Keys

Test keys พร้อมใช้งานทันทีหลังจากสมัคร - ไม่ต้องตรวจสอบ!

Live Keys

Live keys จะพร้อมใช้งานหลังจากคุณดำเนินการตรวจสอบธุรกิจให้เสร็จ ดูคู่มือ Going Live สำหรับรายละเอียด

วิธีการใช้ API Keys

HTTP Basic Authentication

Omise ใช้ HTTP Basic Authentication โดยที่:

  • Username: API key ของคุณ
  • Password: ว่าง (เว้นว่าง)

รูปแบบ authentication header คือ:

Authorization: Basic base64(api_key:)

สังเกตเครื่องหมายโคลอนหลัง API key - ฟิลด์ password ว่างเปล่าโดยเจตนา

ในตัวอย่างโค้ด

# Public key - สร้าง token
curl https://vault.omise.co/tokens \
-u pkey_test_YOUR_KEY:

# Secret key - สร้าง charge
curl https://api.omise.co/charges \
-u skey_test_YOUR_KEY:

แนวทางปฏิบัติที่ดีที่สุดด้านความปลอดภัย

ควรทำ ✅

  1. ใช้ Environment Variables

    # ไฟล์ .env
    OMISE_PUBLIC_KEY=pkey_test_...
    OMISE_SECRET_KEY=skey_test_...
  2. เก็บ Keys อย่างปลอดภัย

    • ใช้บริการจัดการ secrets (AWS Secrets Manager, Azure Key Vault ฯลฯ)
    • ใช้ environment variables บนเซิร์ฟเวอร์ของคุณ
    • เข้ารหัส keys ใน configuration ของคุณ
  3. หมุนเวียน Keys เป็นประจำ

    • คุณสามารถสร้าง keys ใหม่ใน dashboard ของคุณ
    • Keys เก่ายังคงใช้ได้จนกว่าคุณจะลบ
    • อัปเดตโค้ดของคุณทีละน้อยเพื่อหลีกเลี่ยง downtime
  4. ใช้ Keys ที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน

    • Development: Test keys
    • Staging: Test keys
    • Production: Live keys
  5. ตรวจสอบการใช้งาน Key

    • ตรวจสอบ dashboard ของคุณสำหรับการเรียก API ที่ไม่ได้รับอนุญาต
    • ตั้งค่าการแจ้งเตือนสำหรับกิจกรรมที่ผิดปกติ

ไม่ควรทำ ❌

  1. อย่า Commit Keys ไปยัง Version Control

    # เพิ่มใน .gitignore
    .env
    .env.local
    config/secrets.yml
  2. อย่าเปิดเผย Secret Keys ฝั่ง Client

    // ❌ ผิด - Secret key ใน JavaScript
    const omise = require('omise')({
    secretKey: 'skey_test_...' // ผู้ใช้มองเห็นได้!
    });
  3. อย่าแชร์ Keys สาธารณะ

    • อย่าโพสต์ keys ในตั๋วสนับสนุน
    • อย่าแชร์ keys ทางอีเมลหรือแชท
    • อย่ารวม keys ใน screenshots
  4. อย่า Hard-Code Keys

    // ❌ ผิด
    define('OMISE_SECRET_KEY', 'skey_test_5xp...');

    // ✅ ถูกต้อง
    define('OMISE_SECRET_KEY', getenv('OMISE_SECRET_KEY'));

ข้อผิดพลาด Authentication

Key ไม่ถูกต้อง

{
"object": "error",
"location": "https://www.omise.co/api-errors#authentication-failure",
"code": "authentication_failure",
"message": "authentication failed"
}

สาเหตุ:

  • ใช้ key type ผิด (public กับ secret)
  • พิมพ์ผิดใน API key
  • ใช้ key ที่ถูกลบแล้ว
  • Key ไม่ตรงกับสภาพแวดล้อม (test กับ live)

วิธีแก้ไข: ตรวจสอบ key ของคุณใน dashboard อีกครั้งและตรวจสอบว่าคุณกำลังใช้ key type ที่ถูกต้อง

ขาด Authentication

{
"object": "error",
"location": "https://www.omise.co/api-errors#authentication-required",
"code": "authentication_required",
"message": "authentication required"
}

สาเหตุ: ไม่มี API key ที่ให้ไว้ในคำขอ

วิธีแก้ไข: ตรวจสอบให้แน่ใจว่า HTTP client ของคุณถูกกำหนดค่าให้ส่ง Basic Authentication headers

การจัดการ Key

การสร้าง Keys ใหม่

  1. ไปที่ SettingsKeys ใน dashboard ของคุณ
  2. คลิก Generate New Key
  3. เลือก key type (Public หรือ Secret)
  4. คัดลอก key ใหม่ทันที (คุณไม่สามารถดึงมันมาภายหลังได้)
  5. อัปเดตโค้ดแอปพลิเคชันของคุณ
  6. ทดสอบอย่างละเอียดก่อนลบ keys เก่า

การลบ Keys

  1. สร้างและ deploy keys ใหม่ก่อน
  2. ตรวจสอบให้แน่ใจว่าบริการทั้งหมดกำลังใช้ keys ใหม่
  3. ลบ keys เก่าจาก dashboard ของคุณ
  4. ตรวจสอบข้อผิดพลาด authentication
การลบ Key

การลบ key จะทำให้มันไม่ถูกต้องทันที ตรวจสอบให้แน่ใจว่าไม่มีบริการยังคงใช้ key ก่อนลบ!

FAQ

ฉันสามารถใช้ secret key ในแอปมือถือได้หรือไม่?

ไม่ได้! โค้ดแอปมือถือสามารถ decompile ได้ ทำให้ secret key ของคุณถูกเปิดเผย ควรทำเสมอ:

  • ใช้ public key ของคุณในแอปมือถือ
  • ส่ง tokens ไปยังเซิร์ฟเวอร์ของคุณ
  • สร้าง charges ฝั่ง server ด้วย secret key ของคุณ

ดูคู่มือ mobile SDK ของเราสำหรับการใช้งานที่เหมาะสม

ฉันจะเปลี่ยนจากโหมดทดสอบไปยังโหมดจริงได้อย่างไร?

เพียงแค่แทนที่ test keys ของคุณด้วย live keys ในโค้ดของคุณ:

// เปลี่ยนจาก:
const omise = require('omise')({
secretKey: 'skey_test_...'
});

// เป็น:
const omise = require('omise')({
secretKey: 'skey_...' // ไม่มี prefix "_test_"
});

โค้ดการผูกรวมของคุณยังคงเหมือนเดิม!

จะทำอย่างไรถ้า keys ของฉันถูกบุกรุก?
  1. ทันที: สร้าง keys ใหม่ใน dashboard ของคุณ
  2. ลบ keys ที่ถูกบุกรุก
  3. อัปเดต บริการทั้งหมดของคุณด้วย keys ใหม่
  4. ตรวจสอบ บัญชีของคุณสำหรับ charges ที่ไม่ได้รับอนุญาต
  5. ติดต่อ support@omise.co เพื่อรายงานเหตุการณ์

เราแนะนำให้หมุนเวียน keys เป็นมาตรการป้องกันหาก:

  • นักพัฒนาที่มีสิทธิ์เข้าถึง key ออกจากบริษัทของคุณ
  • คุณสงสัยว่ามีการละเมิดความปลอดภัย
  • Keys ถูก commit ไปยัง repositories สาธารณะโดยไม่ได้ตั้งใจ
ฉันสามารถมีหลายชุดของ keys ได้หรือไม่?

แต่ละบัญชีมี test keys หนึ่งชุดและ live keys หนึ่งชุด อย่างไรก็ตาม คุณสามารถ:

  • สร้าง keys ใหม่ได้ตลอดเวลา (keys เก่ายังคงใช้ได้)
  • สร้างหลายบัญชี Omise สำหรับแบรนด์/ธุรกิจที่แตกต่างกัน
  • ใช้ sub-accounts กับ Omise Connect (สำหรับ platforms)
Keys หมดอายุหรือไม่?

ไม่ API keys ไม่หมดอายุโดยอัตโนมัติ อย่างไรก็ตาม เราแนะนำให้:

  • หมุนเวียน keys เป็นระยะ (ทุก 6-12 เดือน)
  • สร้าง keys ใหม่เมื่อสมาชิกทีมที่มีสิทธิ์เข้าถึงออกไป
  • แทนที่ keys ทันทีหากถูกบุกรุก
อะไรคือความแตกต่างระหว่าง vault.omise.co และ api.omise.co?
  • vault.omise.co: ใช้กับ public keys สำหรับ tokenization (รักษาความปลอดภัยข้อมูลบัตร)
  • api.omise.co: ใช้กับ secret keys สำหรับการดำเนินการอื่นๆ ทั้งหมด

การแยกนี้ช่วยให้แน่ใจว่าข้อมูลบัตรที่ละเอียดอ่อนไม่เคยไปถึงเซิร์ฟเวอร์ของคุณหรือ main API

ทรัพยากรที่เกี่ยวข้อง


มีคำถามหรือไม่? ติดต่อ support@omise.co หรือตรวจสอบ API Reference สำหรับเอกสาร endpoint โดยละเอียด