דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. בדיקת תקינות מספרי זהות, אשראי וישראכרד מקומי ב NODEJS

בדיקת תקינות מספרי זהות, אשראי וישראכרד מקומי ב NODEJS

מתוזמן נעוץ נעול הועבר תכנות
1 פוסטים 1 כותבים 258 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי חוקר
    #1

    הורדתי את הספרייה הזו https://www.npmjs.com/package/card-validator
    וביצעתי בה מספר שינויים.
    א. הוספתי בדיקת תקינות מספר אשראי ישראלי.
    ב. הוספתי תמיכת בבדיקת כרטיס אשראי מקומי בן 9 ספרות של ישראכרד. (כולל האלגוריתם כמו שמוסבר כאן http://halemo.com/info/isracard/index.html)
    להלן השינויים וקובץ מוכן להורדה.
    בקובץ node_modules\card-validator\index.js הוספתי פונקצית בדיקת מספר זהות

    'use strict';
    
    module.exports = {
      number: require('./src/card-number'),
      expirationId: require('./src/expiration-id'),
      expirationDate: require('./src/expiration-date'),
      expirationMonth: require('./src/expiration-month'),
      expirationYear: require('./src/expiration-year'),
      cvv: require('./src/cvv'),
      postalCode: require('./src/postal-code'),
      creditCardType: require('credit-card-type')
    };
    

    כמוכ הוספתי קובץ בנתיב node_modules\card-validator\src\expiration-id.js
    ותוכנו הוא

    'use strict';
    
    function expirationId(identifier) {
      var sum = 0;
      var alt = false;
      var i = identifier.length - 1;
      var num;
    
      while(identifier.length<9)
      {
        identifier = '0' + identifier  ;
      }
    
      while (i >= 0) {
        num = parseInt(identifier.charAt(i), 10);
    
        if (alt) {
          num *= 2;
          if (num > 9) {
            num = (num % 10) + 1; // eslint-disable-line no-extra-parens
          }
        }
    
        alt = !alt;
    
        sum += num;
    
        i--;
      }
    
      return sum % 10 === 0;
    }
    
    module.exports = expirationId;
    

    בקובץ node_modules\card-validator\src\luhn-10.js
    הוספתי אלגוריתם בדיקת כרטיס של ישראכרד

    /*
     * Luhn algorithm implementation in JavaScript
     * Copyright (c) 2009 Nicholas C. Zakas
     *
     * Permission is hereby granted, free of charge, to any person obtaining a copy
     * of this software and associated documentation files (the "Software"), to deal
     * in the Software without restriction, including without limitation the rights
     * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
     * copies of the Software, and to permit persons to whom the Software is
     * furnished to do so, subject to the following conditions:
     *
     * The above copyright notice and this permission notice shall be included in
     * all copies or substantial portions of the Software.
     *
     * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     * THE SOFTWARE.
     */
    'use strict';
    
    function luhn10(identifier) {
      var sum = 0;
      var alt = false;
      var i = identifier.length - 1;
      var num;
    
      while (i >= 0) {
        num = parseInt(identifier.charAt(i), 10);
    
        if (alt) {
          num *= 2;
          if (num > 9) {
            num = (num % 10) + 1; // eslint-disable-line no-extra-parens
          }
        }
    
        alt = !alt;
    
        sum += num;
    
        i--;
      }
    
      let result = sum % 10 === 0;
      if (result){
        return result;
      } else{
        return luhn_isracard(identifier);
      }
    }
    
    function luhn_isracard(identifier) {
      var sum = 0;
      var i = identifier.length - 1;
      var num;
      var ii = 1;
      if (parseInt(identifier) === 123456789) {
        return false;
      }
      while(identifier.length<9)
      {
        identifier = '0' + identifier  ;
      }
      while (i >= 0) {
        num = parseInt(identifier.charAt(i), 10);
        num *= ii;
        sum += num;
        ii++;
        i--;
      }
    
      return sum % 11 === 0;
    }
    
    module.exports = luhn10;
    

    בקובץ node_modules\card-validator\node_modules\credit-card-type\lib\card-types.js
    הוספתי אובייקט של ישראכרד

     isracard: {
        niceType: 'Isracard',
        type: 'isracard',
        patterns: [
          0,1,2,3,4,5,6,7,8,9
        ],
        gaps: [3, 6],
        lengths: [8,9],
        code: {
          name: 'CVC',
          size: 3
        }
      }
    

    בקובץ node_modules\card-validator\node_modules\credit-card-type\index.js
    הוספתי את השורות עבור ישראכרד

    var cardNames = {
      VISA: 'visa',
      MASTERCARD: 'mastercard',
      AMERICAN_EXPRESS: 'american-express',
      DINERS_CLUB: 'diners-club',
      DISCOVER: 'discover',
      JCB: 'jcb',
      UNIONPAY: 'unionpay',
      MAESTRO: 'maestro',
      ELO: 'elo',
      MIR: 'mir',
      HIPER: 'hiper',
      HIPERCARD: 'hipercard',
      ISRACARD: 'isracard'
    };
    
    var ORIGINAL_TEST_ORDER = [
      cardNames.VISA,
      cardNames.MASTERCARD,
      cardNames.AMERICAN_EXPRESS,
      cardNames.DINERS_CLUB,
      cardNames.DISCOVER,
      cardNames.JCB,
      cardNames.UNIONPAY,
      cardNames.MAESTRO,
      cardNames.ELO,
      cardNames.MIR,
      cardNames.HIPER,
      cardNames.HIPERCARD,
      cardNames.ISRACARD,
    ];
    

    למי שזה יכול לעזור, בשמחה
    מצ"ב בקובץ
    .card-validator.rar

    תגובה 1 תגובה אחרונה
    3

    בא תתחבר לדף היומי!
    • התחברות

    • אין לך חשבון עדיין? הרשמה

    • התחברו או הירשמו כדי לחפש.
    • פוסט ראשון
      פוסט אחרון
    0
    • דף הבית
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    • חוקי הפורום