박성화
박성화3y ago

페이먼츠 위젯 불러오기 안됨

next.js 로 페이먼츠 위젯을 불러오는 기능을 작동시키려고 하는데 콘솔에 error가 생기면서 위젯이 생성되지 않습니다. 코드는 아래와 같습니다. useEffect(() => { const setToss = async () => { const clientKey = process.env .NEXT_PUBLIC_TOSS_PAYMENTS_CLIENT_KEY as string; const customerKey = myDatabaseId; const paymentWidget = await loadPaymentWidget( clientKey, customerKey, ); // 결제방법 UI const paymentMethodWidget = paymentWidget.renderPaymentMethods( '#payment-widget', { value: finalPrice, currency: 'KRW', country: 'KR' }, ); // 이용약관 동의 UI paymentWidget.renderAgreement('#agreement'); paymentWidgetRef.current = paymentWidget; paymentMethodWidgetRef.current = paymentMethodWidget; console.log('widjet activated'); }; if (myDatabaseId != (null || undefined)) { setToss(); } }, []); 콘솔에서 확인되는 오류 화면도 첨부합니다. 문제가 무엇일까요?
No description
17 Replies
박성화
박성화OP3y ago
{/* 결제 위젯 /} <div id="payment-widget" style={{ width: '100%' }} /> {/ 개인 정보 동의 */} <div id="agreement" style={{ width: '100%' }} /> 화면에는 이렇게 반환하고 있습니다 네네ㅠ 콘솔 말씀이신가요? 해당 에러에 대한 이미지 첨부했습니다
박성화
박성화OP3y ago
No description
박성화
박성화OP3y ago
있습니다 화면에는 전혀 보이지 않아요
박성화
박성화OP3y ago
No description
박성화
박성화OP3y ago
아 혹시 위젯에 들어가는 금액이 0원이면 아예 위젯이 생성되지 않는 것인가요? 네 잠시만요 한 3~5분 정도 후에 이미지 남기겠습니다
박성화
박성화OP3y ago
.
No description
박성화
박성화OP3y ago
payment-widget은 아까와 같이 존재합니다
박성화
박성화OP3y ago
No description
박성화
박성화OP3y ago
어떤 라이브러리 말씀이시죠? "dependencies": { "@svgr/webpack": "^5.5.0", "@tosspayments/payment-widget-sdk": "^0.9.0", "@types/react-scroll-sync": "^0.8.3", "@types/styled-components": "^5.1.12", "axios": "^0.21.1", "babel-plugin-styled-components": "^1.13.2", "nanoid": "^3.1.25", "next": "11.1.0", "next-s3-upload": "^0.2.4", "react": "17.0.2", "react-daum-postcode": "^3.1.3", "react-dom": "17.0.2", "react-kakao-login": "^2.1.0", "react-scroll-sync": "^0.9.0", "react-spring": "^9.5.5", "styled-components": "^5.3.0", "swiper": "^9.3.2" }, "devDependencies": { "@types/react": "17.0.19", "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", "eslint": "7.32.0", "eslint-config-airbnb": "^18.2.1", "eslint-config-next": "11.1.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-babel": "^5.3.1", "eslint-plugin-import": "^2.23.4", "eslint-plugin-jsx-a11y": "^6.4.1", "eslint-plugin-prettier": "^3.4.0", "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", "typescript": "^4.9.3" } } 토스 위젯 말씀이시라면 0.9.0 입니다. 해당 코드는 package.json 일부입니다.
티라미슈
티라미슈3y ago
div id 에 # 넣어보세요~ 금액 0이면 당연히 안되고, body div id 명시한곳에 # 이 누락 되어 있는것 같아요~ 아~ 그런가요?
박성화
박성화OP3y ago
일단 샵넣어도 안되긴 합니다
티라미슈
티라미슈3y ago
그렇네요 ㅎㅎ 감사합니다~
박성화
박성화OP3y ago
안됩니다ㅠ 혹시 위젯 관련 div 엘리먼트가 생성되는게 useEffect 이용 시기보다 더 느려서 그런것일까요? 그럼 useEffect의 dependency에 html 엘리먼트를 넣는 방법이 있나요? 그럼 좋은 방법이 있을까요? 네 방법은 고민 좀 해보겠습니다. 해당 ref도 모두 똑같이 설정했습니다. 애당초 샘플 프로젝트 보고 가져온거라서요 지금 dependency를 줄 수 있는 방법을 찾고 있습니다. useAsync는 해당 라이브러리에서 이용한 커스텀 훅인가요? callback ref로 해결했습니다
박성화
박성화OP3y ago
라이브러리 업데이트에 도움이 될까 해서 참고한 링크도 드립니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?