Flutter Webview 에서 카드번호 입력시 URL Scheme 문제. (롯데카드, 현대카드 등등)

안녕하세요. Flutter에서 웹뷰(inappwebview)를 이용해서 Tosspayments를 이용하고 있습니다. 앱카드 결제는 잘 되는데, 카드번호 입력하는 로직에서 'ERR_UNKNOWN_URL_SCHEME'이 발생하고 있습니다. 요청하는 scheme은 intent로 기존에 보던 url 형태가 아니고, key-value형태로 되어있더군요.. intent://%7B"CD":"12aa26820c48f34a364e3794d4a7f9d8","TK":"zNnPqTwRSzw-AhXaYCo3Hkv9uXjYkHABlas_NNHCWeI=","LK":"-5699883892872597510583035093044399451419562846108160694233940978029750216685830704848442618363860333026351716836840593183951846473577254408396186216071977","DT":"2022-10-28-13:56","TM":"15","CH":"sps.lottecard.co.kr","CU":"https://sps.lottecard.co.kr/ges/initializePmtStt.top?ACSID=bEb9hKnOLfzrSKCaQOUEGBTHmoqzJ1QnmqVW3WukHesY8IMnvH4N!-511010803&type=X%22,%22SA%22:%22https://mpl.ahnlab.com%22,%22CV%22:%220%22%7D/#Intent;package=com.ahnlab.v3mobileplus;scheme=v3mobileplusweb 어떻게 해결하면 좋을까요....
13 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장3y ago
앱카드는 잘된다는게 카드사 앱으로 이동은 잘 된다는 말씀이신가요?
Kimoon Lee
Kimoon Lee3y ago
해당 인텐트는 안랩 백신을 거쳐서 롯데카드로 진입하는 코드라서 intent 처리를 다르게 해주셔야 할거에요..
이실장
이실장3y ago
flutter에서 intent처리를 어떤 방식으로 진행해주고 계실까요?
프리슬라임
프리슬라임OP3y ago
flutter에서 처리할 방법이 없어보여서 android channel 로 호출했습니다. urldecode를 이용해서 처리를하니. 롯데카드쪽 실행은 이제 잘되는거 같습니다. 하지만 다른 카드사의 카드번호 결제는 정상 작동되지만, 삼성카드에서 카드번호 입력시, 백신프로그램이 정상 작동되지 않고 있습니다. _channel.invokeMethod('intent', {'url': decodedUriString}); val url: String = call.argument("url") ?: return Log.d("[Intent] package", "url:"+url) var intent: Intent? = null try { intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME) } catch (e: URISyntaxException) { println("error : " + e.printStackTrace()) } if( Build.VERSION.SDK_INT < Build.VERSION_CODES.R ) { if( activity.packageManager?.resolveActivity(intent!!, 0) == null ) { val pkgName = intent?.package if( pkgName != null ) { val uri = Uri.parse("market://search?q=pname:" + pkgName) intent = Intent(Intent.ACTION_VIEW, uri) activity.startActivity(intent) } } else { val uri = Uri.parse(intent?.dataString) intent = Intent(Intent.ACTION_VIEW, uri) activity.startActivity(intent) } } else { try { activity.startActivity(intent) } catch (e: ActivityNotFoundException) { val pkgName = intent?.package if( pkgName != null ) { val uri = Uri.parse("market://search?q=pname:" + pkgName) intent = Intent(Intent.ACTION_VIEW, uri) activity.startActivity(intent) } } } 안드로이드에서는 이런식으로 호출했어요. URI_INTENT_SCHEME으로 인텐트를 만들고, 실행하거나, 실행이 안되면 마켓을 띄우게 해놨어요. 롯데카드는 이제 정상작동되는데, 삼성카드의 카드번호로 결제에서 문제가 있습니다. V-Guard 백신이 켜지긴 하지만.. 바로 꺼지면서 이런 메세지가 출력됩니다. "라이선스 키를 찾을 수 없어, V-Guard인스턴스 생성에 실패하였습니다. 앱을 종료합니다." intent://cardname=samsung&inc=fe15ea9eb1120f68fb5d4b616086858e705fc8c8f5aceffeee18eeb776c26d2965d05aaff68c62d347cf0062b2daecbb18534fb738abf142d140600f5b0515d4b211871268e125c2ba4427d1cf60358d&acctid=220221029220315477806844808965#Intent;scheme=vguardstart;package=kr.co.shiftworks.vguardweb;end;
프리슬라임
프리슬라임OP3y ago
No description
Kimoon Lee
Kimoon Lee3y ago
혹시 삼성카드 호출시에 보내주신 intent가 어떻게 변경되어 호출되는지 확인 가능하실까요? 그리고 else { val uri = Uri.parse(intent?.dataString) intent = Intent(Intent.ACTION_VIEW, uri) activity.startActivity(intent) } 이코드를 통해 처리 되는지 아니면, else { try { activity.startActivity(intent) } 이코드를 통해 처리 되는지도 확인부탁드립니다.
이실장
이실장3y ago
flutter일 경울 Uri.parse 방식의 문제로 확인 됩니다. (대문자가 소문자로 자동변환됨) [인텐트 원본] intent://cardName=SAMSUNG .... [Uri.parse 이후] vguardstart://cardname=samsung&inc... 같은 문제인지 로그를 한번 확인 해주시고요! 이부부분을 확인해서 진행해주시면 될 것 같습니다 (더불어 현대 카드 일반결제는 정상적으로 되시나요..?)
프리슬라임
프리슬라임OP3y ago
네 현대카드는 정상적으로 진행됩니다.
이실장
이실장3y ago
안녕하세요 혹시 대형마트 앱 개발 중이실까요?
프리슬라임
프리슬라임OP3y ago
네 쇼핑몰 관련 개발중입니다.
이실장
이실장3y ago
다른 루트로도 동일한 문의가 들어오고 있어서 확인차 여쭤봤습니다. 위에 남겨주신 내용을 보면 flutter methodchannel기능 이용해서 안드로이드 네이티브 단에서 웹뷰화면을 관리하시는 것같은데요 methodchannel로 url을 보낼 때 flutter에서 uri.parse를 해서 보내시나요?
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?