imlee0_
imlee0_10mo ago

위젯 개발내용 그대로 API로 쓰기 문의

안녕하세요. 위젯을 사용중에 DOM Mutation Event의 deprecation 이슈로 위젯 iframe쪽에 문제가 생겨 v1/payment-widget -> v1/payment 로 수정 후 clientKey와 secretKey 만 api로 변경 및 paymentWidget = PaymentWidget(clientKey, orderId) -> tossPayments = TossPayments(clientKey) 변경 하여 사용하고자 합니다. api 연동은 잘 되고 테스트 결제까지 했습니다. 이렇게만 변경해서 사용해도 무관할까요?
42 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장10mo ago
음.. 그건 위젯이 아닌 데 어떤 이슈 말씀이시죠
이실장
이실장10mo ago
이거 말씀이신가요?
No description
imlee0_
imlee0_OP10mo ago
v1/payment-widget 처음에 이것을 사용했습니다. 반영까지 다했는데 갑자기 보내주신 이미지처럼 나오면서 결제창이 안나오더라고요. 그래서 v1/payment 변경하고 토스에서 제공하는 widget clientKey와 secretKey 에서 api clientKey와 secretKey로 변경 및 paymentWidget = PaymentWidget(clientKey, orderId) -> tossPayments = TossPayments(clientKey) 이렇게 사용하니 토스 결제창이 나오더라고요. 그래서 위젯 배경으로 작성한 코드를 위에 변경한 코드만 덮어서 사용해도 무관한지요?
이실장
이실장10mo ago
일단 위 에러는 결제와 무관한 그냥 warning이라 이걸로 에러의 원인을 찾으면 안될 것 같아요 우선 현재 위젯 rendering은 되었나요?
이실장
이실장10mo ago
이렇게요
No description
imlee0_
imlee0_OP10mo ago
렌더링은 되는데 보내주신 이미지 payment-widget:1 누르면 iframe 쪽에서 뭔가 막히는거 같아요. jsp 맨아래 아래 코드를 넣었습니다. <!-- 결제 방법 영역--> <div class="title" style="display:none">결제 방법</div> <div id="payment-method" style="display:none"></div> <div id="agreement" style="display:none"></div> 이렇게 하고 redering이 되면 창이 떠야하는거 아닌가요..? display:none을 지우고 사용하니 맨아래 창이 나옵니다.
이실장
이실장10mo ago
음..
이실장
이실장10mo ago
No description
No description
이실장
이실장10mo ago
첫번째 이미지 - 결제창 방식 두번째 이미지 - 결제위젯 방식입니다. 결제위젯은 귀사 주문서 페이지에서 결제수단을 선택하고 바로 카드사로 넘기는 방식이에요 어떤 방식을 희망하시나요
Ayaan이안
Ayaan이안10mo ago
참고로 위젯은 display none하면 안됩니다.
imlee0_
imlee0_OP10mo ago
위젯은 모바일 전용인가요?
이실장
이실장10mo ago
아니요 PC도 있습니다. 방식만 확인해주세요
이실장
이실장10mo ago
No description
이실장
이실장10mo ago
이런형태를 기대하시는건가요?
이실장
이실장10mo ago
No description
이실장
이실장10mo ago
반면 결제위젯은 아래와 같은 형태입니다.
No description
No description
imlee0_
imlee0_OP10mo ago
다른분이 개발을 하시고 떠나셔서 위젯 결제시 처음 상태는 모르겠으나... 현 홈페이지에서..
imlee0_
imlee0_OP10mo ago
No description
이실장
이실장10mo ago
접속가능한 링크가 있나요?
토스페이먼츠 BOT
💡 정보 제출
민감 정보를 안전하게 제출해주세요
이실장
이실장10mo ago
링크 / 계정/ 결제경로 3개 전달가능하면 위에 버튼눌러서 제출해주세요
imlee0_
imlee0_OP10mo ago
네네 잠시만요 그럼 제가 개발서버 위젯으로 다시 백업 해두고 요청바로 드리겠습니다. display none 하면 안된다고 하셨으니 안하고 백업해두겠습니다. 보냈습니다.
이실장
이실장10mo ago
어떤 부분에서 햇갈리셨을지 알겠네요 혹시 결제수단은 카드,계좌이체, 가상계좌 3가지 사용하시나요?
imlee0_
imlee0_OP10mo ago
이번에 토스로 넘어오면서 카드만 사용한다고 합니다. paymentWidget .requestPayment('카드',{ amount: amount, 카드를 추가해야할까요? 지금은 '카드'이게 없는데
이실장
이실장10mo ago
카드만 사용하시고 추후 다른결제수단은 추가될 예정이 없으신거죠? (그거에 따라 가이드가 달라질 수 있습니다) 추후란 (빠른시일내)입니다
imlee0_
imlee0_OP10mo ago
아 그런가요..? 토스로 이전하기전에는 이니시스 사용했었습니다. 그때는 가상계좌까지 사용했었는데 토스로 이전하면서 카드만 받는다고 했지만 민원에 따라 어찌 변경될지 모르겠습니다. 사용자들이 가상계좌 사용하고 싶다고 민원을 넣으면 추가될 가능성이 있어 보입니다.
이실장
이실장10mo ago
그렇군요 그럼 위젯으로 안내드릴게요.
이실장
이실장10mo ago
1. 현재는 '결제하기'를 누르면 위젯을 보여주는 형태인데요. 위젯은 '페이지'에 접근할 때 보여진 상태로 있어야합니다. 2. '결제하기'버튼은 위젯 바로 밑에 있어야 자연스럽습니다. 위젯을 위로 올리거나, 결제하기 버튼을 밑으로 내려주세요 3. 결제하기 버튼 눌렀을 때는 아래 참고해서 구현해주세요 https://developers.tosspayments.com/sandbox
토스페이먼츠 개발자센터
토스페이먼츠 결제 연동 문서, API, 키, 테스트 내역, 웹훅 등록 등 개발에 필요한 정보와 기능을 확인해 보세요. 결제 연동에 필요한 모든 개발자 도구를 제공해 드립니다.
이실장
이실장10mo ago
혹시 위에 이해안되는 부분은 바로 말씀주세요
이실장
이실장10mo ago
이런 형태가 되겠죠
No description
이실장
이실장10mo ago
결제하기를 눌렀을 때가 아니라, 페이지 눌렀을 때 저 형태여야 합니다.
imlee0_
imlee0_OP10mo ago
모달처럼 중간에 나오는 형식은 커스텀 들어가야하는건가요?
이실장
이실장10mo ago
그건 아예 토스페이먼츠 결제창 방식으로 방식이 다릅니다. https://1wmmre.csb.app/ 샘플 위젯을 모달위에 띄우고 싶으시면 커스텀 하시면 되고요
imlee0_
imlee0_OP10mo ago
tossPayments .requestPayment('카드', { amount: 100, // 결제 금액 orderId: 'o6XhEMX_DjVXmVnslWTxG', orderName: '테스트 결제', customerName: '김토스', successUrl: 'https://docs.tosspayments.com/guides/payment/test-success', failUrl: 'https://docs.tosspayments.com/guides/payment/test-fail', 위젯에서 원하는 거랑 똑같은거죠? 그럼 tossPayments 사용해도 되나요? paymentWidget .requestPayment({ amount: amount, orderId: orderId, orderName: orderName, // 테스트에서는 성공, 실패 페이지가 없어도 URL에서 쿼리 파라미터를 확인할 수 있어요. successUrl: window.location.origin + '/toss/success.jsp', // 성공 리다이렉트 URL failUrl: window.location.origin + '/toss/fail.jsp', // 실패 리다이렉트 URL }) 현재 이렇게 보내고 있습니다. 이거를 tossPayments .requestPayment({ amount: amount, orderId: orderId, orderName: orderName, // 테스트에서는 성공, 실패 페이지가 없어도 URL에서 쿼리 파라미터를 확인할 수 있어요. successUrl: window.location.origin + '/toss/success.jsp', // 성공 리다이렉트 URL failUrl: window.location.origin + '/toss/fail.jsp', // 실패 리다이렉트 URL }) 이렇게 수정해서 보내도 괜찮은거 같아보이네요. 정보들만 수정해주고
이실장
이실장10mo ago
tossPayments .requestPayment({ amount: amount, orderId: orderId, orderName: orderName, // 테스트에서는 성공, 실패 페이지가 없어도 URL에서 쿼리 파라미터를 확인할 수 있어요. successUrl: window.location.origin + '/toss/success.jsp', // 성공 리다이렉트 URL failUrl: window.location.origin + '/toss/fail.jsp', // 실패 리다이렉트 URL }) 이걸쓸거면 위젯은 아예 사용하지 마세요 위젯이랑은 전혀 상관없는 코드입니다. 다주우고'결제하기' 눌렀을 때 아래만 실행해보세요

<script>
// ------ 클라이언트 키로 객체 초기화 ------
var clientKey = '############'
var tossPayments = TossPayments(clientKey)

// ------ 결제창 띄우기 ------
tossPayments
.requestPayment('카드', {
// 결제수단 파라미터 (카드, 계좌이체, 가상계좌, 휴대폰 등)
// 결제 정보 파라미터
// 더 많은 결제 정보 파라미터는 결제창 Javascript SDK에서 확인하세요.
// https://docs.tosspayments.com/reference/js-sdk
amount: 100, // 결제 금액
orderId: 'PlmJXkGYIrQ7Fa5XrJN6f', // 주문번호(주문번호는 상점에서 직접 만들어주세요.)
orderName: '테스트 결제', // 구매상품
customerName: '김토스', // 구매자 이름
successUrl: 'https://docs.tosspayments.com/guides/payment/test-success', // 결제 성공 시 이동할 페이지(이 주소는 예시입니다. 상점에서 직접 만들어주세요.)
failUrl: 'https://docs.tosspayments.com/guides/payment/test-fail', // 결제 실패 시 이동할 페이지(이 주소는 예시입니다. 상점에서 직접 만들어주세요.)
})
// ------결제창을 띄울 수 없는 에러 처리 ------
// 메서드 실행에 실패해서 reject 된 에러를 처리하는 블록입니다.
// 결제창에서 발생할 수 있는 에러를 확인하세요.
// https://docs.tosspayments.com/reference/error-codes#결제창공통-sdk-에러
.catch(function (error) {
if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
}
})
</script>

<script>
// ------ 클라이언트 키로 객체 초기화 ------
var clientKey = '############'
var tossPayments = TossPayments(clientKey)

// ------ 결제창 띄우기 ------
tossPayments
.requestPayment('카드', {
// 결제수단 파라미터 (카드, 계좌이체, 가상계좌, 휴대폰 등)
// 결제 정보 파라미터
// 더 많은 결제 정보 파라미터는 결제창 Javascript SDK에서 확인하세요.
// https://docs.tosspayments.com/reference/js-sdk
amount: 100, // 결제 금액
orderId: 'PlmJXkGYIrQ7Fa5XrJN6f', // 주문번호(주문번호는 상점에서 직접 만들어주세요.)
orderName: '테스트 결제', // 구매상품
customerName: '김토스', // 구매자 이름
successUrl: 'https://docs.tosspayments.com/guides/payment/test-success', // 결제 성공 시 이동할 페이지(이 주소는 예시입니다. 상점에서 직접 만들어주세요.)
failUrl: 'https://docs.tosspayments.com/guides/payment/test-fail', // 결제 실패 시 이동할 페이지(이 주소는 예시입니다. 상점에서 직접 만들어주세요.)
})
// ------결제창을 띄울 수 없는 에러 처리 ------
// 메서드 실행에 실패해서 reject 된 에러를 처리하는 블록입니다.
// 결제창에서 발생할 수 있는 에러를 확인하세요.
// https://docs.tosspayments.com/reference/error-codes#결제창공통-sdk-에러
.catch(function (error) {
if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
}
})
</script>
imlee0_
imlee0_OP10mo ago
var clientKey = 'test_ck_XXXXXXX' var tossPayments = TossPayments(clientKey) tossPayments .requestPayment('카드', { amount: 100, // 결제 금액 orderId: 'PlmJXkGYIrQ7Fa5XrJN6f', orderName: '테스트 결제', customerName: '김토스', successUrl: window.location.origin + '/toss/success.jsp', failUrl: window.location.origin + '/toss/fail.jsp', }) 지금 현 상태로만 나와도 괜찮을거 같습니다.. 그럼 위젯 사용 안하고 tossPayments를 사용해도 무관한거죠..?
이실장
이실장10mo ago
네 ~
imlee0_
imlee0_OP10mo ago
네네 위젯이 잘 안되어서 tossPayments 바꾸고 사용해도 되는지 물어본거였는데.. 같이 위젯 해결 본다고 이리로 빠져버렸네요 ㅠㅜ 제가 위젯에 대한 이해 부족으로...ㅎㅎ 감사합니다.!
이실장
이실장10mo ago
네네 편하게 문의주세요. 해결되셨다니 다행입니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?