비타500
비타50015mo ago

flutter 웹뷰 결제 연동 문의

안녕하세요. 최근 flutter webview를 사용하여 앱을 제작 중에 있습니다. webview NavigationDelegate의 onNavigationRequest를 사용하여 intent가 있을 때 tossPaymentsWebview함수를 실행하는데 launchApp()부분에서 Unhandled Exception: Invalid argument (urlString): To use an in-app web view, you must provide an http(s) URL.: "market://details?id=viva.republica.toss"에러를 뱉습니다
52 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee15mo ago
저희가 제공하는 플러터용 라이브러리가 있습니다. 이걸 쓰시길 권장드릴께요.
비타500
비타500OP15mo ago
플러터용 sdk 내에 tossPaymentsWebview(url) { final appScheme = ConvertUrl(url); // Intent URL을 앱 스킴 URL로 변환 if (appScheme.isAppLink()) { // 앱 스킴 URL인지 확인 appScheme.launchApp(); // 앱 설치 상태에 따라 카드사 앱 실행 또는 앱마켓으로 이동 return NavigationDecision.prevent; } } 사용중입니다 ConvertUrl(url) 부분에서 intent URL이 앱스킴URL로 변경되지 않는 것 같아요
유부장
유부장15mo ago
이용중인 플러터 패키지 이름이 무엇인가요
유부장
유부장15mo ago
https://pub.dev/packages/tosspayments_widget_sdk_flutter 토스페이먼츠 공식 패키지는 이것 입니다
Dart packages
tosspayments_widget_sdk_flutter | Flutter Package
This SDK helps you easily link the 'toss payments' payment module on the flutter.
비타500
비타500OP15mo ago
pubspec.yaml에 tosspayments_widget_sdk_flutter: ^1.0.2 추가 후 import 'package:tosspayments_widget_sdk_flutter/model/tosspayments_url.dart'; 하여 이용중입니다
유부장
유부장15mo ago
네, 그럼 하나씩 볼게요 우선 flutter main 에서 플러그인 임포트 하셨다는것은 이해 되었습니다. 그후 웹뷰컨트롤은 네이티브 쪽에서 작업이 되어야 하는데, 위 전달주신 건 네이티브쪽 문제가 있다고 전달 주신 것으로 이해하면 될까요?
유부장
유부장15mo ago
웹뷰(WebView) 연동하기 | 토스페이먼츠 개발자센터
브라우저가 아닌 모바일 웹뷰로 결제창을 띄울 때 카드사별 결제수단을 인증하려면 외부 앱(3rd-party 앱)을 연동해야 합니다. 연동에 필요한 외부 앱 스킴(App URL Scheme)목록과 추가 로직을 살펴보세요.
유부장
유부장15mo ago
웹뷰(WebView) 연동하기 | 토스페이먼츠 개발자센터
브라우저가 아닌 모바일 웹뷰로 결제창을 띄울 때 카드사별 결제수단을 인증하려면 외부 앱(3rd-party 앱)을 연동해야 합니다. 연동에 필요한 외부 앱 스킴(App URL Scheme)목록과 추가 로직을 살펴보세요.
비타500
비타500OP15mo ago
넵 이 내용입니다
유부장
유부장15mo ago
저 에러는, 어떤 액션을 취하셨을때 맞이한 에러 인가요?
비타500
비타500OP15mo ago
tossPaymentsWebview(url) { final appScheme = ConvertUrl(url); // Intent URL을 앱 스킴 URL로 변환 print('변경 전 : ${url}'); print('변경 후 : ${appScheme.url}'); if (appScheme.isAppLink()) { // 앱 스킴 URL인지 확인 appScheme.launchApp(); // 앱 설치 상태에 따라 카드사 앱 실행 또는 앱마켓으로 이동 return NavigationDecision.prevent; } } 이렇게 로그를 찍어봤는데 I/flutter (27458): 변경 전 : intent://pay?payToken=lDV9FM9Zla0iajlRo0NL6c&isBnplShop=false&deviceType=mobile&isTossApp=false&appPayVersion=2.0#Intent;scheme=supertoss;package=viva.republica.toss;end I/flutter (27458): 변경 후 : intent://pay?payToken=lDV9FM9Zla0iajlRo0NL6c&isBnplShop=false&deviceType=mobile&isTossApp=false&appPayVersion=2.0#Intent;scheme=supertoss;package=viva.republica.toss;end 둘 다 똑같이 나오는게 맞나요? intent가 http나 https로 convert되어 나오는게 맞나요? 제일 위 에러는 앱 설치하기를 눌렀을 때 나오는 에러입니다
유부장
유부장15mo ago
앱이 설치된 상태에서, 결제하기를 진행 하시면 어떻게 되시나요?
비타500
비타500OP15mo ago
영상으로 보내드리겠습니다!
유부장
유부장15mo ago
app availability check 한 이후, 앱 설치 되어 있지 않으면 스토어로 보내는 부분에 대한 구현은 해주셔야 할것 같아요.
비타500
비타500OP15mo ago
여기 함수 appScheme.launchApp(); 주석 내용과 별개로요?
이실장
이실장15mo ago
webview lib 어떤거 쓰세요?
비타500
비타500OP15mo ago
webview_flutter.dart 이용 중입니다
이실장
이실장15mo ago
지금 받는 에러가 Unhandled Exception: Invalid argument (urlString): To use an in-app web view, you must provide an http(s) URL.: "market://details?id=viva.republica.toss" 이건가요?
비타500
비타500OP15mo ago
네 맞습니다 스토어로 이동하면서 나오는 오류 같습니다
이실장
이실장15mo ago
우선 정리해드릴게요 1가지만 더 확인 요청드려요 이미 앱이 설치되어있는 결제수단의 경우, 위 에러가 발생하지 않는게 맞는거죠?
유부장
유부장15mo ago
제가 설명드린 부분은 무시 부탁 드립니다. 제가 내부 싱크가 덜 된 상태에서 가이드 드렸습니다
비타500
비타500OP15mo ago
앱 설치가 되어있는 상황에서도 같은 에러 발생하네요
이실장
이실장15mo ago
지금 flutter native component로 개발 하면서, tosspayemtns_flutter_sdk사용해서 개발 중이신가요? 아니면 웹뷰에 웹서버 띄워놓고, convertUrl만 외부앤 띄우는데 활용하시려는 걸까요? 지금 후자로 사용 중인게 맞으시죠?
비타500
비타500OP15mo ago
네 맞습니다 웹뷰에 웹서버를 띄워 제작 중입니다
이실장
이실장15mo ago
그러면 에러메세지만 봤을 때는, 귀사 웹뷰에서 http/https 외에는 허용하지 않는 것으로 보이는데 확인 가능할까요?
비타500
비타500OP15mo ago
확인해보겠습니다!
이실장
이실장15mo ago
확인되셨을까요?
비타500
비타500OP15mo ago
혹시 android:usesCleartextTraffic="true"> 말씀하신 설정이 이 설정이 맞을까요? 웹 서버 설정을 말씀하신건가요?
이실장
이실장15mo ago
우선 귀사 mid 한번 공유해주시겠어요?
비타500
비타500OP15mo ago
tankauction입니다
이실장
이실장15mo ago
+ startsWith 로 검색했을 때, 웹뷰에서 특정 프로토콜만 허용하는 조건이 없나요?
비타500
비타500OP15mo ago
넵 그런 설정은 따로 없습니다
이실장
이실장15mo ago
Dart packages
tosspayments_widget_sdk_flutter package - All Versions
Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter and general Dart programs.
이실장
이실장15mo ago
여기서 다운로드 받아서 샘플 앱 실행했을 때도 동일한현상 발생하는지 확인해주실 수 있으세요? 더불어 위 mid는 현재 사용 불가한 상태인 것 같은데, 별도 계약 진행 중이신걸까요 ?
비타500
비타500OP15mo ago
tankasset으로 확인 부탁드립니다!
이실장
이실장15mo ago
우선 저도 다시한번 해당 소스코드 확인해볼게요. example한번 확인해주고 계셔주세요
비타500
비타500OP15mo ago
비타500
비타500OP15mo ago
이렇게 진행되고 마지막 화면에서 무한로딩입니다
이실장
이실장15mo ago
토스앱 로그인 되셨나요?
비타500
비타500OP15mo ago
아뇨 미로그인입니다
이실장
이실장15mo ago
로그인 안되어있어서 그렇습니다.
비타500
비타500OP15mo ago
로그인하니 잘 넘어갑니다
이실장
이실장15mo ago
네 그럼 해결된건가요..?
비타500
비타500OP15mo ago
아뇨 샘플예제에서만 잘 넘어갑니다..
이실장
이실장15mo ago
그럼 귀사 웹뷰 설정 문제로 보입니다. 이부분은 혹시 저희 쪽 이슈있는지 확인해서 오늘 중 공유드릴게요
비타500
비타500OP15mo ago
넵 감사합니다.. 웹뷰 설정 다시한번 살펴보겠습니다
이실장
이실장15mo ago
@비타500 이슈 확인되었습니다. 메세지 보면 말씀주세요 우선 import만 tosspayments_sdk_flutter: ^0.2.0로 변경해주시면 문제 없을겁니다
비타500
비타500OP15mo ago
넵 적용 후 말씀 드리겠습니다 tosspayments_sdk_flutter: ^0.2.0으로 문제없이 작동됩니다. 그럼 tosspayments_widget_sdk_flutter로 바뀐 걸로 알고있는데 tosspayments_sdk_flutter로 계속 사용해도 문제 없나요?
이실장
이실장15mo ago
converturl 로직만 사용하실 경우 문제 없습니다
비타500
비타500OP15mo ago
네 알겠습니다. 감사합니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?