무신사에서 옷 시킨거 반품할 게 있어서 CJ대한통운 홈페이지에서 반품 신청을 하려고 했다.

 

옷 시킬때 온 택배 송장 번호를 입력하고 반품예약을 진행한다

운송장을 입력하고..

 

전화번호가 문제다.

빈 칸 다 채우고 '예약 신청하기' 버튼을 누르니 '받는 분 전화번호 형식을 확인해 주세요' 라고 나온다.

무신사 대표번호가 1544-7199인데, 보통 핸드폰은 010-xxxx-xxxx이고 전화번호는 02 or 03x 04x ... -xxxx-xxxx라서 앞에 000을 붙이니 인식을 못하는것.

 

String.prototype.isPhone = function() {
	var arg = arguments[0] ? arguments[0] : "";
	return eval("(/(02|0[3-9]{1}[0-9]{1})" + arg + "[1-9]{1}[0-9]{2,3}" + arg + "[0-9]{4}$/).test(this)");
}


if(!rcvrTel.isPhone()) {
	alert('받는 분 전화번호 형식을 확인해 주세요');
	$('#rcvrTel1').focus();
	return false;
}

소스 내용이다. regex 부분 보면 대표번호를 생각 못한 것 같다.

 

해결방법은 그냥 자바스크립트 소스에 있는 validation 코드 건너뛰면 된다.

function fncValidate() {
	var frm = document.frmReservation;
	var formData = new FormData(frm);
	
	//예약
	$.ajax({
		url : '/ko/tool/parcel/insertReservation',
		type : 'POST',
		beforeSend : function(request) {
			request.setRequestHeader("X-CSRF-TOKEN", "/*이건 님들 소스에 있는 값 복사하세요*/");
		},
		data : formData,
		dataType : 'json',
		processData : false,
		contentType : false,
		cache : false,
		timeout : 10000,
		error : function(xhr) {
			if (xhr.status == "403") {
				location.href = location.href;
			}
		},
		success : function(responseText) {
			if (responseText != null && responseText.reservationResultMap != null) {
				if (typeof responseText.reservationResultMap.resultList.length > 0) {
					alert('예약에 실패하였습니다.');
					return;
				} else {
					$('#resultRcptNo').text(responseText.reservationResultMap.resultList[0].rcptNo);
					$('#resultSendrCustNm').text(responseText.reservationResultMap.sendrCustNm);
					$('#resultSendrAddr').text(responseText.reservationResultMap.sendrAddr + responseText.reservationResultMap.sendrDetailAddr);
					$('#resultRcvrCustNm').text(responseText.reservationResultMap.rcvrCustNm);
					$('#resultRcvrAddr').text(responseText.reservationResultMap.rcvrAddr + responseText.reservationResultMap.rcvrDetailAddr);
					//해당영역펼침
					$('.box-toolList-1 .tit-whLine-1').removeClass('on');
					$('.box-toolList-1 .processStep').removeClass('show');
					$('.box-toolList-1 .tit-whLine-1').eq(3).addClass('on');
					$('.box-toolList-1 .processStep').eq(3).addClass('show');
					//화면이동
					var goTop = $('.box-toolList-1 .tit-whLine-1').eq(3).offset().top;
					$('html, body').stop().animate({scrollTop : goTop - 75 + 'px'}, 0);
				}
			} else {
				alert('서비스가 원활하지 않습니다.');
			}
		}
	});
}

콘솔창(크롬이면 F12 눌렀을 때 Console 나옴)에 위 함수 내용 통째로 복사해서 붙여넣은 뒤 반품 예약버튼 누르면 정상적으로 완료된다. 서버사이드에서 검사 안하는 것 같다.

중간에 POST 요청 보낼때 CSRF 토큰값 설정하는 부분 있는데 그건 여러분 브라우저 반품예약 페이지에서 우클릭-페이지 소스 보기에서 복붙 하면 된다.

 

위 과정을 잘 모르겠다면 그냥 전화번호 앞부분에 000 대신 02 지역번호 넣어버려도 되지 않을까? 어짜피 계약택배라 굳이 택배기사가 전화할 일도 없을테니...

 

반응형