public void TestPaymentStringFromAccount() { Debug.WriteLine("paymentStringFromAccount"); SmartPaymentParameters parameters = new SmartPaymentParameters(); parameters.BankAccount = new CzechBankAccount("19", "123", "0800"); SmartPaymentMap extendedParameters = null; bool transliterateParams = false; string expResult = "SPD*1.0*ACC:CZ2408000000190000000123"; string result = SmartPayment.PaymentStringFromAccount(parameters, extendedParameters, transliterateParams); Assert.AreEqual(expResult, result); }
public void TestPaymentStringFromAccountAmountAndAlternateAccounts() { Debug.WriteLine("paymentStringFromAccount"); SmartPaymentParameters parameters = new SmartPaymentParameters(); parameters.BankAccount = new CzechBankAccount("19", "123", "0800"); List<BankAccount> alternateAccounts = new List<BankAccount>(); alternateAccounts.Add(new CzechBankAccount(null, "19", "5500")); alternateAccounts.Add(new CzechBankAccount(null, "19", "0100")); parameters.AlternateAccounts = alternateAccounts; parameters.Amount = 100.5m; SmartPaymentMap extendedParameters = null; bool transliterateParams = false; string expResult = "SPD*1.0*ACC:CZ2408000000190000000123*ALT-ACC:CZ9755000000000000000019,CZ7301000000000000000019*AM:100.5"; string result = SmartPayment.PaymentStringFromAccount(parameters, extendedParameters, transliterateParams); Debug.WriteLine(result); Assert.AreEqual(expResult, result); }
public static string PaymentStringFromAccount(SmartPaymentParameters parameters, SmartPaymentMap extendedParameters, bool transliterateParams) { string paymentString = "SPD*" + protocolVersion + "*"; if (parameters.BankAccount.IBAN != null) { paymentString += "ACC:" + parameters.BankAccount.IBAN; if (parameters.BankAccount.BIC != null) { paymentString += "+" + parameters.BankAccount.BIC; } paymentString += "*"; } if (parameters.AlternateAccounts != null && parameters.AlternateAccounts.Any()) { paymentString += "ALT-ACC:"; bool firstItem = true; foreach (BankAccount bankAccount in parameters.AlternateAccounts) { if (!firstItem) { paymentString += ","; } else { firstItem = false; } paymentString += bankAccount.IBAN; if (bankAccount.BIC != null) { paymentString += "+" + bankAccount.BIC; } } paymentString += "*"; } if (parameters.Amount.HasValue) { paymentString += string.Format(enUS, "AM:{0}*", parameters.Amount.Value); } if (parameters.Currency != null) { paymentString += "CC:" + parameters.Currency + "*"; } if (parameters.SendersReference != null) { paymentString += "RF:" + parameters.SendersReference + "*"; } if (parameters.RecipientName != null) { if (transliterateParams) { paymentString += "RN:" + EscapeDisallowedCharacters(parameters.RecipientName.ToUpper()) // TODO diacritics removing + "*"; } else { paymentString += "RN:" + EscapeDisallowedCharacters(parameters.RecipientName) + "*"; } } if (parameters.Date.HasValue) { paymentString += string.Format("DT:{0:yyyyMMdd}*", parameters.Date.Value); // TODO validate format } if (parameters.Message != null) { if (transliterateParams) { paymentString += "MSG:" + EscapeDisallowedCharacters(parameters.Message.ToUpper()) // TODO diacritics removing + "*"; } else { paymentString += "MSG:" + EscapeDisallowedCharacters(parameters.Message) + "*"; } } if (parameters.NotificationType.HasValue) { switch (parameters.NotificationType.Value) { case SmartPaymentParameters.PaymentNotificationType.Email: paymentString += "NT:E*"; break; case SmartPaymentParameters.PaymentNotificationType.Phone: paymentString += "NT:P*"; break; default: throw new ArgumentOutOfRangeException(); } } if (parameters.NotificationValue != null) { paymentString += "NTA:" + EscapeDisallowedCharacters(parameters.NotificationValue) + "*"; } if (extendedParameters != null && extendedParameters.Any()) { paymentString += extendedParameters.ToExtendedParams(); } return paymentString.Substring(0, paymentString.Length - 1); }
public static string PaymentStringFromAccount(SmartPaymentParameters parameters, SmartPaymentMap extendedParameters, bool transliterateParams) { string paymentString = "SPD*" + protocolVersion + "*"; if (parameters.BankAccount.IBAN != null) { paymentString += "ACC:" + parameters.BankAccount.IBAN; if (parameters.BankAccount.BIC != null) { paymentString += "+" + parameters.BankAccount.BIC; } paymentString += "*"; } if (parameters.AlternateAccounts != null && parameters.AlternateAccounts.Any()) { paymentString += "ALT-ACC:"; bool firstItem = true; foreach (BankAccount bankAccount in parameters.AlternateAccounts) { if (!firstItem) { paymentString += ","; } else { firstItem = false; } paymentString += bankAccount.IBAN; if (bankAccount.BIC != null) { paymentString += "+" + bankAccount.BIC; } } paymentString += "*"; } if (parameters.Amount.HasValue) { paymentString += string.Format(enUS, "AM:{0}*", parameters.Amount.Value); } if (parameters.Currency != null) { paymentString += "CC:" + parameters.Currency + "*"; } if (parameters.SendersReference != null) { paymentString += "RF:" + parameters.SendersReference + "*"; } if (parameters.RecipientName != null) { if (transliterateParams) { paymentString += "RN:" + EscapeDisallowedCharacters(parameters.RecipientName.ToUpper()) // TODO diacritics removing + "*"; } else { paymentString += "RN:" + EscapeDisallowedCharacters(parameters.RecipientName) + "*"; } } if (parameters.Date.HasValue) { paymentString += string.Format("DT:{0:yyyyMMdd}*", parameters.Date.Value); // TODO validate format } if (parameters.Message != null) { if (transliterateParams) { paymentString += "MSG:" + EscapeDisallowedCharacters(parameters.Message.ToUpper()) // TODO diacritics removing + "*"; } else { paymentString += "MSG:" + EscapeDisallowedCharacters(parameters.Message) + "*"; } } if (parameters.NotificationType.HasValue) { switch (parameters.NotificationType.Value) { case SmartPaymentParameters.PaymentNotificationType.Email: paymentString += "NT:E*"; break; case SmartPaymentParameters.PaymentNotificationType.Phone: paymentString += "NT:P*"; break; default: throw new ArgumentOutOfRangeException(); } } if (parameters.NotificationValue != null) { paymentString += "NTA:" + EscapeDisallowedCharacters(parameters.NotificationValue) + "*"; } if (extendedParameters != null && extendedParameters.Any()) { paymentString += extendedParameters.ToExtendedParams(); } return(paymentString.Substring(0, paymentString.Length - 1)); }