모바일환경에서 카드사/페이사 앱연동
안녕하세요. 지난주 모바일 환경에서의 앱스킴에 대해서 문의를 드렸습니다만, 도중 답변을 못 드려 해당 문의글이 클로즈되어 다시 글 남깁니다.
iOS 앱 (하이브리드 웹앱, (next, react, capacitor))로 앱을 실행해보면 결제가 카드사앱, 카카오앱으로 넘어가지 않습니다.(토스페이는 OK)
앱스킴설정은 전부 한 상태이며, tosspayments-sdk 라이브러리를 이용(widget)하여 개발했습니다.
아래는 비씨카드를 선택했을 시 발생한 에러 로그입니다.
Keyboard dismissed with nonzero focus preservation count; check for unbalanced calls to -_incrementFocusPreservationCount
⚡️ WebView loaded
⚡️ WebView loaded
⚡️ [log] - tid = 20250304123514365019, forwardUrl = https://payment-gateway-sandbox.tosspayments.com/mobile/auth/card/VP/result?token=c3b8eeca396a4bc0a2287d5b7010adcb08ac2510a54e4cddaed9f0c9284206f2, errorUrl = , appExecUrl = ispmobile://vp?TID=20250304123514365019, userAgent = Mozilla/5.0 (iPhone; CPU iPhone OS 18_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148, beforeUrl = https://mobile.vpay.co.kr/, encDateExist = false, inAppPay = false, passPara = 1FO/XfLi1v9bysa/yqGMtQ==
⚡️ [log] - 0000
⚡️ [log] - 정상
⚡️ [log] - IPAD YN : N
⚡️ [log] - isMobile true
⚡️ [log] - isTablet false
⚡️ WebView loaded
⚡️ [log] - appPay display : none
⚡️ [log] - appResult display : block
⚡️ [log] - ispmobile://vp?TID=20250304123514365019
11 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
0x117094340 - [pageProxyID=10, webPageID=260, PID=38328, navigationID=259] ProvisionalPageProxy::didFailProvisionalLoadForFrame: frameID=261
0x14638c018 - [pageProxyID=10, webPageID=252, PID=38317] WebPageProxy::didFailProvisionalLoadForFrame: frameID=261, isMainFrame=1, domain=NSURLErrorDomain, code=-1002, isMainFrame=1, willInternallyHandleFailure=0
⚡️ WebView failed provisional navigation
⚡️ Error: 지원되지 않는 URL
Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=2 "Specified target process does not exist" UserInfo={NSLocalizedFailureReason=Specified target process does not exist}>
0x117034300 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'XPCConnectionTerminationWatchdog' for process with PID=38328, error: (null)
Failed to terminate process: Error Domain=com.apple.extensionKit.errorDomain Code=18 "(null)" UserInfo={NSUnderlyingError=0x3020a3750 {Error Domain=RBSRequestErrorDomain Code=3 "No such process found" UserInfo={NSLocalizedFailureReason=No such process found}}}
Snapshotting a view (0x147976680, UIKeyboardImpl) that has not been rendered at least once requires afterScreenUpdates:YES.
⚡️ [log] - pathDvCd 04
ispmobile://vp?TID=20250304123514365019 이부분을 정상적으로 처리하지 못하는 것같은데요.
swift 로 개발하신건가요?
react(typescript)로 개발했고 위젯을 호출하는 부분의 코드는 아래와 같습니다.
위젯이 정상적으로 표시되고 앱 연동으로 넘어가면 앱을 찾지 못하고 설치하라고 나옵니다.
const handlePaymentRequest = async () => {
console.log('toss/checkout handlePaymentRequest tossOrderProps=', tossOrderProps);
try {
savePaymentInfoToSession();
await paymentWidget?.requestPayment({
orderId: orderId,
orderName: tossOrderProps.examTitle,
customerName: tossOrderProps.customerName,
customerEmail: tossOrderProps.customerEmail,
customerMobilePhone: tossOrderProps.customerMobilePhone,
successUrl:
${window.location.origin}${successUrl}?revIdx=${tossOrderProps.revIdx}
,
failUrl: ${window.location.origin}${failUrl}
,
});
} catch (error) {
console.error('toss/checkout handlePaymentRequest error', error);
let errorCode = 'UNKNOWN_ERROR';
let errorMessage = '알 수 없는 오류가 발생했습니다.';
if (error instanceof Error) {
errorCode = (error as any).code || 'UNKNOWN_ERROR';
errorMessage = error.message;
}
if (errorCode === 'UNKNOWN_ERROR') {
alert('결제 요청 중 오류가 발생했습니다. 다시 시도해 주세요.');
} else {
setTimeout(() => {
alert(errorMessage);
}, 100); // UI 업데이트를 위한 시간 확보
}
}
};UI 말고 앱을 어떻게 개발하셨는지 문의드린겁니다.
일반 swift 웹뷰로 구현하신거라면
웹뷰(WebView) 연동하기 | 토스페이먼츠 개발자센터
모바일 웹뷰 결제는 앱투앱(App to App) 이동이 필요한데요. 결제기관의 앱스킴 목록과 OS별 이동 방법을 알아보세요.
여기 참고해서 수정해주세요. 외부 앱이 허용되지 않아 오류가 발생하는 것처럼 보입니다.
ionic/react/capacitor 로 빌드해서 xcode에서 스킴추가하고 실행했습니다.
주신 링크에 해당하는 부분이 있을까요?
xcode 웹뷰에서 URL 핸들링 코드 추가해 주셔야 합니다.

❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.