quiple
quiple10mo ago

테스트 환경에서 간헐적 500 오류

안녕하세요, 로컬 테스트 환경에서 자동결제를 하는데 간헐적으로 500 오류를 반환합니다.
$url = 'https://api.tosspayments.com/v1/billing/' . $billing_key;
$data = ['orderId' => $order_id, 'amount' => $amount, 'customerKey' => $customer_key, 'customerEmail' => $buyer_email, 'customerName' => $buyer_name, 'orderName' => $order_name];
$credential = base64_encode(env('TOSS_PAYMENTS_SECRET_KEY') . ':');
$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 = json_decode(curl_exec($curlHandle));
$httpCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
$isSuccess = $httpCode == 200;
$url = 'https://api.tosspayments.com/v1/billing/' . $billing_key;
$data = ['orderId' => $order_id, 'amount' => $amount, 'customerKey' => $customer_key, 'customerEmail' => $buyer_email, 'customerName' => $buyer_name, 'orderName' => $order_name];
$credential = base64_encode(env('TOSS_PAYMENTS_SECRET_KEY') . ':');
$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 = json_decode(curl_exec($curlHandle));
$httpCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
$isSuccess = $httpCode == 200;
잘 될 때는 잘 되는데, 이따금씩 계속 500 오류가 나기도 하는데 원인이 뭘까요? 아래 내용은 curl_getinfo 결과입니다.
{
"url": "https://api.tosspayments.com/v1/billing/gHAfCuZ8G4IDcqXp8At62SB3OBFDLmL8arW_oUOvQB8=",
"content_type": "application/json",
"http_code": 500,
"header_size": 293,
"request_size": 193,
"filetime": -1,
"ssl_verify_result": 0,
"redirect_count": 0,
"total_time": 0.387844,
"namelookup_time": 0.008762,
"connect_time": 0.016434,
"pretransfer_time": 0.370852,
"size_upload": 231,
"size_download": 40,
"speed_download": 103,
"speed_upload": 595,
"download_content_length": 40,
"upload_content_length": 231,
"starttransfer_time": 0.370858,
"redirect_time": 0,
"redirect_url": "",
"primary_ip": "103.182.250.2",
"certinfo": [],
"primary_port": 443,
"local_ip": "192.168.219.101",
"local_port": 62689,
"http_version": 3,
"protocol": 2,
"ssl_verifyresult": 0,
"scheme": "HTTPS",
"appconnect_time_us": 370720,
"connect_time_us": 16434,
"namelookup_time_us": 8762,
"pretransfer_time_us": 370852,
"redirect_time_us": 0,
"starttransfer_time_us": 370858,
"total_time_us": 387844,
"effective_method": "POST"
}
{
"url": "https://api.tosspayments.com/v1/billing/gHAfCuZ8G4IDcqXp8At62SB3OBFDLmL8arW_oUOvQB8=",
"content_type": "application/json",
"http_code": 500,
"header_size": 293,
"request_size": 193,
"filetime": -1,
"ssl_verify_result": 0,
"redirect_count": 0,
"total_time": 0.387844,
"namelookup_time": 0.008762,
"connect_time": 0.016434,
"pretransfer_time": 0.370852,
"size_upload": 231,
"size_download": 40,
"speed_download": 103,
"speed_upload": 595,
"download_content_length": 40,
"upload_content_length": 231,
"starttransfer_time": 0.370858,
"redirect_time": 0,
"redirect_url": "",
"primary_ip": "103.182.250.2",
"certinfo": [],
"primary_port": 443,
"local_ip": "192.168.219.101",
"local_port": 62689,
"http_version": 3,
"protocol": 2,
"ssl_verifyresult": 0,
"scheme": "HTTPS",
"appconnect_time_us": 370720,
"connect_time_us": 16434,
"namelookup_time_us": 8762,
"pretransfer_time_us": 370852,
"redirect_time_us": 0,
"starttransfer_time_us": 370858,
"total_time_us": 387844,
"effective_method": "POST"
}
6 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
박의원
박의원10mo ago
혹시 500 에러 응답때 셋팅했던 orderId 정보를 알수 있을까요?
quiple
quiple10mo ago
orderId는 다음과 같이 생성했는데,
$order_id = date('Ymdhis') . str_pad(round(explode(' ', microtime())[0] * 1000), 3, '0', STR_PAD_LEFT);
$order_id = date('Ymdhis') . str_pad(round(explode(' ', microtime())[0] * 1000), 3, '0', STR_PAD_LEFT);
오류 발생 시 사용된 orderId는 20240103035957954입니다.
이실장
이실장10mo ago
시크릿 없이 요청 주셨네요 헤더가 이렇게 넘어왔습니다 authorization: Basic Og==
quiple
quiple10mo ago
헉 그렇군요;; 감사합니다. 시크릿 키를 .env 파일에 안 쓰고 다이렉트로 쓰니까 잘 되네요
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.