네이버
구모듈(xpay) 연동하여 사용 중입니다.
모바일 결제창 상단에 광고 배너가 생기면서
카드 선택 영역이 하단으로 내려갔는데
스크롤이 되지 않아서 카드 선택이 안되고 있습니다.
결제모듈 창에 스크롤이 적용되게 하려면 어떻게 해야 하는지 도움 부탁 드립니다.
45 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
모바일 결제창 상단에 광고배너가, 토스페이먼츠 결제창 내에 생겼다는 말씀 맞으실까요?
아니면, 자체적으로 구현하신 화면 상단에 광고를 넣으셨다는 말씀 이신가요?
어떤 화면을 말씀 하시는지 알려주시면, 그에 맞게 가이드 드릴 수 있도록 하겠습니다.
모바일 결제창을 열때 LGD_WINDOW_TYPE 를 iframe 으로 보내시는지 확인 부탁드립니다.
이 값을 submit 으로 보내주시면 전체창이 저희 페이지로 이동하면서 스크롤이 보이게 될텐데 지금 말씀하시는 증상을 보면 가맹점 페이지에서 iframe 으로 결제창을 열어서 저희가 스크롤을 표시하지 않는것으로 보입니다.
토스페이먼츠 결제창 내에서 생겼습니다.
모바일 결제창을 열때 LGD_WINDOW_TYPE 를 iframe 으로 보내시는지 확인 해주세요
LGD_WINDOW_TYPE = "iframe" 로 되어 있습니다
그럼 이 값을 submit 으로 보내주세요
모바일 연동이 잘못되어 있으신것 같아서
LGD_WINDOW_TYPE
네 변경해보겠습니다
https://drive.google.com/drive/folders/1IEnJeixz6SCk2QT7vAumZXnM5KgBDzXT?usp=share_link
이 가이드도 참고해서 빠진 파라미터 등이 있으면 같이 챙겨서 보내주시기 바랍니다.
결제창이 뜰때 주소창이 토스페이먼츠 URL 이 표시 되어야 합니다.
LGD_CUSTOM_SWITCHINGTYPE = "IFRAME" '신용카드 카드사 인증 페이지 연동 방식
이 값도 같이 submit 으로 변경해야 하나요
네 submit 으로 변경해서 테스트 부탁 드리겠습니다.
두 값을 submit 으로 변경하면 결제창 스크롤은 생기는데
모듈에서 결제 완료 후 return 페이지에서 멈춰서 진행이 안되네요
그리고 아이프레임은 쓰고 있지 않고 해당 링크 매뉴얼 참고해서 작업했었고..
a.asp (장바구니) > b.asp (결제모듈 파라미터) 페이지로 이동해서
b.asp 에서 launchCrossPlatform() 를 호출하고 있습니다
어디를 또 수정해야 할까요
returnurl.asp 가 pc쪽 함수로 구성되신듯 합니다. 아래 내용과 동일한지 확인부탁드립니다.
모바일
<%@ Language=VBScript %>
<HTML>
<head>
<script type="text/javascript">
function setLGDResult() {
document.getElementById('LGD_PAYINFO').submit();
}
</script>
</head>
<body onload="setLGDResult()">
<%
LGD_RESPCODE = Trim(Request("LGD_RESPCODE"))
LGD_RESPMSG = Trim(Request("LGD_RESPMSG"))
LGD_MID = Trim(Request("LGD_MID")) LGD_PAYKEY = "" if LGD_RESPCODE = "0000" then LGD_PAYKEY = Trim(Request("LGD_PAYKEY")) %> <form method="post" name="LGD_PAYINFO" id="LGD_PAYINFO" action="payres.asp">
<input type="hidden" id="LGD_RESPCODE" name="LGD_RESPCODE" value="<%= LGD_RESPCODE %>"/> <input type="hidden" id="LGD_RESPMSG" name="LGD_RESPMSG" value="<%= LGD_RESPMSG %>"/> <input type="hidden" id="LGD_PAYKEY" name="LGD_PAYKEY" value="<%= LGD_PAYKEY %>"/> <input type="hidden" id="LGD_MID" name="LGD_MID" value="<%= LGD_MID %>"/> </form> <% } else response.write "LGD_RESPCODE:" & LGD_RESPCODE & " ,LGD_RESPMSG:" & LGD_RESPMSG '인증 실패에 대한 처리 로직 추가 end if %> </body> </html> 만일 PC쪽 소스라면 setLGDResult 함수가 아래와 같을겁니다. <script type="text/javascript"> function setLGDResult() { parent.payment_return(); try { } catch (e) { alert(e.message); } }
</script> 결제창이 종료되면 returnurl.asp 로 인증결과를 전달하고, 여기서 결제창을 띄운 b.asp 의 form 을 payres.asp 로 submit 시키는 구조입니다. PC의 경우, 결제창을 아이프레임으로 띄우기 때문에, parent.payment_return(); 로 제어하는데, 모바일은 submit으로 띄우기 때문에, 다르게 처리가 되어야합니다
LGD_MID = Trim(Request("LGD_MID")) LGD_PAYKEY = "" if LGD_RESPCODE = "0000" then LGD_PAYKEY = Trim(Request("LGD_PAYKEY")) %> <form method="post" name="LGD_PAYINFO" id="LGD_PAYINFO" action="payres.asp">
<input type="hidden" id="LGD_RESPCODE" name="LGD_RESPCODE" value="<%= LGD_RESPCODE %>"/> <input type="hidden" id="LGD_RESPMSG" name="LGD_RESPMSG" value="<%= LGD_RESPMSG %>"/> <input type="hidden" id="LGD_PAYKEY" name="LGD_PAYKEY" value="<%= LGD_PAYKEY %>"/> <input type="hidden" id="LGD_MID" name="LGD_MID" value="<%= LGD_MID %>"/> </form> <% } else response.write "LGD_RESPCODE:" & LGD_RESPCODE & " ,LGD_RESPMSG:" & LGD_RESPMSG '인증 실패에 대한 처리 로직 추가 end if %> </body> </html> 만일 PC쪽 소스라면 setLGDResult 함수가 아래와 같을겁니다. <script type="text/javascript"> function setLGDResult() { parent.payment_return(); try { } catch (e) { alert(e.message); } }
</script> 결제창이 종료되면 returnurl.asp 로 인증결과를 전달하고, 여기서 결제창을 띄운 b.asp 의 form 을 payres.asp 로 submit 시키는 구조입니다. PC의 경우, 결제창을 아이프레임으로 띄우기 때문에, parent.payment_return(); 로 제어하는데, 모바일은 submit으로 띄우기 때문에, 다르게 처리가 되어야합니다
아 네네 확인해보겠습니다
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
a.asp에서 launchCrossPlatform 를 호출하고
return 에서 parent 로 a.asp의 함수를 호출해서 해당 페이지 내의
LGD_PAYINFO 의 파라미터를들 전송했었는뎨
submit 으로 바꾼 모바일의 경우
return 페이지에서 추가적인 파라미터를 어떤식으로 전송해야하나요?
모바일 return 페이지의 LGD_PAYINFO 폼에
배송 정보 등 추가로 가지고 다니던 파라미터 추가하는 방법이요.. Request.Form 으로 찍어보니 값이 없어서요
모바일과 PC의 연동방법이 다릅니다
모바일연동가이드 : https://docs.google.com/document/d/1cq16hjVLpQSR9Prlm4N0FSmSv9VeW5xTMJGPm6ST4a8/edit?usp=drive_link
모바일 샘플 : https://drive.google.com/file/d/1OuQ0qgY11Qr7c3CS2GkX6XWN1-i-Ku3z/view?usp=drive_link
Google Docs
XPAY[MOBILE]통합결제창-카드_v.1.0.3
Xpay-MOBILE-통합결제창-카드결제 Protocol and Core Function Specification Version 1.0.3 2022.09 목차 XPay 연동 샘플 파일 구조 3 XPay 결제 서비스 파라미터 4 ▪ 통합결제창 호출 요청 파라미터 4 ▪ 통합결제창 인증 응답 파라미터 8 ▪ 결제 승인 요청 파라미터 8 ▪ 결제 승인 응답 파라미터 8 ▪ 간편결제 유형별 응답파라미터 정의 10 XPay 연동 샘플 파일 구조 TossPayments에서 제공되는 샘플...
저희는 asp 연동이고
주신 링크에서 asp 샘플 새로 받아서 다시 해보고 있는데
기존에 있는 파라미터 외 추가적으로 파라미터가 있는데
그걸 returl 페이지에 request 로 받도록 추가해도 값이 비어 있어서
어떻게 받은건지해서요
샘플에 있는 returnURL 을 참고하시면 될겁니다.
모바일의 경우 returlURL 에서 직접 form 을 생성해서 post 로 payres 쪽으로 submit 처리하는 방식으로 구현되어 있습니다,.
네 그래서요..
pc의 경우는 부모창에서 추가적인 파라미터를 같이 가지고 갈 수 있는데
모바일의 경우 form 새로 생성해서 보내다보니
추가적인 파라미터를 불러와서 같이 전송하려고 하는데
불러오는 방법을 모르겠어서 여쭌거였어요
샘플에는 추가적인 파라미터가 없어서요
cst~~ lgd~~~ 외의 추가적으로 가지고 다녀야하는 파라미터들이요..
쿠키 같은곳에 저장했다가 처리는 어려우신 가요?
아 그런방법 뿐인가요??
<input type="hidden" id="LGD_RETURN_MERT_CUSTOM_PARAM" name="LGD_RETURN_MERT_CUSTOM_PARAM" value="Y"/>
<input type="hidden" id="CUSTOM_PARAMETER1" name="CUSTOM_PARAMETER1" value="상점정의 파라미터 값 1번입니다" />
아니면 이렇게 결제창 호출시에 form 을 보내시고 CUSTOM_PARAMETER1 에 필요한 정보를 보내보세요.
그럼 returnURL 에서 CUSTOM_PARAMETER1 로 받으실수 있을겁니다.
결제창 호출시에 파라미터들을 보내고 있는데 리턴에서 안받아져서 여쭌것입니다
딱 저 명칭으로 보내야하나요?
<input type="hidden" id="LGD_RETURN_MERT_CUSTOM_PARAM" name="LGD_RETURN_MERT_CUSTOM_PARAM" value="Y"/>
아 네네 옵션
네네 해볼게요ㅏ
이걸 Y 로 보내시고, CUSTOM_ 으로 시작하는 파라미터로 보내셔야 할겁니다.
custom_ 안붙여도 값은 전달되는데 한글이 인코딩 값으로 오네요
뭘로 디코딩하면 되나요
보내실때 특별히 인코딩을 지정안하셨으면 euc-kr 일겁니다.
저희가 utf-8 이라서
결제창에서 한글이 깨져
<input type="hidden" name="LGD_ENCODING" id="LGD_ENCODING" value="UTF-8">
로 보내고 있기에
리턴페이지에서 utf-8로 디코딩해도 안되네요
어떻게 해야할까요 ㅠㅠ
<input type="hidden" id="LGD_ENCODING_RETURNURL" name="LGD_ENCODING_RETURNURL" value="UTF-8"/>
이것도 보내보세요.
<input type="hidden" name="LGD_ENCODING" id="LGD_ENCODING" value="UTF-8">
<input type="hidden" name="LGD_ENCODING_NOTEURL" id="LGD_ENCODING_NOTEURL" value="UTF-8">
<input type="hidden" name="LGD_ENCODING_RETURNURL" id="LGD_ENCODING_RETURNURL" value="UTF-8">
이렇게 보내고 있는 상태입니다
이렇게 보내고 있는 상태입니다
테스트하신 주문번호를 알수 있을까요?
20240611191512
테스트 모드 아닌 실거래 모드이고
리턴 후 결제 완료 진행을 막은 상태입니다.
마지막 테스트는 혹시나해서 enc~retunurl 을 euc-kr로 보내봤습니다.
저희가 응답한 정보를 보면
txtHospitalNm=%EC%86%8C%ED%94%84%ED%8A%B8%EC%9E%90%EC%9D%B4%EC%98%A8
이걸로 확인되는데요.
받으신 것과 동일하신가요?
네네
저걸 한글로 나오게 하려면 어떻게 해야하나요
URL decode 해보셨나요?
네
URL Decode
URL Decode and Encode - Online
Decode from URL-encoded format or encode into it with various advanced options. Our site has an easy to use online tool to convert your data.
이 사이트에서 Utf 8 으로 보내드린 문자열을 디코딩하면 한글로 정상적으로 표시 됩니다.
앗 그럼 제가 디코딩을 잘못했나보네요
다시 해보겠습니다. 저거만 잘 나오면 문제가 해결된거라서
미리 감사드립니다.
네 일단 사이트에서 확인해보시고 디코딩 로직을 검토해 보시면 될것 같습니다.
오랜시간 도움 주셔서 정말 감사합니다 냥과장님
네 감사합니다.