무통장입금 주문 생성 오류 및 완료 페이지 404
환경
- 그누보드7
sirsoft-ecommerce 모듈
- 무통장입금 결제 방식
- PHP 8.3
- 로그인 회원 주문
- 버전 7.0.5
문제 1: 무통장입금 주문 생성 시 Carbon 타입 오류
무통장입금 주문을 완료하려고 하면 다음 안내가 표시되며 주문 처리가 중단됩니다.
결제 처리 중 오류가 발생했습니다. 다시 시도해 주세요.
서버 로그에는 다음 오류가 기록됩니다.
Carbon\Carbon::rawAddUnit():
Argument #3 ($value) must be of type int|float, string given
오류 위치:
modules/sirsoft-ecommerce/src/Services/OrderProcessingService.php:943
관련 코드:
$paymentData['deposit_due_at'] = Carbon::now()->addDays(
$dbankInfo['due_days']
?? module_setting(
'sirsoft-ecommerce',
'order_settings.auto_cancel_days',
3
)
);
module_setting() 또는 due_days 값이 숫자 문자열로 반환되지만, 최신 Carbon에서는 addDays()에 문자열을 전달할 수 없어 TypeError가 발생합니다.
임시 수정
$paymentData['deposit_due_at'] = Carbon::now()->addDays(
(int) (
$dbankInfo['due_days']
?? module_setting(
'sirsoft-ecommerce',
'order_settings.auto_cancel_days',
3
)
)
);
기대 동작
무통장입금 설정값이 문자열로 저장되어 있더라도 정수로 변환한 뒤 입금기한을 계산하고, 주문이 정상 생성되어야 합니다.
문제 2: 주문 생성 후 존재하지 않는 완료 페이지로 이동
첫 번째 오류를 수정하면 주문은 정상적으로 생성되지만, 주문 완료 후 다음 주소로 이동하면서 404가 발생합니다.
/shop/orders/{orderNumber}/complete
관련 코드:
'redirect_url' => "/shop/orders/{$order->order_number}/complete",
현재 애플리케이션의 라우트 목록에는 다음 웹 라우트가 등록되어 있지 않습니다.
GET /shop/orders/{orderNumber}/complete
로그인 회원의 실제 주문 상세 페이지는 다음 주소로 접근 가능합니다.
/mypage/orders/{orderNumber}
임시 수정
'redirect_url' => "/mypage/orders/{$order->order_number}",
기대 동작
- 로그인 회원 주문은 실제 존재하는 회원 주문 완료 또는 주문 상세 페이지로 이동
- 비회원 주문은 비회원 주문 조회에 필요한 토큰과 전용 경로로 이동
- 존재하지 않는 URL을 문자열로 하드코딩하지 않고, 명명된 라우트 또는 공통 URL 생성기를 사용
재현 방법
- 쇼핑몰에서 상품을 장바구니에 담습니다.
- 주문서에서 결제수단으로 무통장입금을 선택합니다.
- 주문하기 버튼을 누릅니다.
- 수정 전에는 Carbon 타입 오류로 주문 생성이 실패합니다.
- 정수 형변환을 적용하면 주문은 생성되지만 완료 URL에서 404가 발생합니다.
제안 수정
-
due_days, auto_cancel_days 값을 사용하기 전에 정수 검증 및 형변환
-
최소값과 최대값 검증 추가
-
주문 완료 URL 하드코딩 제거
-
회원·비회원 주문 유형에 따라 올바른 완료 라우트 생성
-
다음 테스트 케이스 추가
- 문자열
"3"으로 저장된 입금기한
- 숫자
3으로 전달된 입금기한
- 설정값이 비어 있는 경우
- 로그인 회원 무통장입금 완료
- 비회원 무통장입금 완료
- 완료 후 리다이렉트 URL의 실제 라우트 존재 여부
영향
무통장입금을 활성화한 쇼핑몰에서 주문이 전혀 생성되지 않거나, 주문이 생성된 뒤 고객에게 404 화면이 노출될 수 있습니다.
무통장입금 주문 생성 오류 및 완료 페이지 404
환경
sirsoft-ecommerce모듈문제 1: 무통장입금 주문 생성 시 Carbon 타입 오류
무통장입금 주문을 완료하려고 하면 다음 안내가 표시되며 주문 처리가 중단됩니다.
서버 로그에는 다음 오류가 기록됩니다.
오류 위치:
관련 코드:
module_setting()또는due_days값이 숫자 문자열로 반환되지만, 최신 Carbon에서는addDays()에 문자열을 전달할 수 없어TypeError가 발생합니다.임시 수정
기대 동작
무통장입금 설정값이 문자열로 저장되어 있더라도 정수로 변환한 뒤 입금기한을 계산하고, 주문이 정상 생성되어야 합니다.
문제 2: 주문 생성 후 존재하지 않는 완료 페이지로 이동
첫 번째 오류를 수정하면 주문은 정상적으로 생성되지만, 주문 완료 후 다음 주소로 이동하면서 404가 발생합니다.
관련 코드:
현재 애플리케이션의 라우트 목록에는 다음 웹 라우트가 등록되어 있지 않습니다.
로그인 회원의 실제 주문 상세 페이지는 다음 주소로 접근 가능합니다.
임시 수정
기대 동작
재현 방법
제안 수정
due_days,auto_cancel_days값을 사용하기 전에 정수 검증 및 형변환최소값과 최대값 검증 추가
주문 완료 URL 하드코딩 제거
회원·비회원 주문 유형에 따라 올바른 완료 라우트 생성
다음 테스트 케이스 추가
"3"으로 저장된 입금기한3으로 전달된 입금기한영향
무통장입금을 활성화한 쇼핑몰에서 주문이 전혀 생성되지 않거나, 주문이 생성된 뒤 고객에게 404 화면이 노출될 수 있습니다.