Tích hợp iOS
- Yêu cầu iOS >= 9.0
- Tải phiên bản SDK mới nhất từ link sau: https://github.com/VNPTSmartCA/ios_onetimeca_sdk/releases (tải file có định dạng OnetimeCAFrameworks_vx.x.x.zip)
- Cấu hình tại Targets Project -> Build Settings -> Build Options -> Enable Bitcode, chuyển từ Yes -> No
- Sau khi đã có toàn bộ XCFramework, kéo thả toàn bộ file *.xcframework thả vào mục Targets Project -> General -> Frameworks, Libraries, and Embedded Content
- Riêng file FlutterPluginRegistrant.xcframework, chuyển thành Do Not Embedded
Bước 1: Khởi tạo SDK tại nơi muốn bắt đầu kết nối
// import thư viện
import OnetimeVNPTSmartCAFramework
//Khai báo biến
var _onetimeCA: OnetimeVNPTSmartCA?;
var partnerId: String = "xxx-xxx-xxx-xxx";
// Khởi tạo SDK
override func viewDidLoad() {
super.viewDidLoad();
self._onetimeCA = OnetimeVNPTSmartCA(
// Có 2 môi trường được cung cấp đó là DEMO và PRODUCTION.
environment: OnetimeVNPTSmartCA.ENVIRONMENT.DEMO,
partnerId: self.partnerId,
// Có 2 ngôn ngữ được hỗ trợ đó là: VI: Tiếng Việt và EN: Tiếng Anh.
lang: OnetimeVNPTSmartCA.LANG.VI);
//...
}
Bước 2: Sử dụng các hàm chính
- Kích hoạt tài khoản /lấy thông tin xác thực người dùng (accessToken & credentiald)
- Xác nhận giao dịch ký số
- Hủy kết nối SDK
📦 Hàm kích hoạt tài khoản /lấy accessToken & credentialId của người dùng
SDK sẽ thực hiện kiểm tra trạng thái tài khoản và chứng thư của khách hàng như: đã kích hoạt hay chưa, chứng thư hợp lệ hay không, tự động làm mới token khi hết hạn. Thành công SDK sẽ trả về accessToken và credentialId của người dùng.
@objc func getAuthentication() {
// SDK tự động xử lý các trường hợp về token: Hết hạn, chưa kích hoạt...
self._onetimeCA?.getAuthentication(viewController: self, callback: {authResult in
if authResult.status == SmartCAResultCode.SUCCESS_CODE {
// kết quả SDK trả về ở trong authResult.data
} else {
// SDK tự động hiển thị giao diện
}
});
}
📦 Hàm xác nhận giao dịch
Sau khi lấy được accessToken và credentialId của người dùng từ getAuthentication Đối tác tích hợp tạo giao dịch ký số cho khách hàng, lấy transId sau đó gọi hàm xác nhận ký số getWaitingTransaction.
@objc func getWaitingTransaction() {
self.tranId = "xxxx";
self._onetimeCA?.getAuthentication(viewController: self, callback: { authResult in
if authResult.status == SmartCAResultCode.SUCCESS_CODE {
self._onetimeCA?.getWaitingTransaction(viewController: self, tranId: self.tranId, callback: { wtResult in
if wtResult.status == SmartCAResultCode.SUCCESS_CODE {
print("Giao dịch thành công: \(wtResult.status) - \(wtResult.statusDesc) - \(wtResult.data)");
} else {
print("Lỗi giao dịch: \(wtResult.status) - \(wtResult.statusDesc) - \(wtResult.data)");
}
});
} else {
// SDK tự động hiển thị giao diện
}
});
}
Lưu ý
Trước khi gọi hàm getWaitingTransaction, cần phải gọi hàm getAuthentication thành công với SUCCESS_CODE = 0.
📦 Hàm hủy kết nối với SDK
override func viewDidDisappear(_ animated: Bool) {
self._onetimeCA?.destroySDK();
}