tosspayment 결제 unknown_url_scheme Error

JungHanMa·2025년 3월 5일
post-thumbnail

회사에서 토스페이먼츠 결제 모듈을 사용 중인데, 출근하자마자 CX 채널에
"KB Pay 결제가 안돼요"라는 문의가 올라왔다.
직접 테스트해보니 진짜로 KB Pay, 카카오뱅크 결제 클릭 시 앱 연결이 되지 않고 오류 팝업이 발생했다.

🚨 문제 상황
보통 결제 과정에서 금융기관의 앱이 설치되어 있다면 앱으로 연결되고, 없으면 마켓으로 이동하게 된다.
하지만 KB, 카카오뱅크만 앱 스킴 오류가 발생하며 결제가 중단되었다.

삼성페이, 하나페이, 네이버페이 등은 모두 정상 동작

기존 WebView는 webview_flutter로 구현되어 있었고,
onNavigationRequest 콜백에서 앱 스킴을 네이티브로 전달해 처리하도록 구성되어 있음

그런데 KB, 카카오뱅크만 콜백 함수 자체가 호출되지 않음

✅ 해결 방법
토스페이먼츠 측에 문의한 결과, 다음과 같이 대응해야 한다는 답변을 받았다:

👉 flutter_inappwebview 사용하여 shouldOverrideUrlLoading 콜백을 통해 모든 URL 요청 제어


shouldOverrideUrlLoading: (controller, navigationAction) async {
  var uri = navigationAction.request.url!;

  if (uri.scheme == 'http' || uri.scheme == 'https') {
    return NavigationActionPolicy.ALLOW;
  } else {
    if (Platform.isAndroid && !navigationAction.isForMainFrame) {
      // 마켓 이동 중 발생하는 unknown_url_scheme 오류 방어
      await controller.stopLoading();
    }

    tossPaymentsWebview(uri.toString());
    return NavigationActionPolicy.CANCEL;
  }
}
tossPaymentsWebview(url) {
  final appScheme = ConvertUrl(url);
  if (appScheme.isAppLink()) {
    appScheme.launchApp(mode: LaunchMode.externalApplication);
  }
}

🛠 dependencies

dependencies:
  flutter:
    sdk: flutter
  flutter_inappwebview: ^6.0.0
  tosspayments_widget_sdk_flutter: ^2.0.2
  url_launcher: ^6.1.10
  ...

🔗 참고 링크
Flutter - TossPayments WebView 연동 예제 PDF

중고나라 기술 블로그 - unknown_url_scheme 처리

TossPayments 공식 문서 - WebView 연동

GitHub 샘플 - flutter_webview_sample_app

profile
Frontend Junior

0개의 댓글