การยืนยันตัวตน
Omise ใช้การยืนยันตัวตน HTTP Basic ด้วยคีย์ API มาเรียนรู้วิธีการยืนยันตัวตนคำขอของคุณอย่างปลอดภัยและเลือกคีย์ที่เหมาะสมสำหรับแต่ละการดำเนินการ
ภาพรวม
คำขอ Omise API ทั้งหมดจำเป็นต้องได้รับการยืนยันตัวตนโดยใช้คีย์ API ใดคีย์หนึ่งของคุณ Omise มีคีย์หลายประเภทสำหรับวัตถุประสงค์ที่แตกต่างกัน โดยแต่ละคีย์จะมีสิทธิ์การเข้าถึงและข้อกำหนดด้านความปลอดภัยที่เฉพาะเจาะจง
- คีย์สาธารณะ (
pkey_*) → โค้ดฝั่งไคลเอนต์ สร้างโทเค็น/แหล่งที่มาเท่านั้น - คีย์ลับ (
skey_*) → โค้ดฝั่งเซิร์ฟเวอร์ เข้าถึง API ได้อย่างสมบูรณ์ - ห้าม เปิดเผยคีย์ลับของคุณในโค้ดฝั่งไคลเอนต์หรือที่เก็บข้อมูลสาธารณะโดยเด็ดขาด
คีย์ API
ประเภทของคีย์
Omise มีคีย์ API สามประเภท:
| ประเภทคีย์ | รูปแบบ | ใช้สำหรับ | ใช้ที่ไหน | ระดับการเข้าถึง |
|---|---|---|---|---|
| คีย์สาธารณะ | pkey_test_* / pkey_live_* | การทำโทเค็นบัตร การสร้างแหล่งที่มา | ฝั่งไคลเอนต์ (เบราว์เซอร์ แอปมือถือ) | จำกัด - สามารถสร้างโทเค็นและแหล่งที่มาเท่านั้น |
| คีย์ลับ | skey_test_* / skey_live_* | การเรียกเก็บเงิน ลูกค้า การคืนเงิน ทุกการดำเนินการ | ฝั่งเซิร์ฟเวอร์เท่านั้น | เข้าถึง API ได้อย่างสมบูรณ์ |
| Chain Key | chain_* | การดำเนินการของบัญชีหลักต่อผู้ขายย่อย | ฝั่งเซิร์ฟเวอร์เท่านั้น | การจัดการผู้ขายย่อย |
คีย์ทดสอบ vs คีย์จริง
คีย์แต่ละประเภทมีเวอร์ชันทดสอบและเวอร์ชันจริง
คีย์ทดสอบ (สำหรับการพัฒนา)
- มี
_test_ในสตริงคีย์ - ตัวอย่าง:
skey_test_5xuy4w91xqz7d1w9u0t - ✅ ปลอดภัยสำหรับการพัฒนาและการทดสอบ
- ✅ ยอมรับหมายเลขบัตรทดสอบ
- ✅ ไม่ประมวลผลเงินจริง
- ✅ ทริกเกอร์ Webhook ทดสอบ
คีย์จริง (สำหรับการใช้งานจริง)
- ไม่มี
_test_ - ตัวอย่าง:
skey_live_5xuy4w91xqz7d1w9u0t - ⚠️ ประมวลผลการชำระเงินจริง
- ⚠️ เรียกเก็บเงินจากบัตรจริง
- ⚠️ จำเป็นต้องเก็บรักษาอย่างปลอดภัย
อย่า commit คีย์จริงลงใน version control ให้ใช้ตัวแปรสภาพแวดล้อมและระบบจัดการข้อมูลลับที่ปลอดภัย
การค้นหาคีย์ API ของคุณ
- เข้าสู่ระบบ Omise Dashboard
- ไปที่ การตั้งค่า → คีย์
- คัดลอกคีย์ทดสอบของคุณสำหรับการพัฒนา
- คัดลอกคีย์จริงของคุณเมื่อพร้อมสำหรับการใช้งานจริง
คุณสามารถสร้างคีย์ใหม่และเพิกถอนคีย์ที่ถูกบุกรุกได้จากหน้านี้
การยืนยันตัวตนทำ งานอย่างไร
Omise ใช้ การยืนยันตัวตน HTTP Basic
- ชื่อผู้ใช้: คีย์ API
- รหัสผ่าน: เว้นว่างไว้ (สตริงว่าง)
คีย์ API จะถูกส่งใน header Authorization เป็นสตริงที่เข้ารหัส Base64
Authorization: Basic <base64(api_key:)>
แม้ว่ารหัสผ่านจะเป็นค่าว่าง คุณต้องใส่เครื่องหมายโคลอน (:) หลังคีย์ API เมื่อทำการเข้ารหัส
ตัวอย่างการยืนยันตัวตน
การใช้ cURL
# ใช้คีย์ลับ
curl https://api.omise.co/account \
-u skey_test_5xuy4w91xqz7d1w9u0t:
# ใช้คีย์สาธารณะ
curl https://vault.omise.co/tokens \
-X POST \
-u pkey_test_5xuy4w91xqz7d1w9u0t: \
-d "card[name]=John Doe" \
-d "card[number]=4242424242424242" \
-d "card[expiration_month]=12" \
-d "card[expiration_year]=2025" \
-d "card[security_code]=123"
การใช้ Ruby
require 'omise'
# ตั้งค่าคีย์ลับ
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
# ทำคำขอที่ผ่านการยืนยันตัวตน
account = Omise::Account.retrieve
# ใช้คีย์สาธารณะสำหรับโทเค็น
Omise.vault_api_key = 'pkey_test_5xuy4w91xqz7d1w9u0t'
token = Omise::Token.create({
card: {
name: 'John Doe',
number: '4242424242424242',
expiration_month: 12,
expiration_year: 2025,
security_code: '123'
}
})
การใช้ Python
import omise
# ตั้งค่าคีย์ลับ
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
# ทำคำขอที่ผ่านก ารยืนยันตัวตน
account = omise.Account.retrieve()
# ใช้คีย์สาธารณะสำหรับโทเค็น
omise.api_public = 'pkey_test_5xuy4w91xqz7d1w9u0t'
token = omise.Token.create(
name='John Doe',
number='4242424242424242',
expiration_month=12,
expiration_year=2025,
security_code='123'
)
การใช้ PHP
<?php
require_once 'vendor/autoload.php';
// ตั้งค่าคีย์ลับ
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
define('OMISE_PUBLIC_KEY', 'pkey_test_5xuy4w91xqz7d1w9u0t');
// ทำคำขอที่ผ่านการยืนยันตัวตน
$account = OmiseAccount::retrieve();
// ใช้คีย์สาธารณะสำหรับโทเค็น
$token = OmiseToken::create(array(
'card' => array(
'name' => 'John Doe',
'number' => '4242424242424242',
'expiration_month' => 12,
'expiration_year' => 2025,
'security_code' => '123'
)
));
การใช้ Node.js
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t',
publicKey: 'pkey_test_5xuy4w91xqz7d1w9u0t'
});
// ทำคำขอที่ผ่านการยืนยันตัวตน
const account = await omise.account.retrieve();
// ใช้คีย์สาธารณะสำหรับโทเค็น
const token = await omise.tokens.create({
card: {
name: 'John Doe',
number: '4242424242424242',
expiration_month: 12,
expiration_year: 2025,
security_code: '123'
}
});
การใช้ Go
package main
import (
"github.com/omise/omise-go"
"github.com/omise/omise-go/operations"
)
func main() {
client, _ := omise.NewClient(
"pkey_test_5xuy4w91xqz7d1w9u0t",
"skey_test_5xuy4w91xqz7d1w9u0t",
)
// ทำคำขอที่ผ่านการยืนยันตัวตน
account, _ := client.Account()
// ใช้คีย์สาธารณะสำหรับโทเค็น
token, _ := client.CreateToken(&operations.CreateToken{
Name: "John Doe",
Number: "4242424242424242",
ExpirationMonth: 12,
ExpirationYear: 2025,
SecurityCode: "123",
})
}
การใช้คีย์ใด
ใช้คีย์สาธารณะเมื่อ:
✅ การดำเนินการฝั่งไคลเอนต์ (เบราว์เซอร์ แอปมือถือ)
- สร้างโทเค็นจากข้อมูลบัตร
- สร้างแหล่งที่มาสำหรับวิธีการชำระเงิน ทางเลือก
- การดำเนินการทั้งหมดที่จัดการข้อมูลบัตรที่ละเอียดอ่อน
เหตุผล: คีย์สาธารณะปลอดภัยที่จะฝังในโค้ดฝั่งไคลเอนต์ เพราะสามารถสร้างโทเค็นและแหล่งที่มาเท่านั้น และไม่สามารถเรียกเก็บเงินจากบัตรหรือเข้าถึงข้อมูลบัญชีที่ละเอียดอ่อนได้
// ✅ ปลอดภัย - คีย์สาธารณะใน JavaScript ฝั่งไคลเอนต์
Omise.setPublicKey('pkey_test_5xuy4w91xqz7d1w9u0t');
Omise.createToken('card', cardData, function(status, response) {
// ส่งโทเค็นไปยังเซิร์ฟเวอร์
});
ใช้คีย์ลับเมื่อ:
✅ การดำเนินการฝั่งเซิร์ฟเวอร์เท่านั้น
- การสร้าง Charge
- การจัดการลูกค้า
- การประมวลผลการคืนเงิน
- การสร้างการโอนเงิน
- การเข้าถึงข้อมูลบัญชี
- การดำเนินการทั้งหมดที่เกี่ยวข้องกับเงินหรือข้อมูลที่ละเอียดอ่อน
เหตุผล: คีย์ลับมีสิทธิ์เข้าถึง API อย่างสมบูรณ์ และต้องไม่ถูกเปิดเผยโดยเด็ดขาด
# ✅ ปลอดภัย - คีย์ลับบนเซิร์ฟเวอร์เท่านั้น
Omise.api_key = ENV['OMISE_SECRET_KEY']
charge = Omise::Charge.create({
amount: 100000,
currency: 'thb',
card: params[:omise_token]
})
❌ อย่าทำสิ่งนี้โดยเด็ดขาด:
<!-- ❌ อันตราย - คีย์ลับถูกเปิดเผยใน HTML -->
<script>
const secretKey = 'skey_live_5xuy4w91xqz7d1w9u0t';
</script>
// ❌ อันตราย - คีย์ลับในโค้ดฝั่งไคลเอนต์
fetch('https://api.omise.co/charges', {
headers: {
'Authorization': 'Basic ' + btoa('skey_live_...:')
}
});