구 XPay 모듈 안드로이드 앱 cleartexttraffic 문제
안녕하세요
서비스중인 앱이 이전 안드로이드 버전에서 만들어져서 현 안드로이드 버전에서 실행이 안되어 버전업 수정을 진행 중입니다
앱은 하이브리드 앱 형태로 안드로이드 웹뷰상에서 화면을 표시 하고 있고 카드결제는 구 Xpay모듈로 되어 있습니다
앱을 수정하여 카드 결제 테스트 중 안드로이드 앱 상에서
ERR_CLEARTEXT_NOT_PERMITTED
에러가 발생합니다
아마도 안드로이드상에서 보안상의 이슈로 http통신을 못하게 하고 있는것 같은데 구 모듈은 http로 밖에 통신이 안되는 걸까요?
대응 방법이 있으면 알려주시기 바랍니다
감사합니다
50 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
AndroidManifest.xml의 application 태그에
android:usesCleartextTraffic="true" 가 추가 되어 있으실까요?
네 추가 되어 있다고 합니다
https://nobase-dev.tistory.com/81
여기 내용도 한번 참고 해보실 수 있으실까요?
이는 안드로이드 앱 설정관련 이슈인 것으로 보여집니다
무근본 개발자
[Android][WebView] ERR_CLEARTEXT_NOT_PERMITTED 오류
Android OS 9 Pie 버전부터는 WebView에 일반적인 텍스트로 "http://" URL 접근이 막혔습니다. (tagetSdkVersion 28 이상일 경우)증상 : WebView에서 Webpage not available, net::ERR_CLEARTEXT_NOT_PERMITTED 오류 발생참고 : https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted검색해보니 이를 수정하기 위해서는 3가지 방법이 있습니다. (https://stackoverflow.com/questions/45940861/andr...
결제모듈은 https 문제 없이 지원 합니다.
* http 사이트로의 접근이 제한되어 있는지 안드로이드 설정 보셔야 할것 같고
* 결제 모듈 https 문제 없이 지원하니, 기존 http 사이트에 ssl 인증서 적용 하시면 위의 설정은 살펴볼 필요 없으실것 같아요
에러 캡처 화면 첨부 합니다

저 checkout url 호출시 http로 통신하여 그런거 같습니다 https로 통신 할수 있도록 설정이 따로 있으실까요?
XPay 모듈내에서, lgdacom / conf / mall.conf 의 설정에서
default_secure_protocols 설정이 어떻게 되어 있는지,
결제 요청하는 payreq_crossplatform 에서 JavaScript 가 바라보고 있는 URL 은 어떻게 되어 있는지 확인 해서 업데이트 부탁 드려요
매우 오래전에 연동 하신것으로 보여지네요
이곳에 올려주시면 됩니다
네 알겠습니다 확인 후 여기에 회신 드리겠습니다
우선
default_secure_protocols = 2048
https://docs.google.com/document/d/1kyhcyXmaRuxZAlNJ_Oiuo2EoFVMlQbHZewZW40E6u2w/edit?usp=sharing
최신 내용 참조하실 수 있는 문서 링크 입니다
Google Docs
XPAY결제모듈공통사항_v.1.0.4
Xpay-결제모듈_공통사항 Protocol and Core Function Specification Version 1.0.4 2023.03 목차 1. 문서 개요 3 2. 결제창 UI 안내 4 3. 지원하는 개발환경 5 4. 시스템 요구사항 5 4.1 공통사항 5 4.2 TLS 1.2를 지원하기 위한 개발언어별 요구사항 5 4.3 하드웨어 및 OS 요구사항 5 5. 가맹점 결제 서버 보안 Check List 6 6. Xpay 결제를 위한 방화벽 설정 6 6.1 결제,취소,부분취소, 현금...
javascript의 src를 말씀하시는 걸까요? 그렇다면
https://xpayvvip.uplus.co.kr/xpay/js/xpay_crossplatform.js
입니다
참고로 서비스 하는 도메인은 ssl이 적용 되어 있습니다
정리하면
서비스하는 웹 도메인은 SSL 적용이 되어 있고,
안드로이드 앱 설정에서 http 허용하는 android:usesCleartextTraffic="true" 로 설정 되어 있음에도 문제가 발생한다, 일까요?
네 맞습니다
lgdacom.conf에 url이
https://xpayvvipclient.uplus.co.kr/xpay/Gateway.do
이고 보내주신 문서 링크에는
https://xpayvvipclient.tosspayments.com/xpay/Gateway.do
라고 되어 있는데 이것과는 상관이 없을까요?
프록시 되어 있어서 문제 없는것이 정상이기는한데,
그래도 변경해서 다시 해보시겠어요?
네 우선 첫번째로 보내주신 안드로이드 앱 설정 변경 관련하여 다시 수정 진행해 보기로 하겠습니다
그럼 저 checkout이 http로 통신하는걸 https로 통신하게 만드는 설정은 따로 없는걸까요?
http://checkout.tosspayments.com~~~~
지금 전달주신 설정으로는 https 로만 통신되어야 하는데,
오래된 uplus 도메인 프록시에 혹여 문제가 있을지 확인은 별도로 해보겠습니다
네 확인 부탁드립니다
그럼 lgdacom.conf에 url을 https://xpayvvipclient.tosspayments.com/xpay/Gateway.do
으로 수정해 볼까요?
서비스 재기동은 필요 없을까요?
네, 재기동은 필요 없습니다
네 저도 확인해 보겠습니다
lgdacom.conf에 url을 https://xpayvvipclient.tosspayments.com/xpay/Gateway.do 로 수정해 보았지만 여전히 http로 통신을 합니다
음.. 직접 확인할 수 있는 사이트 주소가 어떻게 될까요?
사이트에서는 정상적으로 표시가 됩니다
안드로이드 앱 웹뷰 상에서 저런 결과가 나와서 어떻게 해 드려야 할지 모르겠습니다
안드로이드 앱 웹뷰 상에서 결제 화면 자체가 안떠서요....
사이트 주소를 알려주시면, 해당 사이트를 저희가 저희 테스트 앱내 웹뷰에서 띄워서 해볼수 있을것 같아요
타랑께
타랑께, 공유자전거
확인 감사드립니다
이용권 구매로 해야 할까요?
네 맞습니다
제 아이디 비번을 알려드릴까요?
문제 상황의 영상을 찍어주실수 있을까요?
* 웹뷰에서 띄우고 계시는 사이트 주소는 서비스 프로토콜인 https 로 정상적으로 되어 있으신지도 같이 확인 부탁 드립니다
네 알겠습니다
웹뷰의 사이트 주소는 https로 되어 있다고 합니다
에러 화면 동영상 첨부 합니다
원래는 결제 버튼을 누르면 결제 화면이 표시 되어야 하는데 되질 않습니다
정말 이상하네요
처음에 결제 요청되는 사이트가 http 가 아닌이상, 발생할일이 없습니다.
그럼 결제 요청을 하면 lgdacom.conf의 url를 통해서 checkout....url로 이동 한다는 말씀이신 걸까요?
네, 맞습니다
처음에 결제가 요청되는 프로토콜을 인지하고, 이를 기반으로 checkout 으로 프록시 해서, 서비스합니다
우선 오랜 시간 대응해 주셔서 감사합니다
다른 서비스의 lgdacom.conf를 보니
url = https://xpayclient.lgdacom.net/xpay/Gateway.do
test_url = https://xpayclient.lgdacom.net:7443/xpay/Gateway.do
aux_url = http://xpayclient.lgdacom.net:7080/xpay/Gateway.do
이러한 것도 있네요
중간 도메인이 uplus.co.kr, tosspayments.co.kr, lgdacom.net
이게 다 같은 역할을 하는 걸까요?
정말 오래 된 도메인들이네요
네, 프록시로 전부 전환하고 있는 사용가능한 도메인은 맞기는 한데,
그래도 가능하면 tosspayments.com 으로 수정 부탁 드립니다
네 알겠습니다
테스트 환경 포트도 위에 전달드린 문서 확인 하시고 수정 필요 하십니다
혹시 결제 페이지에 import 한 js 파일을 http 로 사용중이신건 아닌가요?
<script language="javascript" src="https://xpayvvip.tosspayments.com/xpay/js/xpay_crossplatform.js" type="text/javascript"></script>
이런 부분일겁니다.
해당 부분 https로 되어 있습니다
<!-- service일 경우 아래 URL을 사용 -->
<script language="javascript" src="https://xpayvvip.uplus.co.kr/xpay/js/xpay_crossplatform.js" type="text/javascript"></script>
아 그럼 저 부분도 tosspayments.com으로 바꾸어야 할까요......
이걸 개발한 업체가 엄청 오래전 로직을 가지고 현재까지 만들고 있는 모양입니다....
네, 도메인을 tosspayments.com 으로 변경 부탁드려요.
https://xpayvvip.tosspayments.com/xpay/js/xpay_crossplatform.js
네 알겠습니다
그럼 정리 하자면 구 모듈 XPay를 이용하여 현 안드로이드 버전의 웹뷰 상에서도 카드 결제가 가능하다는 말씀이실까요?
앱 상에 문제가 있을거 같아 업체에게 다시 문의해 볼려고 합니다
네, 웹뷰상에서 사이트 띄워서 진행하는것이 default 입니다
요즘 예전 도메인으로 요청이 들어가서 나는 오류가 꽤 많은 것 같네요 😅
새 도메인으로 변경해서 쓰시는 걸 강력하게 추천드려요
네 알겠습니다 ^^;;
아참 도메인 바꾸실 때는 문서 보시고 방화벽을 추가로 등록해 주셔야 합니다!
네 참고하도록 하겠습니다 감사합니다
우선 많은 분들 대응해 주셔서 대단히 감사합니다
일단 이 포스트는 닫고 앱쪽에 문제가 없는지 다시 한번 확인해 보겠습니다
다른 문의가 있을시 다시 포스트를 작성하도록 하겠습니다
dk rmfjsep
아 그런데
checkout페이지에 안드로이드에서 지원하지 않는 웹뷰 속성인 target-densitydpi가 있는거 같습니다
이 페이지 입니다

해당 속성은 내부 확인 해보겠습니다
내부 전달 해두었습니다.
의견 감사드립니다
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.