package org.cuacfm.members.model.util.sepa; import java.math.BigInteger; /** * The Class BankRemittanceUtils. */ public class BankRemittanceUtils { /** * Instantiates a new bank remittance utils. */ private BankRemittanceUtils() { super(); } /** * Validate IBAN. * * @param iban the iban * @return true, if successful */ public static boolean validateIBAN(String iban) { String baseString = iban.substring(4) + iban.substring(0, 2) + "00"; StringBuilder computeString = new StringBuilder(); for (int i = 0; i < baseString.length(); i++) { char c = baseString.charAt(i); if (Character.isDigit(c)) { computeString.append(c); } if (Character.isLetter(c)) { computeString.append(Character.getNumericValue(c)); } } BigInteger computeInt = new BigInteger(computeString.toString()); BigInteger mod97 = computeInt.mod(new BigInteger("97")); BigInteger controldigit = (new BigInteger("98")).subtract(mod97); String strControlDigit = controldigit.toString(); if (strControlDigit.length() < 2) { strControlDigit = "0" + strControlDigit; } return strControlDigit.equals(iban.substring(2, 4)); } /** * Calculate SEPA creditor ID. * * @param isoCountry the iso country * @param sufijo the sufijo * @param nif the nif * @return the string */ public static String calculateSEPACreditorID(String isoCountry, String sufijo, String nif) { String baseString = nif + isoCountry + "00"; StringBuilder computeString = new StringBuilder(); for (int i = 0; i < baseString.length(); i++) { char c = baseString.charAt(i); if (Character.isDigit(c)) { computeString.append(c); } if (Character.isLetter(c)) { computeString.append(Character.getNumericValue(c)); } } BigInteger computeInt = new BigInteger(computeString.toString()); BigInteger mod97 = computeInt.mod(new BigInteger("97")); BigInteger controldigit = (new BigInteger("98")).subtract(mod97); String strControlDigit = controldigit.toString(); if (strControlDigit.length() < 2) { strControlDigit = "0" + strControlDigit; } return isoCountry + strControlDigit + sufijo + nif; } /** * Calculate IBAN. * * @param isoCountry the iso country * @param ncc the ncc * @return the string */ public static String calculateIBAN(String isoCountry, String ncc) { String baseString = ncc + isoCountry + "00"; StringBuilder computeString = new StringBuilder(); for (int i = 0; i < baseString.length(); i++) { char c = baseString.charAt(i); if (Character.isDigit(c)) { computeString.append(c); } if (Character.isLetter(c)) { computeString.append(Character.getNumericValue(c)); } } BigInteger computeInt = new BigInteger(computeString.toString()); BigInteger mod97 = computeInt.mod(new BigInteger("97")); BigInteger controldigit = (new BigInteger("98")).subtract(mod97); String strControlDigit = controldigit.toString(); if (strControlDigit.length() < 2) { strControlDigit = "0" + strControlDigit; } return isoCountry + strControlDigit + ncc; } }