Mobile SDKs
Omise ให้บริการ SDK สำหรับมือถือแบบ native เพื่อสร้างการผสานรวมการชำระเงินที่ปลอดภ ัยในแอปพลิเคชัน iOS และ Android SDK ของเราจัดการการเก็บรวบรวมข้อมูลการชำระเงินที่ละเอียดอ่อนและการสร้าง token เพื่อให้มั่นใจถึงการปฏิบัติตามมาตรฐาน PCI พร้อมทั้งให้ประสบการณ์การชำระเงินบนมือถือที่ราบรื่น
ภาพรวม
Mobile SDK ช่วยให้คุณสามารถเก็บรวบรวมข้อมูลการชำระเงินจากแอปพลิเคชันมือถือของคุณอย่างปลอดภัย โดยไม่ให้ข้อมูลบัตรที่ละเอียดอ่อนเข้าถึงเซิร์ฟเวอร์ของคุณ SDK ทั้งหมดปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดเฉพาะแพลตฟอร์มและให้บริการคอมโพเนนต์ UI และ API แบบ native
คุณสมบัติหลัก
- Native tokenization - สร้าง payment token ที่ปลอดภัย โดยตรงจากอุปกรณ์มือถือ
- ปฏิบัติตามมาตรฐาน PCI - ข้อมูลบัตรไม่เข้าถึงเซิร์ฟเวอร์ของคุณ
- การออกแบบเฉพาะแพลตฟอร์ม - คอมโพเนนต์ native ที่ปฏิบัติตามแนวทางการออกแบบของ iOS และ Android
- วิธีการชำระเงินหลากหลาย - รองรับบัตร, mobile banking และวิธีการชำระเงินทางเลือกอื่น
- การตรวจสอบความถูกต้องในตัว - การตรวจสอบฝั่ง client สำหรับหมายเลขบัตร, CVV และวันหมดอายุ
- รองรับ 3D Secure - รองรับ 3D Secure authentication flows ในตัว
- การยืนยันตัวตนด้วยไบโอเมตริกซ์ - รองรับ Touch ID, Face ID และการยืนยันตัวตนด้วยลายนิ้วมือ
- การจัดการข้อผิดพลาด - ข้อความแสดงข้อผิดพลาดและการจัดการที่ครอบคลุม
- ความยืดหยุ่นของเครือข่าย - ลอจิกการลองใหม่อัตโนมัติและการจัดการแบบออฟไลน์
SDK ที่มีให ้บริการ
iOS SDK
สร้างประสบการณ์การชำระเงินที่ปลอดภัยสำหรับแอปพลิเคชัน iPhone และ iPad
- ภาษา: Swift 5.0+, Objective-C
- เวอร์ชัน iOS: iOS 12.0 และใหม่กว่า
- การติดตั้ง: CocoaPods, Swift Package Manager, Carthage
- Repository: omise/omise-ios
Android SDK
ผสานรวมการชำระเงินเข้ากับแอปพลิเคชัน Android แบบ native
- ภาษา: Kotlin, Java 8+
- เวอร์ชัน Android: API Level 21 (Android 5.0) และใหม่กว่า
- การติดตั้ง: Gradle, Maven
- Repository: omise/omise-android
Flutter SDK
สร้างโซลูชันการชำระเงินข้ามแพลตฟอร์มด้วย Flutter
- ภาษา: Dart 2.12+
- เวอร์ชัน Flutter: Flutter 2.0 และใหม่กว่า
- แพลตฟอร์ม: iOS และ Android
- การติดตั้ง: pub.dev
- Repository: omise/omise-flutter
Dart SDK
การผสานรวม Dart ฝั่งเซิร์ฟเวอร์สำหรับบริการ backend
- ภาษา: Dart 2.12+
- แพลตฟอร์ม: แอปพลิเคชัน Dart ฝั่งเซิร์ฟเวอร์
- การ ติดตั้ง: pub.dev
- Repository: omise/omise-dart
ข้อกำหนดเวอร์ชันขั้นต่ำ
เนื่องจากการลบ certificate pinning และการอัปเดตความปลอดภัย คุณต้องใช้อย่างน้อยเวอร์ชัน SDK เหล่านี้ เวอร์ชันเก่ากว่าอาจทำให้คำขอ API ล้มเหลว
| SDK | เวอร์ชันขั้นต่ำ | วันที่ปล่อย |
|---|---|---|
| iOS SDK | 3.2.0 | 29 ส.ค. 2019 |
| Android SDK | 3.0.0 | 31 ต.ค. 2019 |
อัปเดต dependencies ของแอปและ rebuild เพื่อให้แน่ใจว่าเข้ากันได้ หากคุณพบข้อผิดพลาด SSL/TLS ให้ตรวจสอบว่า root certificates ของอุปกรณ์เป็นปัจจุบัน
ภาพรวมสถาปัตยกรรม
Mobile SDK ทั้งหมดปฏิบัติตามรูปแบบสถาปัตยกรรมที่คล้ายกัน:
┌─────────────────┐
│ Mobile App │
│ │
│ ┌───────────┐ │
│ │ Omise SDK │ │
│ └─────┬── ───┘ │
└────────┼────────┘
│
│ HTTPS (TLS 1.2+)
│
┌────▼────┐
│ Omise │
│ API │
└────┬────┘
│
┌────▼────────┐
│ Your Server │
└─────────────┘
ขั้นตอนการรักษาความปลอดภัย
- ลูกค้ ากรอกรายละเอียดการชำระเงิน ในแอปมือถือของคุณ
- SDK ตรวจสอบ ข้อมูลนำเข้าฝั่ง client
- SDK ส่ง ข้อมูลที่เข้ารหัสโดยตรงไปยังเซิร์ฟเวอร์ของ Omise
- Omise ส่งคืน token ที่ปลอดภัยไปยังแอปมือถือ
- แอปส่ง token ไปยังเซิร์ฟเวอร์ของคุณ
- เซิร์ฟเวอร์ของคุณ สร้างการเรียกเก็บเงินโดยใช้ token
ขั้นตอนนี้ทำให้มั่นใจว่าข้อมูลบัตรที่ละเอียดอ่อนไม่เข้าถึงเซิร์ฟเวอร์ของคุณ รักษาการปฏิบัติตามมาตรฐาน PCI
การเลือก SDK ที่เหมาะสม
| กรณีการใช้งาน | SDK ที่แนะนำ | เหตุผล |
|---|---|---|
| แอป iOS แบบ native | iOS SDK | ประสิทธิภาพดีที่สุด, คอมโพเนนต์ UI แบบ native |
| แอป Android แบบ native | Android SDK | ประส ิทธิภาพดีที่สุด, คอมโพเนนต์ UI แบบ native |
| แอปข้ามแพลตฟอร์ม | Flutter SDK | เขียนครั้งเดียว, ใช้งานได้ทั้งสองแพลตฟอร์ม |
| บริการ backend ใน Dart | Dart SDK | เข้าถึง API เต็มรูปแบบสำหรับการทำงานฝั่งเซิร์ฟเวอร์ |
| แอป React Native | iOS + Android SDKs | ใช้ native modules กับ RN bridge |
กรณีการใช้งานทั่วไป
การสร้าง Token จากบัตรเครดิต
Mobile SDK ทั้งหมดให้บริการเมธอดในการสร้าง token จากข้อมูลบัตรเครดิต:
// iOS (Swift)
let request = Request(
name: "John Doe",
number: "4242424242424242",
expirationMonth: 12,
expirationYear: 2025,
securityCode: "123"
)
client.send(request) { result in
// Handle token
}
// Android (Kotlin)
val request = Token.CreateTokenRequest(
name = "John Doe",
number = "4242424242424242",
expirationMonth = 12,
expirationYear = 2025,
securityCode = "123"
)
client.send(request, callback)
// Flutter (Dart)
final token = await omise.createToken(
name: 'John Doe',
number: '4242424242424242',
expirationMonth: 12,
expirationYear: 2025,
securityCode: '123',
);
การสร้าง Payment Source
สำหรับวิธีการชำระเงินทางเลือกเช่น mobile banking:
// iOS - ธนาคารอินเทอร์เน็ต
let request = CreateSourceRequest(
amount: 100000,
currency: "thb",
type: .internetBankingBay
)
// Android - Mobile Banking
val request = Source.CreateSourceRequest(
amount = 100000,
currency = "thb",
type = SourceType.InternetBankingBay
)
// Flutter - PromptPay
final source = await omise.createSource(
amount: 100000,
currency: 'thb',
type: 'promptpay',
);
การติดตั้งลิงก์ด่วน
iOS
# CocoaPods
pod 'OmiseSDK'
# Swift Package Manager
dependencies: [
.package(url: "https://github.com/omise/omise-ios", from: "5.0.0")
]
Android
dependencies {
implementation 'co.omise:omise-android:4.0.0'
}
Flutter
flutter pub add omise_flutter
Dart
dart pub add omise_dart
แนวทางปฏิบัติที่ดีที่สุด
ความปลอดภัย
- ห้ามบันทึกข้อมูลที่ละเอียดอ่อน - อย่าบันทึกหมายเลขบัตร, CVV หรือ token
- ใช้ HTTPS เท่านั้น - SDK ทั้งหมดบังคับใช้การเชื่อมต่อ HTTPS
- ตรวจสอบบนเซิร์ฟเวอร์ - ตรวจสอบ token ฝั่งเซิร์ฟเวอร์เสมอก่อนสร้างการเรียกเก็บเงิน
- ใช้ rate limiting - ป้องกันการโจมตีแบบ brute-force บนฟอร์มการชำระเงิน
- ใช้ public key เท่านั้น - อย่าฝัง secret key ของคุณในแอปมือถือ
ประสบการณ์ผู้ใช้
- แสดงสถานะการโหลด - แสดงตัวบ่งชี้ความคืบหน้าระหว่างการสร้าง token
- จัดการข้อผิดพลาดอย่างเหมาะสม - ให้ข้อความแสดงข้อผิดพลาดที่ชัดเจนแก่ผู้ใช้
- รองรับวิธีการชำระเงินหลากหลาย - เสนอวิธีการชำระเงินในท้องถิ่นเพื่อการแปลงที่ดีขึ้น
- ใช้การตรวจสอบที่เหมาะสม - ตรวจสอบข้อมูลนำเข้าก่อนส่งไปยัง API
- บันทึกรายละเอียดบัตรอย่างปลอดภัย - ใช้ที่เก็บข้อมูลที่ปลอดภัยเฉพาะแพลตฟอร์ม (Keychain, KeyStore)
ประสิทธิภาพ
- แคช public key - ลดเวลาการเริ่มต้นโดยการแคชการกำหนดค่า
- ใช้ timeout - ตั้งค่า timeout ที่เหมาะสมสำหรับการเ รียก API
- จัดการสถานการณ์ออฟไลน์ - จัดการความล้มเหลวของเครือข่ายอย่างเหมาะสม
- ลด API call - รวมการดำเนินการเมื่อเป็นไปได้
- ใช้ background thread - อย่าบล็อก UI ระหว่างการเรียก API
การทดสอบ
SDK ทั้งหมดรองรับการทดสอบด้วยโหมดทดสอบของ Omise:
บัตรทดสอบ
สำเร็จ: 4242424242424242
ล้มเหลว: 4111111111111111
3D Secure: 4000000000000002
การกำหนดค่าการทดสอบ
// iOS
let config = Config(publicKey: "pkey_test_...")
// Android
val client = Client("pkey_test_...")
// Flutter/Dart
final omise = Omise(publicKey: 'pkey_test_...');
การจัดการข้อผิดพลาด
SDK ทั้งหมดให้บริการการจัดการข้อผิดพลาดแบบมีโครงสร้าง:
// iOS
client.send(request) { result in
switch result {
case .success(let token):
// Use token
case .failure(let error):
// Handle error
print(error.localizedDescription)
}
}
// Android
client.send(request, object : RequestListener<Token> {
override fun onRequestSucceed(model: Token) {
// Use token
}
override fun onRequestFailed(error: Throwable) {
// Handle error
}
})
// Flutter
try {
final token = await omise.createToken(...);
// Use token
} catch (error) {
// Handle error
}
คู่มือการย้ายข้อมูล
อัปเกรดจาก v3.x เป็น v4.x (Android)
รุ่น v4.x รวมถึงการเปลี่ยนแปลงที่ทำลายความเข้ากันได้ ดูคู่มือการย้ายข้อมูล Android SDK สำหรับรายละเอียด
อัปเกรดจาก v4.x เป็น v5.x (iOS)
รุ่น v5.x เพิ่มการรองรับ Swift concurrency ดูคู่มือการย้ายข้อมูล iOS SDK สำหรับรายละเอียด
วิธีการชำระเงินที่รองรับ
| วิธีการชำระเงิน | iOS | Android | Flutter | Dart |
|---|---|---|---|---|
| บัตร เครดิต/เดบิต | ✓ | ✓ | ✓ | ✓ |
| ธนาคารอินเทอร์เน็ต | ✓ | ✓ | ✓ | ✓ |
| Mobile Banking | ✓ | ✓ | ✓ | ✓ |
| PromptPay | ✓ | ✓ | ✓ | ✓ |
| TrueMoney Wallet | ✓ | ✓ | ✓ | ✓ |
| Alipay | ✓ | ✓ | ✓ | ✓ |
| PayNow | ✓ | ✓ | ✓ | ✓ |
| DuitNow | ✓ | ✓ | ✓ | ✓ |
| GrabPay | ✓ | ✓ | ✓ | ✓ |
| Boost | ✓ | ✓ | ✓ | ✓ |
| ShopeePay | ✓ | ✓ | ✓ | ✓ |
ข้อกำหนดแพลตฟอร์ม
iOS SDK
- Xcode 13.0 หรือใหม่กว่า
- Swift 5.5+ หรือ Objective-C
- iOS 12.0 หรือใหม่กว่า
- CocoaPods 1.10+ หรือ SPM