- 브랜드페이 생체인증 연동 시 생성자에 넣은 activity의 상태가 올바르지 않을 경우 무한 로딩이 발생하는 오류를 해결하였습니다.
- 관련 이슈(무한로딩)가 발생하거나, 오류 토스트가 발생할 경우 문의 바랍니다.
- 서비스 명칭이 ConnectPay에서 BrandPay로 변경됨에 따라 관련된 클래스명들도 BrandPay로 변경되었습니다.
- BrandPayAuthWebManager, BrandPayOcrWebManager의 javascript interface 연동 방식이 아래와 같이 변경되었습니다.
brandPayOcrWebManager.addJavascriptInterface(WEB_VIEW) brandPayAuthWebManager.addJavascriptInterface(WEB_VIEW)
-
libs/ocr-0.2.0.aar 추가
-
OCR 관련 라이브러리 [OcrEngine, ocrview] 추가
-
settings.gradle
include ':OcrEngine' include ':ocrview'
-
-
asserts폴더에 OCR 라이선스 파일(fincube_license.flk) 추가
-
build.config(:app)
dependencies { implementation fileTree(dir: 'libs', include: '*.aar') implementation project(':OcrEngine') // 2.2.0 이상 권장 implementation "androidx.lifecycle:lifecycle-runtime-ktx:{version}" implementation "androidx.appcompat:appcompat:{version}" implementation "androidx.core:core-ktx:{version}" }
class BrandPayAuthSampleWebActivity : AppCompatActivity() {
private lateinit var webView: WebView
private val brandPayOcrWebManager = BrandPayOcrWebManager(this).apply {
callback = object : BrandPayOcrWebManager.Callback {
override fun onPostScript(script: String) {
webView.loadUrl(script)
}
}
}
@SuppressLint("JavascriptInterface", "SetJavaScriptEnabled")
private fun initViews() {
webView = findViewById<WebView>(R.id.web_view).apply {
settings.run {
javaScriptEnabled = true
domStorageEnabled = true
}
brandPayOcrWebManager.addJavascriptInterface(this)
)
}
webView.loadUrl(WEB_URL)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
// 유효한 Result인 경우 Callback.onPost로 리턴
BrandPayOcrWebManager.handleActivityResult(requestCode, resultCode, data)
/**
* 직접 Handling할 경우
if (requestCode == BrandPayOcrWebManager.REQUEST_CODE_CARD_SCAN) {
data?.getStringExtra(BrandPayOcrWebManager.EXTRA_CARD_SCAN_RESULT_SCRIPT)?.let { resultScript ->
webView.loadUrl(resultScript)
}
}
**/
}
}
window.ConnectPayOcr.postMessage
호출
- onActivityResult에서 handleActivityResult 호출
-
호출 Message
{ name: 'isOCRAvailable', params: { onSuccess: 성공시 호출할 메서드명, password : 등록할 비밀번호 } }
-
Return
- onSuccess : Boolean
- true : 실행 가능
- false : 실행 불가능
- onSuccess : Boolean
-
호출 Message
{ name: 'ocrScan', params: { onSuccess: 성공시 호출할 메서드명, onError: 에러 발생시 호출할 메서드명, license : 포지큐브에서 발급받은 OCR License } }
-
Return
- onSuccess : Json String
{ cardNo1 : 카드번호 첫번 째 4자리, cardNo2 : 카드번호 두번 째 4자리, cardNo3 : 카드번호 세번 째 4자리, cardNo4 : 앞 12자리를 제외한 카드번호, expiryDate : 카드 유효기간 (MMYY) }
- onError : Error 메세지
-
libs/auth-0.2.1.aar 추가
-
build.config(:app)
dependencies { implementation fileTree(dir: 'libs', include: '*.aar') // 2.2.0 이상 권장 implementation "androidx.lifecycle:lifecycle-runtime-ktx:{version}" // 2.6.0 이상 권장 implementation 'com.google.code.gson:gson:{version}' // 1.1.0 이상 권장 implementation "androidx.biometric:biometric:{version}" implementation "androidx.security:security-crypto:1.1.0-alpha03" implementation "androidx.appcompat:appcompat:{version}" implementation "androidx.core:core-ktx:{version}" }
class BrandPayAuthSampleWebActivity : AppCompatActivity() {
private lateinit var webView: WebView
private val brandPayAuthWebManager = BrandPayAuthWebManager(this).apply {
callback = object : BrandPayAuthWebManager.Callback {
override fun onPostScript(script: String) {
webView.loadUrl(script)
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_brandpay_auth_web_sample)
initViews()
}
@SuppressLint("JavascriptInterface", "SetJavaScriptEnabled")
private fun initViews() {
webView = findViewById<WebView>(R.id.web_view).apply {
settings.run {
javaScriptEnabled = true
domStorageEnabled = true
}
brandPayAuthWebManager.addJavascriptInterface(this)
}
webView.loadUrl(WEB_URL)
}
}
window.ConnectPayAuth.postMessage
호출
-
호출 Message
{ name: 'getBiometricAuthMethods', params: { onSuccess: 성공시 호출할 메서드명, onError: 에러 발생시 호출할 메서드명 } }
-
Return
- onSuccess : String 배열
- 지문 [FINGERPRINT]
- 얼굴인식 [FACE]
- 모두 지원 [FINGERPRINT, FACE]
- 모두 지원하지 않는 경우는 빈 배열
- onError : Error 메세지
- onSuccess : String 배열
-
호출 Message
{ name: 'hasBiometricAuth', params: { onSuccess: 성공시 호출할 메서드명 } }
-
Return
- onSuccess : Boolean
- true : 설정한 비밀번호 존재
- false : 설정한 비밀번호 부재
- onSuccess : Boolean
-
호출 Message
{ name: 'registerBiometricAuth', params: { onSuccess: 성공시 호출할 메서드명, onError: 에러 발생시 호출할 메서드명, password : 등록할 비밀번호 } }
-
Return
- onSuccess : Boolean
- true : 등록 완료
- false : 등록 실패
- onError : Error 메세지
- onSuccess : Boolean
-
호출 Message
{ name: 'verifyBiometricAuth', params: { onSuccess: 성공시 호출할 메서드명, onError: 에러 발생시 호출할 메서드명 } }
-
Return
- onSuccess : 기존에 등록된 비밀번호
- onError : Error 메세지