안녕하세요. 현재 PHP 로 결제 연동중입니다.
결제 성공/실패 분기 처리 페이지에서 아래와 같이 에러 메세지가 노출됩니다.
{
"code": "INVALID_REQUEST",
"message": "필수 파라미터가 누락되었습니다."
}
※ 테스트 히스토리
1. 결제 실패.
2. 개발 로직 검토 후 개선.
3. live_ck_xxxxx 키로 결제 테스트 결과 위와 같이 동일.
4. test_ck_xxxxx 키로 결제 테스트 결과 위와 같이 동일.
5. 백-엔드 영역 재확인 시 프로그램에 대한 문제가 없음(결제부분 생략 후 결제 진행시 주문내역 정상 삽입)
6. 개발 로직 재검토 후 개선사항 불필요.
7. 결제테스트 진행시 위와 같이 동일.
위와 같습니다. 일단 내부적으로 검토할 수 있는 부분은 모두 검토하였는데 토스 결제 모듈 관련 부분에서 위와 같이 Response Data 중 code 200으로 반환되지 않네요.
12 Replies
🫖 에러메세지를 찾아주세요 🧚
* code :
INVALID_REQUEST
* message : 잘못된 요청입니다.
🧞 발생가능한 에러를 모두 알려드려요~
🔮 신용카드
🔮 신용카드
🔮 신용카드
🔮 신용카드
🔮 신용카드
예상문제는 상점관리자에서 주문번호 별로도 확인가능해요!
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
분명 샘플 예제를 보고 그에 맞는 파라미터도 전달하였고 내부적으로 개작해야하는 부분은 개작하였는데 파라미터 값 분기별 내역을 노출해봤는데 정상적으로 다 들어가서 문제가 없다고 판단한 것입니다. 혹시 결제 진행시에 샘플 예제에서 기록된 파라미터값 외에 추가적으로 더 설정해줘야 할까요??
혹시 paymentkey 공유해주실수 있을까요?
잠시만요.
PaymentKey : 01OAv2P6yqLlDJaYngro5LewPvZWMm3ezGdRpXxKN7BQMEk4
위와 같습니다.
/v1/payments/confirm 승인 API 호출하실 때 파라메터가 전달되었는지 확인 부탁드려요.
승인 API 호출시 body에 paymentKey, orderId, amount가 필수로 추가되어야 합니다.
https://docs.tosspayments.com/reference#%EA%B2%B0%EC%A0%9C-%EC%8A%B9%EC%9D%B8
코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
$url = 'https://api.tosspayments.com/v1/payments/confirm';
$RESP_DATA['paymentKey'] = $_GET['paymentKey'];
$RESP_DATA['order_code'] = $_GET['orderId'];
$RESP_DATA['amount']=!empty($_POST['amount'])?$_POST['amount']:$_GET['amount'];
if($DAT_PAY_SETUP['TP_test_use'] == 1) {
$secretKey = $MMALL_PAY_SETUP['TP_test_ck_apikey'];
} else {
$secretKey = $MMALL_PAY_SETUP['TP_live_ck_apikey'];
}
$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($RESP_DATA)
]);
$response = curl_exec($curlHandle);
$httpCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
$isSuccess = $httpCode == 200;
$responseJson = json_decode($response);
위와 같이 curl 위에 호출할때 파라미터가 전달되게끔 처리해놓았습니다.
데이터를 잘못 보내주셨네요.
{"pgsys":"\ud1a0\uc2a4 \ud398\uc774\uba3c\uce20","paymentKey":"01OAv2P6yqLlDJaYngro5LewPvZWMm3ezGdRpXxKN7BQMEk4","order_code":"1170020025191","amount":"1100","amount_num":"1,100"}
orderId 를 안보내주셨습니다.
넵 확인해보겠습니다.
@냥과장
{
"code": "UNAUTHORIZED_KEY",
"message": "인증되지 않은 시크릿 키 혹은 클라이언트 키 입니다."
}
위의 파리미터 정정 후 위와 같이 뜹니다. 혹시 파리미터 전송할 때 시크릿 키로 해야하나요. 아니면 클라이언트 키로 해야하나요?
결제성공했습니다. 감사합니다~ ^^
네 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.