안대식
안대식2y ago

iOS에서 결제 위젯을 이용하여 진행 중입니다

위젯을 띄우는데 까지는 성공하였는데 위젯을서 신용카드-비씨-결제하기-requestPayment-해당 화면 노출-화면내 결제하기 실행 시 결제하기 위한 앱이 호출되지 않고 있습니다. 로그에 아래와 같이 노출되어 scheme도 info.plist에 추가하였는데도 동일한 상태입니다(해당 isp앱 미 설치) 추가로 어떤 작업을 해 주어야 할지 문의 드립니다 2023-08-24 10:24:56.889629+0900 kep[80764:4347924] [default] Failed to open URL ispmobile://vp?TID=20230824102440995736: Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=225, _LSFunction=-[_LSDOpenClient openURL:options:completionHandler:]}
36 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee2y ago
위젯은 SDK 로 호출하신건가요? 아니면 webview 에서 JS SDK 로 호출하신건가요?
이실장
이실장2y ago
아 앱을 아예 설치하지 않은 상황이신가요? market으로 이동하길 기대하시는 상황이고요?
유부장
유부장2y ago
앱 설치 되어 있지 않을때, 앱스토어로 보내는 로직 구현 되어 있으실까요?
안대식
안대식OP2y ago
sdk로 설치 하였고 미 설치인 상태이니 마켓이동을 기대하는건데요 sdk를 사용하는데요 스토어 이동을 위한 처리가 있어야 하는걸까요?
유부장
유부장2y ago
앱이 설치 되어 있지 않을때 스토어로 보내는 로직은 iOS 로직이어서 네, 처리가 필요 하십니다. swift 이신가요?
안대식
안대식OP2y ago
네 swift 입니다
유부장
유부장2y ago
Tunko Development Diary
[iOS][swift] 앱스토어로 보내기
swift 앱스토어로 보내기 #swift @id 에는 앱 Apple ID 값을 넣어준다. 앱정보에서 확인 가능하다. if let url = URL(string: "itms-apps://itunes.apple.com/app/[@id]"), UIApplication.shared.canOpenURL(url) { if #available(iOS 10.0, *) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } else { UIApplication.shared.openURL(url) } }
유부장
유부장2y ago
여기 참조하시면 도움이 되실듯 합니다
안대식
안대식OP2y ago
그럼 sdk에서 앱을 호출 실패 했을때 받을 수 있는 delegate는 무엇인가요?
유부장
유부장2y ago
url scheme parse 해서 호출에 실패하면 스토어로 보내는 구현이 필요 한 것이어서 SDK 에서 앱을 호출실패하는 단계까지 고려가 필요하시지는 않은것 같습니다.
유부장
유부장2y ago
https://docs.tosspayments.com/guides/webview#ios 참조하실수 있는 내용 입니다.
웹뷰(WebView) 연동하기 | 토스페이먼츠 개발자센터
브라우저가 아닌 모바일 웹뷰로 결제창을 띄울 때 카드사별 결제수단을 인증하려면 외부 앱(3rd-party 앱)을 연동해야 합니다. 연동에 필요한 외부 앱 스킴(App URL Scheme)목록과 추가 로직을 살펴보세요.
이실장
이실장2y ago
switch (appScheme) {
case 'supertoss': // 토스
return 'https://apps.apple.com/app/id839333328';
case 'ispmobile': // ISP
return 'https://apps.apple.com/app/id369125087';
case 'kb-acp': // KB국민
return 'https://apps.apple.com/app/id695436326';
case 'liivbank': // Liiv
return 'https://apps.apple.com/app/id1126232922';
case 'mpocket.online.ansimclick': // 삼성
return 'https://apps.apple.com/app/id535125356';
case 'lottesmartpay': // 롯데 모바일
return 'https://apps.apple.com/app/id668497947';
case 'lotteappcard': // 롯데
return 'https://apps.apple.com/app/id688047200';
case 'lpayapp': // L.pay
return 'https://apps.apple.com/app/id1036098908';
case 'lmslpay': // 엘포인트
return 'https://apps.apple.com/app/id473250588';
case 'cloudpay': // 1Q페이
return 'https://apps.apple.com/app/id847268987';
case 'hanawalletmembers': // 하나머니
return 'https://apps.apple.com/app/id1038288833';
case 'hdcardappcardansimclick': // 현대
return 'https://apps.apple.com/app/id702653088';
case 'shinhan-sr-ansimclick': // 신한
return 'https://apps.apple.com/app/id572462317';
case 'wooripay': // 우리
return 'https://apps.apple.com/app/id1201113419';
case 'com.wooricard.wcard': // 우리WON
return 'https://apps.apple.com/app/id1499598869';
case 'newsmartpib': // 우리WON
return 'https://apps.apple.com/app/id393499958';
case 'payco': // 페이코
return 'https://apps.apple.com/app/id924292102';
case 'kakaotalk': // 카카오톡
return 'https://apps.apple.com/app/id362057947';
case 'kftc-bankpay': // 뱅크페이
return 'https://apps.apple.com/app/id398456030';
default:
return url;
}
switch (appScheme) {
case 'supertoss': // 토스
return 'https://apps.apple.com/app/id839333328';
case 'ispmobile': // ISP
return 'https://apps.apple.com/app/id369125087';
case 'kb-acp': // KB국민
return 'https://apps.apple.com/app/id695436326';
case 'liivbank': // Liiv
return 'https://apps.apple.com/app/id1126232922';
case 'mpocket.online.ansimclick': // 삼성
return 'https://apps.apple.com/app/id535125356';
case 'lottesmartpay': // 롯데 모바일
return 'https://apps.apple.com/app/id668497947';
case 'lotteappcard': // 롯데
return 'https://apps.apple.com/app/id688047200';
case 'lpayapp': // L.pay
return 'https://apps.apple.com/app/id1036098908';
case 'lmslpay': // 엘포인트
return 'https://apps.apple.com/app/id473250588';
case 'cloudpay': // 1Q페이
return 'https://apps.apple.com/app/id847268987';
case 'hanawalletmembers': // 하나머니
return 'https://apps.apple.com/app/id1038288833';
case 'hdcardappcardansimclick': // 현대
return 'https://apps.apple.com/app/id702653088';
case 'shinhan-sr-ansimclick': // 신한
return 'https://apps.apple.com/app/id572462317';
case 'wooripay': // 우리
return 'https://apps.apple.com/app/id1201113419';
case 'com.wooricard.wcard': // 우리WON
return 'https://apps.apple.com/app/id1499598869';
case 'newsmartpib': // 우리WON
return 'https://apps.apple.com/app/id393499958';
case 'payco': // 페이코
return 'https://apps.apple.com/app/id924292102';
case 'kakaotalk': // 카카오톡
return 'https://apps.apple.com/app/id362057947';
case 'kftc-bankpay': // 뱅크페이
return 'https://apps.apple.com/app/id398456030';
default:
return url;
}
안대식
안대식OP2y ago
지금 공유주신건 webview로 호출할떄인것 아닌가요 저는 sdk를 이용해서 처리를 하고 있는거라 webview의 delegate를 사용하지 못하는데요
이실장
이실장2y ago
아 저희 native sdk 사용 중이신가요?
안대식
안대식OP2y ago
위에서... sdk를 쓴다고 말씀드렸습니다만...... native sdk에 결제위젯사용중입니다
이실장
이실장2y ago
^^ widget js sdk로 웹뷰 사용하시는 걸로 이해했습니다 네 잠시만 기다려주세요. ios sdk 버전 몇버전 쓰는지 확인 요청드려요
유부장
유부장2y ago
네 제가 잘못 이해 했네요~ 양해 부탁 드립니다
안대식
안대식OP2y ago
native sdk Toass 5.0.1 입니다 아 죄송합니다 다른거네요 잠시만요 SPM으로 설치했는데 패키지 옆에 버전이 나오지는 않고 main 이라고만 뜨네요 음...
이실장
이실장2y ago
ispmobile:// 스킴은 info.list에 등록되었는지 다시한번만 확인 부탁드려요
안대식
안대식OP2y ago
GitHub
GitHub - tosspayments/payment-sdk-ios: Toss Payments iOS SDK
Toss Payments iOS SDK. Contribute to tosspayments/payment-sdk-ios development by creating an account on GitHub.
이실장
이실장2y ago
SPM은 lock 파일에서 버젼 확인이 가능합니다.
안대식
안대식OP2y ago
여기 있는 부분 그대로 붇여넣기한 상황입니다
이실장
이실장2y ago
여기있는 샘플앱을 그대로 실행하셨다는거죠?
안대식
안대식OP2y ago
version 이라는 파일안에 0.1.22 로 확인됩니다
이실장
이실장2y ago
최신버전 사용 중이시군요. - 최신버전 사용 중 - infoplist 이상 없음 혹시 isp 외에는 이상이 없나요? 타카드사도 동일 문제 발생하는지 확인가능할까요? ( 설치안된)
안대식
안대식OP2y ago
다른 타가드도 동일문제 발생합니다 한번 앱을 지우고 다시 설치해서 실행해보겠습니다 지우고 다시 실행해 보았는데요 동일하네요 음.... 추가로 위에 공유드린 부분은 스킴에 대해서만 적용했습니다 native sdk 이니 나머진 필요가 없다고 판단했구요
이실장
이실장2y ago
우선 sdk 상황을 설명드리면. android의 경우 intent URL이 market정보를 가지고 있으나, ios의 경우 market정보를 가지고 있지 않습니다. 그래서 위에 공유드린 소스코드처럼 별도로 처리를 해주어야하는데요. 위 기능이 최근 추가되었는데. 아직 실제로 내부 테스트가 완전 진행되지 않았습니다. 이부분은 sdk 문제인지, 아니면 구현 문제일지는 확인해서 차주초까지 답변드리겠습니다.
안대식
안대식OP2y ago
아... 그럼... ios로는 앱을 직접 설치한 것들로만 우선 테스트를 진행해야 겠네요.... 말씀하신 문제가 중 native sdk가 문제인 것으로 판명된다면 수정까지는 얼마나 걸릴지 예상 가능할까요?
이실장
이실장2y ago
native sdk는 정기 배포일정을 따라가는데요. 그것도 함께 회신드리겠습니다 우선 마켓이동안하는 부분은 현재 많은 앱에서도 따로 구현하지 않는 경우가 많습니다. (카드사 창에서 앱 설치 버튼을 따로 제공해주기 때문에) 이점 참고하셔서 일정 확인해주시기 바라며, 저희도 최대한 빨리 지원될 수 있도록 조율해보겠습니다. (많이 길어지진 않을거에요)
안대식
안대식OP2y ago
네 알겠습니다 최대한 빨리 답변이 오길 바랍니다 대응해 주셔서 감사합니다
이실장
이실장2y ago
sdk내 일반결제에만 적용되어 있었고, 위젯에는 누락이 있었네요. 이거 금주중 적용될 예정입니다. 버전 올라가면 #🌈┃version-history 여기로 안내가 나갑니다. https://discord.com/channels/864296203746803753/1117655878733156353/1144112458219409428 배포되었습니다. 23버전입니다
안대식
안대식OP2y ago
아... 벌써 수정해서 올리신건가요?
이실장
이실장2y ago
네. iOS 개발자분이 빠르게 작업해주셨습니다.
안대식
안대식OP2y ago
네 확인해 보겠습니다 버전 올리니 미설치에 대해서 화면이동 하네요 빠른 수정 감사합니다
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?