[백업][가리사니] 사업자 등록번호 체크
javascript

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

사업자 등록번호는 123-45-67890 의 10 자리 구조입니다.

123 : 국세청 / 세무서별 코드 45 : 개인 법인 구분코드 6789 : 과세/면세/법인 사업자 등록/지정일자 일련번호 0 : 검증번호

검증방법

예제번호 : 123-45-67891

  1. 하이픈 제거 1234567891 [사업자 10자리]
  2. 인증키 배열 - 고정된값이다. 137137135 [인증키 9자리]
  3. 사업자 앞 9자리와 인증키 앞 9자리를 각각 곱하여 모두 더합니다. 123456789 [사업자 앞9자리] 137137135 [인증키 9자리] 합계 = (1 * 2) + (2 * 3) + (3 * 7)..... + (9 * 5) = 165 합계 = 165
  4. 앞 9자리의 마지막 값을 다시 곱하고 10으로 나눕니다. ((9 * 5) / 10) = 4.5 소수점제거 = 4
  5. 합계에 바로위 값을 더해준다. 합계 = (합계165) + 4 합계 = 169
  6. 합계를 10으로 나누어 나머지를 구합니다. (169) % 10 = 9 값 = 9
  7. 10 - 값을한다. 10 - 값(9) = 1
  8. 마지막 자리수가 1이면 사업자등록번호입니다. 그럼으로 예제는 사업자 등록번호입니다.
// 사업자번호 체크
function checkBisNo(bisNo)
{
	// 넘어온 값의 정수만 추츨하여 문자열의 배열로 만들고 10자리 숫자인지 확인합니다.
	if ((bisNo = (bisNo+'').match(/\d{1}/g)).length != 10) {
	    return false;
	}

	// 합 / 체크키
	var sum = 0;
	var key = [1, 3, 7, 1, 3, 7, 1, 3, 5];

	// 0 ~ 8 까지 9개의 숫자를 체크키와 곱하여 합에더합니다.
	for (var i = 0 ; i < 9 ; i++) {
	    sum += (key[i] * Number(bisNo[i]));
	}

	// 각 8번배열의 값을 곱한 후 10으로 나누고 내림하여 기존 합에 더합니다.
	// 다시 10의 나머지를 구한후 그 값을 10에서 빼면 이것이 검증번호 이며 기존 검증번호와 비교하면됩니다.
	return (10 - ((sum + Math.floor(key[8] * Number(bisNo[8]) / 10)) % 10)) == Number(bisNo[9]);
}