Code coverage report for SinglePageWebsite-RequireJS/src/assets/vendor/structurejs/js/util/MerchantUtil.js

Statements: 91.23% (52 / 57)      Branches: 80.95% (51 / 63)      Functions: 87.5% (7 / 8)      Lines: 90.57% (48 / 53)      Ignored: none     

All files » SinglePageWebsite-RequireJS/src/assets/vendor/structurejs/js/util/ » MerchantUtil.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 1411 1 1                             1 1                             1 8     8 8 8 8 8 125 63     62 62   125   8                                     1 2 2 2 2 23   2 2                             1 6 1   5 1   4 1   3     3 1   2 1     1                           1 2 2 2 2 1   1   1   1    
(function (factory) {
    Eif (typeof module === 'object' && typeof module.exports === 'object') {
        var v = factory(require, exports); Eif (v !== undefined) module.exports = v;
    }
    else if (typeof define === 'function' && define.amd) {
        define(["require", "exports"], factory);
    }
})(function (require, exports) {
    /**
     * A MerchantUtility class that has several static methods to assist in development.
     *
     * @class MerchantUtil
     * @module StructureJS
     * @submodule util
     * @author Robert S. (www.codeBelt.com)
     * @static
     */
    var MerchantUtil = (function () {
        function MerchantUtil() {
            throw new Error('[MerchantUtil] Do not instantiate the MerchantUtil class because it is a static class.');
        }
        /**
         * Determines if credit card is valid using the Luhn formula.
         *
         * @method isCreditCard
         * @param cardNumber {string} The credit card number.
         * @returns {boolean} <code>true</code> if String is a valid credit card number; otherwise <code>false</code>.
         * @public
         * @static
         * @example
         *      MerchantUtil.isCreditCard('4556106734384949');
         *      // true
         */
        MerchantUtil.isCreditCard = function (cardNumber) {
            Iif (cardNumber.length < 7 || cardNumber.length > 19 || Number(cardNumber) < 1000000) {
                return false;
            }
            var pre;
            var sum = 0;
            var alt = true;
            var i = cardNumber.length;
            while (--i > -1) {
                if (alt) {
                    sum += Number(cardNumber.substr(i, 1));
                }
                else {
                    pre = Number(cardNumber.substr(i, 1)) * 2;
                    sum += (pre > 8) ? pre -= 9 : pre;
                }
                alt = !alt;
            }
            return sum % 10 == 0;
        };
        /**
         * Encode a credit card number as a string and encode all digits except the last <code>digitsShown</code>.
         *
         * @method encodeCreditCardNumber
         * @param strNumber {string} The credit card number as string.
         * @param [digitsShown=4] {number} Display this many digits at the end of the card number for security purposes.
         * @param [encodeChar=*] {string} Optional encoding character to use instead of default '*'.
         * @returns {string}
         * @public
         * @static
         * @example
         *      MerchantUtil.encodeCreditCardNumber('4556106734384949');
         *      // ************4949
         *
         *      MerchantUtil.encodeCreditCardNumber('4556106734384949', 5, 'x');
         *      // xxxxxxxxxxx84949
         */
        MerchantUtil.encodeCreditCardNumber = function (strNumber, digitsShown, encodeChar) {
            if (digitsShown === void 0) { digitsShown = 4; }
            if (encodeChar === void 0) { encodeChar = '*'; }
            var encoded = '';
            for (var i_1 = 0; i_1 < strNumber.length - digitsShown; i_1++) {
                encoded += encodeChar;
            }
            encoded += strNumber.slice(-digitsShown);
            return encoded;
        };
        /**
         * Returns a credit card provider name from the credit card number passed in.
         *
         * @method getCreditCardProvider
         * @param cardNumber {string}
         * @returns {string}
         * @example
         *      MerchantUtil.getCreditCardProvider("4556106734384949");
         *      // visa
         *
         *      MerchantUtil.getCreditCardProvider("5428070016026573");
         *      // mastercard
         */
        MerchantUtil.getCreditCardProvider = function (cardNumber) {
            if (MerchantUtil.isCreditCard(cardNumber) == false) {
                return 'invalid';
            }
            if (cardNumber.length == 13 || cardNumber.length == 16 && cardNumber.indexOf('4') == 0) {
                return 'visa';
            }
            else if (cardNumber.indexOf('51') == 0 || cardNumber.indexOf('52') == 0 || cardNumber.indexOf('53') == 0 || cardNumber.indexOf('54') == 0 || cardNumber.indexOf('55') == 0 && cardNumber.length == 16) {
                return 'mastercard';
            }
            else Iif (cardNumber.length == 16 && cardNumber.indexOf('6011') == 0) {
                return 'discover';
            }
            else if (cardNumber.indexOf('34') == 0 || cardNumber.indexOf('37') == 0 && cardNumber.length == 15) {
                return 'amex';
            }
            else if (cardNumber.indexOf('300') == 0 || cardNumber.indexOf('301') == 0 || cardNumber.indexOf('302') == 0 || cardNumber.indexOf('303') == 0 || cardNumber.indexOf('304') == 0 || cardNumber.indexOf('305') == 0 || cardNumber.indexOf('36') == 0 || cardNumber.indexOf('38') == 0 && cardNumber.length == 14) {
                return 'diners';
            }
            else {
                return 'other';
            }
        };
        /**
         * Validate a credit card's expiration date.
         *
         * @method isValidExpirationDate
         * @param month {number}
         * @param year {number}
         * @returns {boolean}
         * @example
         *      MerchantUtil.isValidExDate(11, 2010);
         *      // false
         */
        MerchantUtil.isValidExpirationDate = function (month, year) {
            var d = new Date();
            var currentMonth = d.getMonth() + 1;
            var currentYear = d.getFullYear();
            if ((year > currentYear) || (year == currentYear && month >= currentMonth)) {
                return true;
            }
            return false;
        };
        return MerchantUtil;
    })();
    return MerchantUtil;
});