갑자기 결제창 호출 시 에러가 발생합니다

안녕하세요? 결제창 호출 시payment-widget:1 Uncaught (in promise) Error: 결제수단이 아직 선택되지 않았어요. 결제수단을 선택해 주세요. 콘솔창에 표시됩니다. 고객분이 결제대기 중인 상태라 빠른 답변을 부탁드리겠습니다 감사합니다
47 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
유부장
유부장12mo ago
위젯에서, 결제수단을 선택하셨는데도 위 에러가 발생하고 있다는 말씀이신가요? 결제 위젯은 렌더링 된 상태 인가요?
데이타토스중
데이타토스중OP12mo ago
안녕하세요. 위젯창 자체가 뜨지 않고 콘솔에 저 에러가 표시되고 있습니다
유부장
유부장12mo ago
위젯렌더링을 안하셨으니 저 에러가 발생하는 것이 정상 입니다. 결제 연동이 정상적으로 완료되지 않으신것 같은데요.
유부장
유부장12mo ago
연동하기 | 토스페이먼츠 개발자센터
토스페이먼츠의 간편한 결제 연동 과정을 한눈에 볼 수 있습니다. 각 단계별 설명과 함께 달라지는 UI와 코드를 확인해보세요.
데이타토스중
데이타토스중OP12mo ago
지금까지 특별한 문제가 없이 처리되는 코드였는데 갑자기 저 에러가 나와서 질문을 드렸습니다.
유부장
유부장12mo ago
결제 연동한 사이트 전달 부탁 드려요
Kimoon Lee
Kimoon Lee12mo ago
MID 도 확인부탁드립니다.
데이타토스중
데이타토스중OP12mo ago
결제사이트는 ntabi.co.kr 이고, mid는 ntabi1sl85입니다
유부장
유부장12mo ago
결제 테스트 해보려고 하는데, 결제가 안되고 예약이 되었네요 결제는 어떻게 진행할 수 있을지 설명 해주실 수 있으실까요?
데이타토스중
데이타토스중OP12mo ago
여행사이기 때문에 담당자가 고객분에게 결제요청과 결제페이지 주소를 알려드리면 접속하신 후에 결제를 진행하는 구조입니다 결제페이지에 결제버튼이 있고 그걸 누르면 지금까지는 결제위젯창이 표시되었는데. 갑자기 결제창이 뜨지 않고 말씀드린 에러가 콘솔에 찍히고 있습니다
Kimoon Lee
Kimoon Lee12mo ago
저희한테도 결제 페이지 주소를 보내주실수 있을까요?
데이타토스중
데이타토스중OP12mo ago
테스트를 하실 수 있는 결제페이지를 알려드리면 될까요?
Kimoon Lee
Kimoon Lee12mo ago
네 결제페이지 URL 알려주세요.
데이타토스중
데이타토스중OP12mo ago
Ntabi
여행갈 땐 엔타비! 해외자유,패키지 여행, 일일버스투어, 현지 프라이빗 투어, 색다른 경험의 버라이어티팩, 기획전 등 엔타비글로벌과 함께하세요!
데이타토스중
데이타토스중OP12mo ago
외결제0, 01090756799 입니다 아 죄송합니다 외결제7과 01090756799 입니다
Kimoon Lee
Kimoon Lee12mo ago
그것도 로그인이 안됩니다. 다시 확인 부탁드립니다.
데이타토스중
데이타토스중OP12mo ago
Ntabi
여행갈 땐 엔타비! 해외자유,패키지 여행, 일일버스투어, 현지 프라이빗 투어, 색다른 경험의 버라이어티팩, 기획전 등 엔타비글로벌과 함께하세요!
데이타토스중
데이타토스중OP12mo ago
이 주소로 테스트를 부탁드립니다. 결제할 고객분이 기다리고 계셔서 제가 좀 당황을 해서^^^...
Kimoon Lee
Kimoon Lee12mo ago
아 지금 되네요. UI 상으로는 예전도 지금이랑 동일하셨던 건가요?
데이타토스중
데이타토스중OP12mo ago
넵 며칠 전 결제에도 문제가 없었고, 결제연동 코드는 수정한 적이 없습니다
Kimoon Lee
Kimoon Lee12mo ago
우선 연동하신 내용을 보니 위젯으로 연동하셨는데 연동이 완전히 된상태가 아닌것으로 보입니다. 그전에는 이런 케이스에 저희가 일종의 방어로직으로 그냥 결제창을 띄워드렸었는데, 지금은 그 방어로직은 제거한 상태라서 결제창이 안뜨는 것 같구요. 우선은 해당 MID 에 임시로 방어로직을 다시 적용하도록 하겠습니다. 혹시 @데이타토스중 님이 직접 연동하신 건가요?
데이타토스중
데이타토스중OP12mo ago
네 그렇습니다. 조치감사합니다. 매뉴얼에 나와있는 코드를 사용했고 key는 api방식입니다. 혹시 변경사항이 있는건가요?
Kimoon Lee
Kimoon Lee12mo ago
위젯 연동하신 코드를 공유해주실수 있을까요? 지금 보면 위젯이 주문서 페이지에 렌더링이 안되고 있습니다. 일단 이런모양의 UI 가 표시 되어야 합니다.
Kimoon Lee
Kimoon Lee12mo ago
No description
Kimoon Lee
Kimoon Lee12mo ago
그런데 지금 브라우저에서 보니까
Kimoon Lee
Kimoon Lee12mo ago
No description
데이타토스중
데이타토스중OP12mo ago
//토스페이먼츠결제(PG) async pgPay(rNo) { /////// Api방식 //const clientKey = key //고객ID-임의생성가능 const customerKey = 'XXXXXXXX' // 결제위젯 객체 초기화 const paymentWidget = window.PaymentWidget(clientKey, customerKey); // 회원 결제 //결제수단 랜더링 paymentWidget.renderPaymentMethods('#payment-widget', 결제액); localStorage.setItem('total_amount',this.eventInfo.payAmt)
//결제창 호출 paymentWidget.requestPayment({ orderId: rNo, orderName: this.eventInfo.spName, successUrl: '성공시 페이지' failUrl: '실패시 페이지', customerEmail: "", customerName: this.eventInfo.payerName, taxFreeAmount: this.eventInfo.payAmt, }) },
Kimoon Lee
Kimoon Lee12mo ago
이렇게 위젯 렌더링 되는 곳을 display: none 처리 하고 계시네요.
데이타토스중
데이타토스중OP12mo ago
아 그것때문인가요? 그 상태에서도 결제는 문제가 없었거든요 결제팝업창을 끄면 화면에 그 창이 표시되서...none시킨건데 그게 문제일까요?
Kimoon Lee
Kimoon Lee12mo ago
저게 NONE 이면 고객이 결제수단을 선택할수 없어서 방어로직이 없는 경우 제일처음 말씀하신 그 에러가 발생하는 겁니다. 지금 일반 카드 결제만 하시고 다른 결제수단 (계좌이체나 가상계좌 등) 은 사용안하시는 건가요?
데이타토스중
데이타토스중OP12mo ago
아...일단 위젯창이 팝업으로 뜨고 거기서 결제수단을 선택해서 정상진행이 되어왔기 때문에 크게 생각하지 않았었었습니다. 네 맞습니다 지금은 일반카드결제만 하고 있습니다
Kimoon Lee
Kimoon Lee12mo ago
정확히는 위젯 창이 뜨는 건 아니고 저희가 제공하는 기본 카드 결제창이 뜬겁니다. 연동을 잘못하셨더라도 결제는 가능하게 방어로직이 적용된 것이었는데, 이렇게 제공해 드렸더니 잘못 연동해서 그대로 사용하시는 경우가 꽤 있더라구요. 그리고 보니주신 코드를 보면 "온라인 결제" 를 눌렀을때 pgPay 를 호출하시는것 같은데요.
데이타토스중
데이타토스중OP12mo ago
아하 그렇군요... 네 맞습니다
Kimoon Lee
Kimoon Lee12mo ago
해당 페이지가 로딩되면 이부분을 실행해 주시고 /////// Api방식 //const clientKey = key //고객ID-임의생성가능 const customerKey = 'XXXXXXXX' // 결제위젯 객체 초기화 const paymentWidget = window.PaymentWidget(clientKey, customerKey); // 회원 결제 //결제수단 랜더링 paymentWidget.renderPaymentMethods('#payment-widget', 결제액); localStorage.setItem('total_amount',this.eventInfo.payAmt) "온라인 결제" 를 눌렀을때 이부분을 실행해주시면 됩니다. //결제창 호출 paymentWidget.requestPayment({ orderId: rNo, orderName: this.eventInfo.spName, successUrl: '성공시 페이지' failUrl: '실패시 페이지', customerEmail: "", customerName: this.eventInfo.payerName, taxFreeAmount: this.eventInfo.payAmt, })
데이타토스중
데이타토스중OP12mo ago
아 그럼 페이지 로딩 시에 랜더링 부분을 호출하고 버튼클릭하면 위젯을 호출하는 순서로 변경하라는 말씀이시지요?
Ayaan이안
Ayaan이안12mo ago
네 맞습니다.
Kimoon Lee
Kimoon Lee12mo ago
네 맞습니다.
데이타토스중
데이타토스중OP12mo ago
감사합니다. 말씀대로 수정하고 다시 해본 후에 혹시 문제가 발생하면 다시 질문을 드려도 될까요?
Ayaan이안
Ayaan이안12mo ago
네네
데이타토스중
데이타토스중OP12mo ago
친절하고 자세히 설명해주셔서 감사합니다^^
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
Ayaan이안
Ayaan이안12mo ago
display none삭제하고 위에 전달드린대로 코드 수정하면
No description
Ayaan이안
Ayaan이안12mo ago
이 사진처럼 계좌번호 밑에 위젯 나옵니다.
Kimoon Lee
Kimoon Lee12mo ago
만약 신용카드만 사용하길 원하신다면 저희 상점관리자에서 다른 결제수단 모두 제외하고 신용카드만 남겨두시면 됩니다.
데이타토스중
데이타토스중OP12mo ago
넵 감사합니다. 바로 적용해보도록 하겠습니다^^
Kimoon Lee
Kimoon Lee11mo ago
@데이타토스중 님 이부분 가이드 드린대로 수정되신 건지 확인부탁드립니다.

Did you find this page helpful?