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

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

เริ่มต้นใช้งาน iOS SDK →

Android SDK

ผสานรวมการชำระเงินเข้ากับแอปพลิเคชัน Android แบบ native

  • ภาษา: Kotlin, Java 8+
  • เวอร์ชัน Android: API Level 21 (Android 5.0) และใหม่กว่า
  • การติดตั้ง: Gradle, Maven
  • Repository: omise/omise-android

เริ่มต้นใช้งาน Android SDK →

Flutter SDK

สร้างโซลูชันการชำระเงินข้ามแพลตฟอร์มด้วย Flutter

  • ภาษา: Dart 2.12+
  • เวอร์ชัน Flutter: Flutter 2.0 และใหม่กว่า
  • แพลตฟอร์ม: iOS และ Android
  • การติดตั้ง: pub.dev
  • Repository: omise/omise-flutter

เริ่มต้นใช้งาน Flutter SDK →

Dart SDK

การผสานรวม Dart ฝั่งเซิร์ฟเวอร์สำหรับบริการ backend

  • ภาษา: Dart 2.12+
  • แพลตฟอร์ม: แอปพลิเคชัน Dart ฝั่งเซิร์ฟเวอร์
  • การติดตั้ง: pub.dev
  • Repository: omise/omise-dart

เริ่มต้นใช้งาน Dart SDK →

ภาพรวมสถาปัตยกรรม

Mobile SDK ทั้งหมดปฏิบัติตามรูปแบบสถาปัตยกรรมที่คล้ายกัน:

┌─────────────────┐
│ Mobile App │
│ │
│ ┌───────────┐ │
│ │ Omise SDK │ │
│ └─────┬─────┘ │
└────────┼────────┘

│ HTTPS (TLS 1.2+)

┌────▼────┐
│ Omise │
│ API │
└────┬────┘

┌────▼────────┐
│ Your Server │
└─────────────┘

ขั้นตอนการรักษาความปลอดภัย

  1. ลูกค้ากรอกรายละเอียดการชำระเงิน ในแอปมือถือของคุณ
  2. SDK ตรวจสอบ ข้อมูลนำเข้าฝั่ง client
  3. SDK ส่ง ข้อมูลที่เข้ารหัสโดยตรงไปยังเซิร์ฟเวอร์ของ Omise
  4. Omise ส่งคืน token ที่ปลอดภัยไปยังแอปมือถือ
  5. แอปส่ง token ไปยังเซิร์ฟเวอร์ของคุณ
  6. เซิร์ฟเวอร์ของคุณ สร้างการเรียกเก็บเงินโดยใช้ token

ขั้นตอนนี้ทำให้มั่นใจว่าข้อมูลบัตรที่ละเอียดอ่อนไม่เข้าถึงเซิร์ฟเวอร์ของคุณ รักษาการปฏิบัติตามมาตรฐาน PCI

การเลือก SDK ที่เหมาะสม

กรณีการใช้งานSDK ที่แนะนำเหตุผล
แอป iOS แบบ nativeiOS SDKประสิทธิภาพดีที่สุด, คอมโพเนนต์ UI แบบ native
แอป Android แบบ nativeAndroid SDKประสิทธิภาพดีที่สุด, คอมโพเนนต์ UI แบบ native
แอปข้ามแพลตฟอร์มFlutter SDKเขียนครั้งเดียว, ใช้งานได้ทั้งสองแพลตฟอร์ม
บริการ backend ใน DartDart SDKเข้าถึง API เต็มรูปแบบสำหรับการทำงานฝั่งเซิร์ฟเวอร์
แอป React NativeiOS + 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 สำหรับรายละเอียด

วิธีการชำระเงินที่รองรับ

วิธีการชำระเงินiOSAndroidFlutterDart
บัตรเครดิต/เดบิต
ธนาคารอินเทอร์เน็ต
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

Android SDK

  • Android Studio Arctic Fox หรือใหม่กว่า
  • Kotlin 1.5+ หรือ Java 8+
  • Gradle 7.0+
  • Android API Level 21+ (Android 5.0+)

Flutter SDK

  • Flutter 2.0 หรือใหม่กว่า
  • Dart 2.12 หรือใหม่กว่า
  • iOS 12.0+ และ Android API Level 21+

Dart SDK

  • Dart 2.12 หรือใหม่กว่า
  • แอปพลิเคชันฝั่งเซิร์ฟเวอร์หรือ CLI

คำถามที่พบบ่อย

คำถามทั่วไป

ฉันสามารถใช้ SDK เหล่านี้กับ React Native ได้หรือไม่?

ได้ คุณสามารถสร้าง native module ที่ wrap iOS และ Android SDK ได้ เราไม่มีแพ็คเกจ React Native อย่างเป็นทางการในขณะนี้ แต่ native SDK สามารถผสานรวมโดยใช้ระบบ native module ของ React Native

SDK รองรับการยืนยันตัวตน 3D Secure หรือไม่?

ได้ mobile SDK ทั้งหมดรองรับการยืนยันตัวตน 3D Secure SDK จะจัดการ authentication flow โดยอัตโนมัติเมื่อผู้ออกบัตรต้องการ

ฉันสามารถปรับแต่งคอมโพเนนต์ UI ได้หรือไม่?

ได้ แม้ว่า SDK จะให้คอมโพเนนต์ UI เริ่มต้น คุณยังสามารถใช้ API หลักเพื่อสร้างฟอร์มการชำระเงินที่กำหนดเองทั้งหมดที่ตรงกับการออกแบบของแอปคุณได้

จะเกิดอะไรขึ้นหากคำขอเครือข่ายล้มเหลว?

