UNPKG

react-native-moyasar-sdk

Version:

Official React Native Moyasar SDK - Integrate Credit Cards, Apple Pay, Samsung Pay, and STC Pay with simple interfaces for a seamless payment experience in your React Native app

55 lines (53 loc) 1.87 kB
"use strict"; import { CreditCardNetwork } from "../models/credit_card_network.js"; import { inMadaRange } from "./mada_util.js"; export function getCreditCardNetworkFromNumber(input) { if (inMadaRange(input)) { return CreditCardNetwork.mada; } else if (new RegExp('^3[47]').test(input)) { return CreditCardNetwork.amex; } else if (new RegExp('^4').test(input)) { return CreditCardNetwork.visa; } else if (new RegExp('^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)').test(input)) { return CreditCardNetwork.master; } return CreditCardNetwork.unknown; } export function isValidLuhn(cardNumber) { const digits = cardNumber.split('').reverse().map(digit => parseInt(digit, 10)); const sum = digits.reduce((acc, digit, index) => { if (index % 2 === 1) { const doubled = digit * 2; return acc + (doubled > 9 ? doubled - 9 : doubled); } return acc + digit; }, 0); return sum % 10 === 0; } /** * Maps an array of network strings to CreditCardNetwork enum values * @param networks Array of network strings (e.g. ["visa", "mada"]) * @returns Array of CreditCardNetwork enum values */ export function mapCardNetworkStrings(networks) { return networks.map(network => { const normalizedNetwork = network.toLowerCase().trim(); switch (normalizedNetwork) { case 'mada': return CreditCardNetwork.mada; case 'visa': return CreditCardNetwork.visa; case 'master': case 'mastercard': case 'master card': return CreditCardNetwork.master; case 'amex': case 'americanexpress': case 'american express': return CreditCardNetwork.amex; default: return CreditCardNetwork.unknown; } }).filter(network => network !== CreditCardNetwork.unknown); } //# sourceMappingURL=credit_card_utils.js.map