2018. 4. 24. 17:29


사업자 등록번호 체크할 일이 있어서, 


밑에 페이지에서 가져와서 해놓았는데, 


체크썸이 0으로 끝났을때는 안되서, 보니까, 10일수도 있어서 한번 더 해줘야 되더라..


퍼온 페이지

https://gs.saro.me/#!m=elec&jn=10




사업자 등록번호는 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이면 사업자등록번호입니다.
그럼으로 예제는 사업자 등록번호입니다.

  1. // 국내에 종속성을 가지고있기에 라온에는 직접 들어가지 않겠지만 나중에 확장용으로 들어갈 수 있습니다. (은글슬쩍 라이브러리 광고....)
  2. // https://dev.saro.me/raon/
  3. // 사업자번호 체크
  4. // 2015-04-24 전명 박용서 작성
  5. function ckBisNo(bisNo)
  6. {
  7. // 넘어온 값의 정수만 추츨하여 문자열의 배열로 만들고 10자리 숫자인지 확인합니다.
  8. if ((bisNo = (bisNo+'').match(/\d{1}/g)).length != 10) { return false; }
  9. // 합 / 체크키
  10. var sum = 0, key = [1, 3, 7, 1, 3, 7, 1, 3, 5];
  11. // 0 ~ 8 까지 9개의 숫자를 체크키와 곱하여 합에더합니다.
  12. for (var i = 0 ; i < 9 ; i++) { sum += (key[i] * Number(bisNo[i])); }
  13. // 각 8번배열의 값을 곱한 후 10으로 나누고 내림하여 기존 합에 더합니다.
  14. // 다시 10의 나머지를 구한후 그 값을 10에서 빼면 이것이 검증번호 이며 기존 검증번호와 비교하면됩니다.
  15. return (10 - ((sum + Math.floor(key[8] * Number(bisNo[8]) / 10)) % 10)) == Number(bisNo[9]);
  16. }

=============================================================================


여기 같에 보면 마지막에 한번 더 %10 이 들어가야한다.

값이 체크썸 값이 10이 떴을때는 틀렸다고 나온다.



  1. return ((10 - ((sum + Math.floor(key[8] * Number(bisNo[8]) / 10)) % 10)) % 10) == Number(bisNo[9]);



위에처럼 해야한다.



나 같은 경우는 아래처럼 나눠서 체크했다.

   function ckBisNo(bisNo)

    {

        // 넘어온 값의 정수만 추츨하여 문자열의 배열로 만들고 10자리 숫자인지 확인합니다.

        if ((bisNo = (bisNo+'').match(/\d{1}/g)).length != 10) { return false; }


        // 합 / 체크키

        var sum = 0, 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에서 빼면 이것이 검증번호 이며 기존 검증번호와 비교하면됩니다.

        

        // 체크섬구함

        var chkSum = 0;

        chkSum = Math.floor(key[8] * Number(bisNo[8]) / 10);

        // 체크섬 합계에 더해줌

        sum +=chkSum;

        var reminder = (10 - (sum % 10)) % 10;

        //값 비교

        if(reminder==Number(bisNo[9])) return true;

        return false;

    }

'컴퓨터 > JavaScript (jQuery)' 카테고리의 다른 글

jQuery에서 따옴표 처리하기  (0) 2018.05.24
정규식 패턴 종류  (0) 2018.04.27
Modal로 팝업 띄우기  (6) 2018.02.07
엔터 칠때 자동으로 클릭하기  (0) 2018.01.05
jQuery 동적 이벤트 on  (0) 2015.10.22
Posted by Tyson