시니비
시니비17mo ago

안녕하세요 브랜드페이 질문드립니다

{ "code": "UNAUTHORIZED_KEY", "message": "인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다.", "data": null } 계속 이 에러가 뜨고 잘 되지 않는데 혹시 한번 봐주실수 있으실까요? 클라이언트 키와 시크릿키 모두 올바르게 입력했습니다 ㅠㅠ 주문번호 1698827091-6009 입니다
37 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee17mo ago
브랜드페이를 연동중이신게 맞으신가요?
시니비
시니비OP17mo ago
네 맞습니다..
Kimoon Lee
Kimoon Lee17mo ago
사용하신 customerkey 를 알려주실수 있을까요?
시니비
시니비OP17mo ago
kakao_3140010367-1698822271-83 입니다
Kimoon Lee
Kimoon Lee17mo ago
그리고 시크릿키는 ":" 를 붙이신후 base64로 인코딩해서 authorization 헤더에 넣으셨는지도 확인부탁드립니다.
시니비
시니비OP17mo ago
네 시크릿키도 올바르게 넣었습니다 예제소스를 그대로 넣은거라..
Kimoon Lee
Kimoon Lee17mo ago
일단 17시 12분 24분에 발생한 에러는 말씀하신 에러가 아니라 리다이렉트 URL이 등록되지 않았습니다. 개발정보 페이지에서 등록해주세요. 이것으로 확인됩니다.
시니비
시니비OP17mo ago
그럼 혹시 주문번호 "1698827909-78900" 한번 확인해봐 주실수 있으실까요? 방금 결제를 진행했는데 처음 문의드린 에러가 뜨고있어서요..
Kimoon Lee
Kimoon Lee17mo ago
혹시 해당 사용자로 약관동의 본인인증 은 하셨나요?
시니비
시니비OP17mo ago
네 진행했습니다
Kimoon Lee
Kimoon Lee17mo ago
결제 비번 넣고나서 저 에러 받으시는거죠?
시니비
시니비OP17mo ago
네네 맞습니다
Kimoon Lee
Kimoon Lee17mo ago
그러면 승인 API 호출시에 secretkey 를 잘못 보내시는 것 같습니다. 승인 API 호출시에 authorization 헤더가 값이 잘 들어가는지 확인부탁드립니다.
시니비
시니비OP17mo ago
$credential = base64_encode($secretKey . ':'); $headers = array( "Authorization: Basic " . $credential, "Content-Type: application/json" ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 이렇게 해주고 있는데 혹시 잘못된것이 있을까요?
Kimoon Lee
Kimoon Lee17mo ago
이코드 써보시겠어요? $credential = base64_encode($secretKey . ':'); $curlHandle = curl_init($url); curl_setopt_array($curlHandle, [ CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_HTTPHEADER => [ 'Authorization: Basic ' . $credential, 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode($data) ]); $response = curl_exec($curlHandle); $data 는 만드셔야 하구요
시니비
시니비OP17mo ago
"1698828621-54272" 새로 결제를 시도해보았는데 여전히 되지 않습니다 ㅠㅠ $data = file_get_contents("php://input"); $jsonData = json_decode($data, true); $paymentKey = $jsonData['paymentKey']; $orderId = $jsonData['orderId']; $amount = $jsonData['amount']; $customerKey = $jsonData['customerKey']; $credential = base64_encode($brandpay_secretKey . ':'); //$url = 'https://api.tosspayments.com/v1/brandpay/payments/confirm'; //$data = ['orderId' => $orderId, 'amount' => $amount, 'paymentKey'=>$paymentKey,'customerKey'=>$customerKey]; header('Content-Type: text/html; charset=UTF-8'); $headers[] = "Authorization: Basic ".$credential; $headers[] = "Content-Type: application/json"; $parameters = Array ( "orderId" => $orderId, "amount" => $amount, "paymentKey" => $paymentKey, "customerKey" => $customerKey ); //print_r($parameters);exit; $curlHandle = curl_init(); //$curl = curl_init($url); curl_setopt_array($curlHandle, [ CURLOPT_URL => "https://api.tosspayments.com/v1/brandpay/payments/confirm", CURLOPT_POST => TRUE, CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_HTTPHEADER => [ 'Authorization: Basic ' . $credential, 'Content-Type: application/json' ], CURLOPT_POSTFIELDS => json_encode($data) ]); $response = curl_exec($curlHandle); $err = curl_error($curlHandle); echo $response; echo $err; 혹시 소스 한번 봐주실수 있으실까요...
이실장
이실장17mo ago
혹시 시크릿키는 위젯키를 사용하셨나요? 중간에 gsk 인지 sk인지 궁금합니다 .
시니비
시니비OP17mo ago
No description
시니비
시니비OP17mo ago
여기에 있는 키를 사용했습니다
이실장
이실장17mo ago
그 밑에 있는 자동결제/API키 사용해주시겠어요?
Kimoon Lee
Kimoon Lee17mo ago
연동테스트 상점이라 저것밖에 없을거에요. $parameters 로 데이터 만드시고 json_encode($data) 이렇게 넣으셨는데요,. curl 로 보내시는 모든값이 정상적으로 들어갔는데 찍어보시기 바랍니다. $data = file_get_contents("php://input"); 그리고 successURL 은 GET 의 query param 으로 들어오는 거라 저렇게 받으실 수 없습니다. 그냥 이런식으로 받으시면 되요 $paymentKey = $_GET['paymentKey']; $orderId = $_GET['orderId'];
$amount = $_GET['amount'];
시니비
시니비OP17mo ago
말씀주신 $parameters 로 반영하고 $_GET으로 수정하고 자동결제키로 키를 바꾸어서 진행해보았는데 되지 않습니다...
Kimoon Lee
Kimoon Lee16mo ago
curl 을 통해서 발송하는 요청 내용 자체를 확인해주시기 바랍니다. 현재 authorization 이 잘못된건지 저희 인증서버에서 deny 가 되어서 어떻게 보내신건지 저희가 확인이 안되비다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
시니비
시니비OP16mo ago
현재 소스를 수정해서 결제완료가 되어 개발자센터 테스트 결제내역에는 반영이 되고 있습니다 도움 주셔서 감사드립니다. 근데 현재 결제내역은 반영이 되는데 .then(function(res) { //console.log(res); // }) .catch(function(err) { alert('결제 요청 실패 - 결과는 consoloe.log 확인'); if (err.code == 'USER_CANCEL') { console.log('사용자 취소') } else if (err.code === 'INVALID_CARD_COMPANY') { // 유효하지 않은 카드 코드에 대한 에러 처리 } else { console.log('기타 에러 상황', err.code, err.message) } }) 에러로 캐치가 되고있는데 결제는 성공해서 결제내역에는 반영이 되고 있습니다. 오늘 9시부터 8번정도 결제테스트를 진행해보았는데... 결제 성공을 해도 왜 res에 들어가지 않는걸까요...?
Kimoon Lee
Kimoon Lee16mo ago
여기서 에러로 캐치 된다면 결제내역에 반영이 되면 안되는 데요. console.log('기타 에러 상황', err.code, err.message) 여기로그가 어떻게 찍히시나요? 그리고 결제내역에 보이는 주문번호 하나 알려주세요.
시니비
시니비OP16mo ago
에러 코드는 not defined로 뜨고 있습니다.. 1698885633-63400 주문번호입니다
Kimoon Lee
Kimoon Lee16mo ago
정상 결제가 된것으로 보이는데요. successURL 을 보내셨나요? 정상 결제상태라서 successURL 보내셨다면 지금 보내주신 코드가 있는 페이지에서 redirect가 되어야 합니다.
시니비
시니비OP16mo ago
현재 https://docs.tosspayments.com/reference/brandpay-sdk#promise%EB%A1%9C-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0 이것을 참고하여 successUrl은 따로 주지않고 있습니다..
브랜드페이 JavaScript SDK | 토스페이먼츠 개발자센터
브랜드페이 JavaScript SDK를 추가하고 메서드를 사용하는 방법을 알아봅니다.
Kimoon Lee
Kimoon Lee16mo ago
만약 그렇다면 .then(function(res) { //console.log(res); // }) 여기로 떨어져야 합니다. 혹시 requestpayments 호출하는 코드를 공유해 주실수 있나요? 그리고 그러면 승인 API 는 어떻게 호출하시는 건가요?
시니비
시니비OP16mo ago
function requestPayment() { if (!validateParams()) return; // [NOTE] 샘플 코드 연동 과정을 돕기 위한 코드입니다. 실제 연동에 사용하지 않습니다. brandpay .requestPayment({ amount: $REQ_VAL[amount], // 결제 금액 orderId: orderId, // 주문에 대한 고유한 ID 값 orderName: '$REQ_VAL[product_title]', // 결제에 대한 주문명 }) .then(function(res) { // 결제 승인 요청 res.customerKey = customerKey const result = axios_return(res); //console.log(result); 이렇게 하고 있고 function axios_return(res) { return axios.post('https://hangcok.com/pg_module/brandpay/confirmurl.php', res); } 이 함수를 통하고 있습니다..
Kimoon Lee
Kimoon Lee16mo ago
네 그러면 axios_return 이 실행되고 requestPayment 가 종료되어야 합니다. 그런데 이부분이 같이 실행되는 건가요? console.log('기타 에러 상황', err.code, err.message) 구조상이미 then 으로 들어온 후라 catch 쪽이 호출될수가 없는데요.
Ayaan이안
Ayaan이안16mo ago
가능합니다. then 안에서 JS Expection이 발생하면 catch로 내려갑니다
시니비
시니비OP16mo ago
일단 결제승인요청을 하고, .then(function(res) { 로 들어오긴 하는데 브랜드페이 샘플코드에는 .then((res) => { alert("결제 요청 성공 - 결과는 consoloe.log 확인"); console.log(res) }) 요렇게 res를 찍어볼수있는데 제가 res를 찍어보려하니 undefined가 뜨고 있습니다 ,, 결과값만 잘 받아와서 반영하면 완료가 될것같은데.. 제가 뭔가 또 잘못하고있는걸까요? 많이 미흡해서..질문이 많습니다..ㅠ
Kimoon Lee
Kimoon Lee16mo ago
결과값은 axios.post('https://hangcok.com/pg_module/brandpay/confirmurl.php', res); 이내용을 받아서 파싱하신후 찍으셔야 합니다.
시니비
시니비OP16mo ago
아..넵 성공했습니다..도움주셔서 감사합니다🙏

Did you find this page helpful?