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
53 lines (52 loc) • 1.59 kB
JavaScript
;
import { CreditCardNetwork } from "../models/credit_card_network.js";
import { getCreditCardNetworkFromNumber } from "./credit_card_utils.js";
export function formatCreditCardNumber(number) {
const cardNetwork = getCreditCardNetworkFromNumber(number);
const regexMatches = number.match(/\d{4,16}/g);
const match = regexMatches && regexMatches[0] || '';
const parts = [];
if (cardNetwork === CreditCardNetwork.amex) {
if (number.length > 4) {
parts.push(number.substring(0, 4));
if (number.length > 10) {
parts.push(number.substring(4, 10));
parts.push(number.substring(10, number.length));
} else {
parts.push(number.substring(4, number.length));
}
} else {
parts.push(number);
}
} else {
for (let i = 0, len = match.length; i < len; i += 4) {
parts.push(match.substring(i, i + 4));
}
}
if (parts.length) {
return parts.join(' ');
} else {
return number;
}
}
export function formatExpiryDate(expiryDate) {
if (expiryDate.length > 2) {
expiryDate = `${expiryDate.slice(0, 2)} / ${expiryDate.slice(2)}`;
}
return expiryDate;
}
export function formatMobileNumber({
cleanedNumber
}) {
if (cleanedNumber.length <= 3) {
// XXX
return cleanedNumber;
} else if (cleanedNumber.length <= 6) {
// XXX XXX
return `${cleanedNumber.slice(0, 3)} ${cleanedNumber.slice(3)}`;
} else {
// XXX XXX XXXX...
return `${cleanedNumber.slice(0, 3)} ${cleanedNumber.slice(3, 6)} ${cleanedNumber.slice(6)}`;
}
}
//# sourceMappingURL=formatters.js.map