테스트 결제는 되는데 서비스 client_eky 붙이면 400에러로 BAD REQUEST나오는건 어떻게 해야하나요?
테스트 결제는 되는데 서비스 clienteky 붙이면 400에러로 BAD REQUEST나오는건 어떻게 해야하나요?
결제는 넘어가고 인증 부분에서 진행되지 않습니다.
```js
// 인증 부분
const options = {
method: "POST",
url: "https://api.tosspayments.com/v1/payments/confirm",
headers: {
Authorization:
"Basic 배부받은키_값",
"Content-Type": "application/json",
},
data: {
paymentKey: getUrlObj.paymentKey,
amount: getUrlObj.amount,
orderId: getUrlObj.orderId,
},
};
axios
.request(options)
.then(function (response) {
console.log(response.data);
alert("결제에 성공하였습니다.");
setValues((draft) => {
draft.result = true;
});
})
.catch(function (error) {
console.error(error);
alert("결제에 실패하였습니다. 잠시 후 다시시도해주세요.");
navigate(-1);
});
```
15 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
보내주신 코드가 frontend에서 동작하시는 코드이신가요?
axios 를 쓰시는 것으로 보아 backend 이시겠군요..
네 맞습니다
프론트엔드입니다
프론트엔드에서 결제승인 API 를 호출하시면 안됩니다.
결제승인 API 의 경우 secretkey 를 사용하는데, 이값이 frontend 에 노출되면 보안상 이슈가 발생합니다.
백엔드에서 API 를 호출해 주시기 바랍니다.
아 구조상 파이어베이스 서버에 프론트엔드가 올라가고 process.env로 보안 처리가 됩니다
요청 자체는 서버에서 날라갑니다
그래서 CORS이슈도 없는상태입니다
결제는 잘넘어가구요, redirect된 인증부분에서 문제가 발생합니다
"Basic 배부받은키_값",
이부분에서 secretkey를 사용하고 계신가요?
그 부분을 모르곘습니다
토스페이먼츠에서 시크릿클라이언트키는 확인이되는데
그리고 secretkey 에 ":" 를 추가 하신후 base64로 인코딩을 해서 사용하시는지도 확인해 주시기 바랍니다.
설명서를보면 클론을 붙혀서 하라는데 무슨말인지 잘 모르겠습니다..
예를 들어 secretkey 가 live_sk_aaaaaa 라면
네네
live_sk_aaaaaa: 이 스트링을 base64로 인코딩해서 authorization 헤더에
Basic [인코딩한값]
이렇게 보내주시면 됩니다.
와우
감사합니다!!
해결됐습니다
고생하십쇼!
네 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.