카레리스
카레리스2y ago

결제 테스트 오류 - 테스트 클라이언트

{"code":"UNAUTHORIZEDKEY","message":"인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다."} 계속 쓰던 키로 요청했는데 갑자기 위와 같은 오류가 뜨면서 결제팝업이 안 뜹니다. 1. '개발 연동 테스트 상점' 2. 'API키 - 테스트 클라이언트 키 - API 키' 에서 복사해서 사용 테스트 클라이언트 키 test~ 3. 웹 SDK로 호출 const tossPayments = TossPayments(tossClientKey); tossPayments.requestPayment('카드', {
33 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장2y ago
해당오류 받은 주문번호 남겨주시겠어요?
카레리스
카레리스OP2y ago
orderId: "65a2e308-128d-4b97-bc56-195af07eda8f" isLegacy: true methodType: "CARD" amount: 10000 나머지필드 customerName: failUrl successUrl orderName 호출할 때 이 항목들 다 값 넣어서 보냈습니다
today.lastday
today.lastday2y ago
카드사 인증 성공 후 succesUrl로 이동하는데 successUrl에 승인 API를 호출하는 부분을 구현하셨을까요? 여기서 사용하는 secretKey는 결제창 호출시 사용한 clientKey와 pair가 되어야 합니다.
Kimoon Lee
Kimoon Lee2y ago
65a2e308-128d-4b97-bc56-195af07eda8f 이정보로 결제창 띄우실때 저 에러가 발생한건가요?
카레리스
카레리스OP2y ago
네 창이 안떠요 successurl 구현은 했는데 그 앞단계에서 창이 안떠요 다른 테스트키로 쓰면 창이 뜹니다 이 키도 며칠전에는 됐었어요
Kimoon Lee
Kimoon Lee2y ago
우선 키가 정상적으로 넘어 오지 않고 있습니다. 테스트키를 사용하신 거면 키를 알려주실수 있을까요?
카레리스
카레리스OP2y ago
테스트 클라이언트 키: test_ck_oeqRGgYO1r5qXlmbkl1rQnN2Eyaz
Kimoon Lee
Kimoon Lee2y ago
혹시 결제창을 어떻게 호출하시는 건가요? 웹 SDK 로 호출하신 건가요? 아니면 /v1/payments/sdk 이주소로 호출하신 건가요?
카레리스
카레리스OP2y ago
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>결제하기</title> <script src="https://js.tosspayments.com/v1/payment"></script> </head> <body> <button id="payButton" type="button">결제하기</button> <p>클릭 후 결제를 해 주세요. 테스트시 자동 취소 됩니다.</p> <script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script> <script> /<![CDATA[/ const tossClientKey = "test_ck_oeqRGgYO1r5qXlmbkl1rQnN2Eyaz"; const serverUrl = "https://server.com"; const amount = 10000.00; const orderId = "65a2e308-128d-4b97-bc56-195af07eda8f"; const orderName = "\u0110\u01B0\u1EE3c r\u1ED3i \u0111i th\u00F4i"; const customerName = "family11 dogshit1"; // const isPaid = /null/ ''; /]]>/ </script> <script> const tossPayments = TossPayments(tossClientKey); // 클라이언트 키로 초기화하기 $("#payButton").click(function () { tossPayments.requestPayment('카드', { // 결제 수단 파라미터 // 결제 정보 파라미터 amount: amount, orderId: orderId, orderName: orderName, customerName: customerName, successUrl: serverUrl + '/payment/toss/success', failUrl: serverUrl + '/payment/toss/failure', }).catch(function (error) { if (error.code === 'USER_CANCEL') { // 결제 고객이 결제창을 닫았을 때 에러 처리 alert("결제를 취소하셨습니다."); } else if (error.code === 'INVALID_CARD_COMPANY') { // 유효하지 않은 카드 코드에 대한 에러 처리 alert("유효하지 않은 카드 코드입니다."); } }) }) </script> </body> </html> Request URL: https://api.tosspayments.com/v1/payments/sdk
Kimoon Lee
Kimoon Lee2y ago
<script src="https://js.tosspayments.com/v1/payment%22%3E</script> --> <script src="https://js.tosspayments.com/v1/payment"></script> 그리고 /<![CDATA[/ 이부분은 붙여 넣기 할때 그냥 들어가신거죠? 지금 보내주신 코드로 제가 실행해 보면 잘 표시 됩니다.
카레리스
카레리스OP2y ago
붙여넣을 때 들어간 것 같아요 https://js.tosspayments.com/v1/payment
Ayaan이안
Ayaan이안2y ago
아 한가지 조언해 드리면 코드를 작성 하실 때는 ``` 사이에 감싸서 올려주세요 안그러면 스크립트 태그 같은게 보이는 것처럼 깨져서 나오게 되서 확인하기 약간 어려울때가 있어요
Kimoon Lee
Kimoon Lee2y ago
제가 로그를 확인해보면 지금 보내주신 코드로 실행하신게 아닌것 같아요..
카레리스
카레리스OP2y ago
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>결제하기</title>
<script src="https://js.tosspayments.com/v1/payment"></script>
</head>
<body>
<button id="payButton" type="button">결제하기</button>

<p>클릭 후 결제를 해 주세요. 테스트시 자동 취소 됩니다.</p>

<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>

<script>
/*<![CDATA[*/
const tossClientKey = "test_ck_oeqRGgYO1r5qXlmbkl1rQnN2Eyaz";
const serverUrl = "https:\/\/server.com";
const amount = 10000.00;
const orderId = "65a2e308-128d-4b97-bc56-195af07eda8f";
const orderName = "\u0110\u01B0\u1EE3c r\u1ED3i \u0111i th\u00F4i";
const customerName = "family11 dogshit1";
// const isPaid = /*null*/ '';
/*]]>*/
</script>

<script>
const tossPayments = TossPayments(tossClientKey); // 클라이언트 키로 초기화하기

$("#payButton").click(function () {
tossPayments.requestPayment('카드', { // 결제 수단 파라미터
// 결제 정보 파라미터
amount: amount,
orderId: orderId,
orderName: orderName,
customerName: customerName,
successUrl: serverUrl + '/payment/toss/success',
failUrl: serverUrl + '/payment/toss/failure',
}).catch(function (error) {
if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
alert("결제를 취소하셨습니다.");
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
alert("유효하지 않은 카드 코드입니다.");
}
})
})
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>결제하기</title>
<script src="https://js.tosspayments.com/v1/payment"></script>
</head>
<body>
<button id="payButton" type="button">결제하기</button>

<p>클릭 후 결제를 해 주세요. 테스트시 자동 취소 됩니다.</p>

<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>

<script>
/*<![CDATA[*/
const tossClientKey = "test_ck_oeqRGgYO1r5qXlmbkl1rQnN2Eyaz";
const serverUrl = "https:\/\/server.com";
const amount = 10000.00;
const orderId = "65a2e308-128d-4b97-bc56-195af07eda8f";
const orderName = "\u0110\u01B0\u1EE3c r\u1ED3i \u0111i th\u00F4i";
const customerName = "family11 dogshit1";
// const isPaid = /*null*/ '';
/*]]>*/
</script>

<script>
const tossPayments = TossPayments(tossClientKey); // 클라이언트 키로 초기화하기

$("#payButton").click(function () {
tossPayments.requestPayment('카드', { // 결제 수단 파라미터
// 결제 정보 파라미터
amount: amount,
orderId: orderId,
orderName: orderName,
customerName: customerName,
successUrl: serverUrl + '/payment/toss/success',
failUrl: serverUrl + '/payment/toss/failure',
}).catch(function (error) {
if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
alert("결제를 취소하셨습니다.");
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
alert("유효하지 않은 카드 코드입니다.");
}
})
})
</script>
</body>
</html>
Ayaan이안
Ayaan이안2y ago
이 코드로 보면 코드에 문제는 없어 보입니다
Kimoon Lee
Kimoon Lee2y ago
네 보내주신 코드로 실행해보면 잘뜹니다.
카레리스
카레리스OP2y ago
test코드도 그냥 돌아가나요?
Kimoon Lee
Kimoon Lee2y ago
네 잘돌아 가요.
Ayaan이안
Ayaan이안2y ago
토스측에서 테스트 할 수 있는 사이트가 있으면 좋겠습니다. 해당 코드로는 잘 돌아가고 있어서 확인이 필요한 상황이에요
카레리스
카레리스OP2y ago
아이피가 막히거나 할 수도 있나요?
Kimoon Lee
Kimoon Lee2y ago
그러면 아예 timeout 이 떠야 하는데, 지금 요청 온 로그를 보면 clientkey 쪽 정보가 이상하게 오고 있어요..
카레리스
카레리스OP2y ago
이 코드에서 clientkey도 그대로 사용하신건가요?
Ayaan이안
Ayaan이안2y ago
그냥 그대로 복붙했다고 보시면 됩니다
Kimoon Lee
Kimoon Lee2y ago
이사이트에서 보내시는게 맞나요?
카레리스
카레리스OP2y ago
로컬이랑 사이트에서랑 돌아가면서 보내보고 있어요. 네
Kimoon Lee
Kimoon Lee2y ago
혹시 해당 사이트에 header 를 변조하는 기능이 들어가 있는지 확인 부탁드립니다. 지금 요청이 bearer 로 암호화된 값을 보내고 계신것으로 확인됩니다.
카레리스
카레리스OP2y ago
아 헤더가 포함되서 가고 있었네요. 에러메시지에서 클라이언트키오류라고 떠서 그건줄알고 계속 봤네요.. 다른 부라우저에서 할 때 잘 됐었나봐요.. 감사합니다.
Kimoon Lee
Kimoon Lee2y ago
저희 SDK 에서 헤더에 clientkey 값을 넣어서 보내는데, 이부분을 overwrite 하신것 같아요..
카레리스
카레리스OP2y ago
아.. 정상적으로 보내니까 authorization. basic으로 가네요.. 헤더 확장프로그램이 깔려 있어서 주의할께요
Kimoon Lee
Kimoon Lee2y ago
네 감사합니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?