웹훅 관련 문의
테스트용 웹훅 설정 후 파일 내에서 별도 처리 없이
http_response_code(200); 으로 웹훅이 잘 연동됬는지 동작을 확인하려고 하는데
개발자 센터에서 웹훅 전송 시 전송중 상태에서 변경되는 부분이 없습니다
방식에 문제가 있을까요?
postman 으로 테스트시에는 정상동작 확인했습니다
9 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
테스트한 주문번호 알려주세요. 확인해 보겠습니다.
2025092410324381940A 입니다
등록한 웹훅 주소 다시 확이 부탁드려요. 호출시 400 에러 발생하고 있습니다.
webhookSend response> HTTP/1.1400 Bad Request content-type: text/html; charset=UTF-8 date: Wed, 24 Sep 2025 01:57:09 GMT server: envoy strict-transport-security: max-age=31536000 transfer-encoding: chunked x-envoy-upstream-service-time: 63 x-powered-by: PHP/8.3.25 x-response-code: 400 x-response-code-details: via_upstream x-response-flags: - missing required headers
postman으로 테스트하면 정상동작 하는데 경로에 문제가 있는건가요?
전체 코드는
// 1) 원본 raw body 읽기
$raw_body = file_get_contents('php://input');
// 2) 헤더 값 추출 (서명 검증은 제거)
$transmission_time = get_header_value('tosspayments-webhook-transmission-time');
$signature_header = get_header_value('tosspayments-webhook-signature') ?? '';
if (!$transmission_time || !$signature_header) {
http_response_code(400);
echo "missing required headers";
exit;
}
// 3) JSON 파싱
$json_value = json_decode($raw_body, true);
if (json_last_error() !== JSON_ERROR_NONE) {
http_response_code(400);
echo "invalid json";
exit;
}
// 5) 즉시 200 응답
http_response_code(200);
echo "ok?";
function get_header_value($name) {
$headers = getallheaders(); // PHP 내장 함수로 가져오기
foreach ($headers as $key => $value) {
if (strtolower($key) === strtolower($name)) {
return $value;
}
}
return null;
}
이렇게만 작성했습니다
혹시 코드 처리상 누락된 부분이 있을까요?
에러가 missing required headers 가 발생하고 있습니다. 코드에 보면 헤더를 필수로 받게 페이지를 구성하셨는데 이부분 제거해주시면 됩니다.
대략 이 부분입니다.
// 2) 헤더 값 추출 (서명 검증은 제거)
$transmission_time = get_header_value('tosspayments-webhook-transmission-time');
$signature_header = get_header_value('tosspayments-webhook-signature') ?? '';
if (!$transmission_time || !$signature_header) {
http_response_code(400);
echo "missing required headers";
exit;
}
앗 그럼 별도의 헤더 체크처리 없이 전달받은 값만 처리하면 되는건가요?
위 코드 삭제 후 성공 처리되는것 까지 확인했습니다! 감사합니다!
지피티 삽질 이었네요
네, 헤더를 추가하실 필요는 없어요.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.