SDK ใช้ลอจิกการลองใหม่อัตโนมัติด้วย exponential backoff หากการลองใหม่ทั้งหมดล้มเหลว คุณจะได้รับข้อผิดพลาดที่คุณสามารถจัดการและนำเสนอให้กับผู้ใช้

SDK เป็น open source หรือไม่?

ได้ Omise mobile SDK ทั้งหมดเป็น open source และมีให้บริการบน GitHub ภายใต้ใบอนุญาต MIT

ฉันจะทดสอบการผสานรวมของฉันได้อย่างไร?

ใช้ public key ของโหมดทดสอบของคุณ (เริ่มต้นด้วย pkey_test_) และหมายเลขบัตรทดสอบ การเรียก API ทั้งหมดจะถูกทำไปยังสภาพแวดล้อมทดสอบและจะไม่มีการสร้างการเรียกเก็บเงินจริง

คำถามด้านความปลอดภัย

ข้อมูลบัตรถูกเก็บที่ไหน?

ข้อมูลบัตรถูกเก็บชั่วคราวในหน่วยความจำระหว่างกระบวนการสร้าง token เท่านั้น เมื่อ token ถูกสร้างแล้ว ข้อมูลบัตรจะถูกทิ้ง Token เองถูกเก็บบนเซิร์ฟเวอร์ที่ปลอดภัยของ Omise

การเก็บ token บนอุปกรณ์ปลอดภัยหรือไม่?

ได้ token ปลอดภัยในการเก็บเนื่องจากไม่สามารถใช้โดยตรงได้โดยไม่มี secret key ของคุณ อย่างไรก็ตาม ตรวจสอบให้แน่ใจว่าคุณใช้ที่เก็บข้อมูลที่ปลอดภัยเฉพาะแพลตฟอร์ม (Keychain บน iOS, KeyStore บน Android)

ฉันจำเป็นต้องปฏิบัติตามมาตรฐาน PCI เมื่อใช้ SDK เหล่านี้หรือไม่?

การใช้ SDK จะลดขอบเขตการปฏิบัติตามมาตรฐาน PCI ของคุณอย่างมาก เนื่องจากข้อมูลบัตรไม่เข้าถึงเซิร์ฟเวอร์ของคุณ อย่างไรก็ตาม คุณควรปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดของ PCI DSS สำหรับการจัดการ token

SDK สามารถทำงานแบบออฟไลน์ได้หรือไม่?

SDK ต้องการการเชื่อมต่อเครือข่ายเพื่อสร้าง token และ source อย่างไรก็ตาม พวกเขาสามารถจัดคิวการดำเนินการและลองใหม่เมื่อการเชื่อมต่อถูกกู้คืน

คำถามทางเทคนิค

ความแตกต่างระหว่าง token และ source คืออะไร?

Token แทนบัตรเครดิต/เดบิตและสามารถเรียกเก็บเงินได้ทันที Source แทนวิธีการชำระเงินทางเลือก (เช่น internet banking) ที่ต้องการขั้นตอนเพิ่มเติมเพื่อให้การชำระเงินเสร็จสมบูรณ์

ฉันสามารถเรียกเก็บเงิน token โดยตรงจากแอปมือถือได้หรือไม่?

ไม่ได้ token ควรถูกเรียกเก็บเงินจากเซิร์ฟเวอร์ของคุณเสมอโดยใช้ secret key ของคุณ Mobile SDK ใช้ public key ของคุณเท่านั้นและไม่สามารถสร้างการเรียกเก็บเงินได้

Token มีอายุการใช้งานนานแค่ไหน?

Token หมดอายุหลังจากช่วงเวลาหนึ่ง (โดยทั่วไป 30 นาที) หากไม่ได้ใช้ เมื่อใช้เพื่อสร้างการเรียกเก็บเงินหรือแนบกับลูกค้าแล้ว พวกเขาจะถูกเชื่อมโยงกับเอนทิตีนั้นอย่างถาวร

ฉันสามารถใช้ public key หลายตัวในแอปเดียวได้หรือไม่?

ได้ คุณสามารถเริ่มต้น client instance หลายตัวด้วย public key ที่แตกต่างกันหากคุณต้องการรองรับบัญชี Omise หลายบัญชี

การสนับสนุนและแหล่งข้อมูล

เอกสาร

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

ชุมชน

การขอความช่วยเหลือ

หากคุณพบปัญหากับ mobile SDK ใดๆ:

  1. ตรวจสอบเอกสารเฉพาะ SDK
  2. ตรวจสอบ changelog สำหรับการเปลี่ยนแปลงที่ทำลายความเข้ากันได้
  3. ค้นหา GitHub issue ที่มีอยู่
  4. ติดต่อฝ่ายสนับสนุนพร้อมเวอร์ชัน SDK ของคุณ, รายละเอียดแพลตฟอร์ม และข้อความแสดงข้อผิดพลาด

ขั้นตอนถัดไป

เลือกแพลตฟอร์มของคุณเพื่อเริ่มต้น:

  • iOS SDK → - สร้างการชำระเงินสำหรับ iPhone และ iPad
  • Android SDK → - ผสานรวมการชำระเงินในแอป Android
  • Flutter SDK → - สร้างโซลูชันการชำระเงินข้ามแพลตฟอร์ม
  • Dart SDK → - สร้างการผสานรวมฝั่งเซิร์ฟเวอร์ด้วย Dart

สำหรับการผสานรวม backend หลังจากการสร้าง token:

  • Charges API - สร้างการเรียกเก็บเงินจาก token
  • Customers API - บันทึกบัตรเพื่อใช้ในอนาคต
  • Sources API - จัดการวิธีการชำระเงินทางเลือก