KBpay 결제 실패 추가 문의
오늘 오전에 답변주신 내용을 바탕으로 기존 webview_flutter를 inappwebview로 대체하였는데,
동일한 오류가 반복되어 추가 문의드립니다.
현재 KBpay, 우리은행, 카카오뱅크의 카드사 앱이 연결되지 않고 있습니다.
KBPay 연결시 intent scheme
intent://pay?srCode=2539841&tcodeSeq=1250193092&kb-acp://#Intent;scheme=kb-acp;package=com.kbcard.cxh.appcard;end;
16 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
플러터 코드
if (Platform.isAndroid) {
try {
var convertedUrl = await getAppUrl(url.toString());
print("convertedUrl: $convertedUrl");
if (await canLaunchUrl(Uri.parse(convertedUrl))) {
await launchUrl(Uri.parse(convertedUrl));
} else {
var marketUrl = await getMarketUrl(url);
await launchUrl(Uri.parse(marketUrl));
}
} catch (e) {
log(e.toString());
}
return NavigationActionPolicy.CANCEL;
} else if (Platform.isIOS) {
if (await canLaunchUrl(Uri.parse(url))) {
await launchUrl(Uri.parse(url));
return NavigationActionPolicy.CANCEL;
}
}
메소드 채널 코드
"getAppUrl" -> {
try {
val url: String = call.argument("url")!!
val intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME)
result.success(intent.dataString)
} catch (e: ActivityNotFoundException) {
result.error("ACTIVITY_NOT_FOUND", "Activity not found to handle the intent", null)
}
}
"getMarketUrl" -> {
try {
val url: String = call.argument("url")!!
val intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME)
val scheme = intent.scheme
val packageName = intent.getPackage()
if (packageName != null) {
result.success("market://details?id=$packageName")
}
result.notImplemented()
} catch (e: ActivityNotFoundException) {
result.error("ACTIVITY_NOT_FOUND", "Activity not found to handle the intent", null)
}
}
getAppUrl에 KBPay intent scheme 삽입 시 나오는 반환값
kb-acp://pay?srCode=8382375&tcodeSeq=1250190038&kb-acp://
inappwebview에서는 3개만 안되나요 아니면 다 안되나요
확인된것은 위 3개만 연결이 되지 않습니다.
그럼 아마 다 안되시겠네요
GitHub
GitHub - youjun-lee/flutter_webview_sample_app: flutter webview sample
flutter webview sample. Contribute to youjun-lee/flutter_webview_sample_app development by creating an account on GitHub.
여기 참고해주세요
웹뷰(WebView) 연동하기 | 토스페이먼츠 개발자센터
모바일에서 결제창을 띄울 때 카드사별 결제수단을 인증하려면 외부 앱(3rd-party 앱)을 연동해야 합니다. 연동에 필요한 외부 앱 스킴(App URL Scheme)목록과 추가 로직을 살펴보세요.
payments 개발자센터에 적힌 내용을 기반으로 코드를 수정하여도 동일한 현상이 발생합니다.
final appScheme = ConvertUrl(url); // Intent URL을 앱스킴 URL로 변환
log("TEST[appScheme]: ${appScheme.appLink}");
if (appScheme.isAppLink()) {
// 앱스킴 URL인지 확인
appScheme.launchApp(
mode: LaunchMode
.externalApplication); // 앱 설치 상태에 따라 앱 실행 또는 마켓으로 이동
return NavigationActionPolicy.CANCEL;
}
해당 코드로 하였을 때 appScheme이
kb-acp://pay?srCode=8013381&tcodeSeq=1250212449&kb-acp%3A//
이렇게만 보이고 뒤에가 잘리는거 같은데, 잘리는 이유가 따로 있나요?
tosspayments_widget_sdk_flutter: ^2.1.1
그건 flutter webview에서 확인해보셔야하는데요. 저희 샘플앱그대로 실행시키면 어떤가요?
InAppWebView(
initialData: InAppWebViewInitialData(
data: _paymentHtml,
mimeType: 'text/html',
encoding: 'utf-8',
),
initialSettings: InAppWebViewSettings(
useShouldOverrideUrlLoading: true,
resourceCustomSchemes: ['intent', 'market']),
onWebViewCreated: (controller) {
_webViewController = controller;
},
onLoadStop: (controller, url) {},
shouldOverrideUrlLoading: (controller, navigationAction) async {
var uri = navigationAction.request.url!;
if (uri.scheme == 'http' || uri.scheme == 'https') { // 표준 웹 URL 체크
return NavigationActionPolicy.ALLOW;
} else { // 그 외의 경우에는 tossPaymentsWebvew 함수로 검증
tossPaymentsWebview(uri.rawValue);
return NavigationActionPolicy.CANCEL;
}
},
onLoadResourceWithCustomScheme: (controller, scheme) async {
List<String> prefixes = ["intent", "market"]; // 커스텀 스킴 프리픽스
RegExp regExp = RegExp("^(${prefixes.map(RegExp.escape).join('|')})");
if (regExp.hasMatch(scheme.url.rawValue)) {
await _webViewController.stopLoading(); // 일치하는 경우 로딩 중단
}
},
),
샘플앱을 그대로 실행시켜도 동일한 현상이 발생되고 있습니다.
그럼 뭔가 dart및 flutter버전 문제일 것 같은데요
현재 버전입니다.
Flutter 3.29.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 09de023485 (2 weeks ago) • 2025-02-28 13:44:05 -0800
Engine • revision 871f65ac1b
Tools • Dart 3.7.0 • DevTools 2.42.2
이 샘플도 안된다고 하시면 저희도 추가로 확인해드릴 사항이 없긴합니다.
https://github.com/youjun-lee/flutter_webview_sample_app
모두 테스트 후 업로드 한 샘플이며, 다른 가맹점의 경우도 마찬가지고요.
GitHub
GitHub - youjun-lee/flutter_webview_sample_app: flutter webview sample
flutter webview sample. Contribute to youjun-lee/flutter_webview_sample_app development by creating an account on GitHub.
pg쪽 이슈가 아니라 웹뷰에서 앱스킴을 처리못하는 상황이고, 앱 환경에 따라 변수가 다양해서요
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.