BrandPay https://tosspayments.com
브랜드페이 iOS SDK를 추가하고 메서드를 사용하는 방법을 알아봅니다.
- Xcode 12.x
- Swift 5.x
- iOS 11.0
브랜드페이 iOS SDK는 Manual, Cocoapods, Swift Package Manager를 지원합니다.
아래와 같이 프레임워크를 제공하고 있습니다.
# Base
Library/BrandPayBase.xcframework
# 생체인증 지원
Library/BiometricInterface.xcframework
# 카드 OCR 지원
Library/FinCubeOcrSDK.xcframework
Library/OCRInterface.xcframework
필요한 프레임워크를 Target
의 General
탭 아래에 있는 Frameworks, Libraries, and Embedded Content
섹션으로 끌어오기만 하면 됩니다.
브랜드페이 iOS SDK는 Cocoapods 패키지로도 제공됩니다.
# Podfile
use_frameworks!
target 'YOUR_TARGET_NAME' do
# 생체인증 지원
pod 'BrandPay/Biometric'
# 카드 OCR 지원
pod 'BrandPay/OCR'
end
YOUR_TARGET_NAME
을 적절하게 변경한 후 Podfile
파일이 있는 디렉토리에서 아래 명령어를 실행하세요.
pod install
https://github.com/tosspayments/BrandPay
BrandPay iOS SDK는 카메라 권한과 생체인증 권한 설정이 필요합니다.
extension BrandPayWebInterface: WebViewControllerType {
// var webView: WKWebView! // 선언되어있는 WKWebView instance를 사용합니다.
//
func installAppBridges() {
let biometricMessageHandler = WebScriptMessageHandler()
biometricMessageHandler.controller = self
biometricMessageHandler.register(appBridge: GetAppInfoAppBridge())
biometricMessageHandler.register(appBridge: HasBiometricAuthAppBridge())
biometricMessageHandler.register(appBridge: GetBiometricAuthMethodsAppBridge())
biometricMessageHandler.register(appBridge: VerifyBiometricAuthAppBridge())
biometricMessageHandler.register(appBridge: RegisterBiometricAuthAppBridge())
biometricMessageHandler.register(appBridge: UnregisterBiometricAuthAppBridge())
webView.configuration.userContentController.add(biometricMessageHandler, name: "ConnectPayAuth")
// * OCR 기능은 앱 패키지 별로 flk license file 로 관리됩니다.
let ocrMessageHandler = WebScriptMessageHandler()
ocrMessageHandler.controller = self
ocrMessageHandler.register(appBridge: ScanOCRCardAppBridge(licenseKeyFile: "tosspayment_20220513.flk"))
ocrMessageHandler.register(appBridge: IsOCRAvailableAppBridge())
webView.configuration.userContentController.add(ocrMessageHandler, name: "ConnectPayOcr")
}
// Javascript 호출을 해야 Message 처리가 가능합니다.
func evaluateJavaScriptSafely(javaScriptString: String) {
webView.evaluateJavaScript(javaScriptString) { (_, _) in
}
}
// SDK 내부에서 발생하는 에러를 받을 수 있는 콜백입니다.
func onErrorOccurred(_ error: NSError) {
// 1. NSError → BrandpayBiometricAuthError 변환
guard let biometricAuthError = BrandpayBiometricAuthError.from(error) else {
return
}
// 2. 확인할 수 있는 정보
let message = biometricAuthError.errorDescription // 에러 메시지
let traceId = biometricAuthError.traceId // 추적용 ID
let underlying = biometricAuthError.underlyingError // 발생한 원본 내부 에러
// 3. 에러 타입별 분기 처리
switch biometricAuthError {
case .secureStorageInitFailed:
// 내부 보안 저장소 초기화 실패
case .secureStorageOpFailed:
// 보안 저장소 읽기/쓰기 실패
case .cryptoFailed:
// 암호화/복호화 실패
case .biometricAPIFailed:
// 시스템 생체인증 API 호출 실패
}
}
}