Exemple #1
0
        /// <summary>
        /// Account transactions in SWIFT-format
        /// </summary>
        /// <param name="connectionDetails">ConnectionDetails object must atleast contain the fields: Url, HBCIVersion, UserId, Pin, Blz, Account, IBAN, BIC</param>
        /// <param name="anonymous"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns>
        /// Transactions
        /// </returns>
        public static List <SWIFTStatement> Transactions(ConnectionDetails connectionDetails, bool anonymous, DateTime?startDate = null, DateTime?endDate = null)
        {
            var swiftStatements = new List <SWIFTStatement>();

            if (Transaction.INI(connectionDetails, anonymous) == true)
            {
                var startDateStr = startDate?.ToString("yyyyMMdd");
                var endDateStr   = endDate?.ToString("yyyyMMdd");

                // Success
                var BankCode = Transaction.HKKAZ(connectionDetails, startDateStr, endDateStr, null);

                var Transactions = string.Empty;

                if (BankCode.Contains("HNSHA"))
                {
                    Transactions = ":20:STARTUMS" + Helper.Parse_String(BankCode, ":20:STARTUMS", "'HNSHA");
                }
                else // -> Postbank finishes with HNHBS
                {
                    Transactions = ":20:STARTUMS" + Helper.Parse_String(BankCode, ":20:STARTUMS", "'HNHBS");
                }

                swiftStatements.AddRange(MT940.Serialize(Transactions, connectionDetails.Account));


                string BankCode_ = BankCode;
                while (BankCode_.Contains("+3040::"))
                {
                    Helper.Parse_Message(BankCode_);

                    var Startpoint = new Regex(@"\+3040::[^:]+:(?<startpoint>[^']+)'").Match(BankCode_).Groups["startpoint"].Value;

                    BankCode_ = Transaction.HKKAZ(connectionDetails, startDateStr, endDateStr, Startpoint);

                    var Transactions_ = ":20:STARTUMS" + Helper.Parse_String(BankCode_, ":20:STARTUMS", "'HNSHA");

                    swiftStatements.AddRange(MT940.Serialize(Transactions_, connectionDetails.Account));
                }
                return(swiftStatements);
            }
            else
            {
                Log.Write("Initialization/sync failed");
                throw new Exception("Initialization/sync failed");
            }
        }
Exemple #2
0
        /// <summary>
        /// Account transactions in SWIFT-format
        /// </summary>
        /// <param name="Account"></param>
        /// <param name="BLZ"></param>
        /// <param name="IBAN"></param>
        /// <param name="BIC"></param>
        /// <param name="URL"></param>
        /// <param name="HBCIVersion"></param>
        /// <param name="UserID"></param>
        /// <param name="PIN"></param>
        /// <param name="Anonymous"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns>
        /// Transactions
        /// </returns>
        public static List <SWIFTStatement> Transactions(string Account, int BLZ, string IBAN, string BIC, string URL, int HBCIVersion,
                                                         string UserID, string PIN, bool Anonymous, DateTime?startDate = null, DateTime?endDate = null)
        {
            var swiftStatements = new List <SWIFTStatement>();

            if (Transaction.INI(BLZ, URL, HBCIVersion, UserID, PIN, Anonymous) == true)
            {
                var startDateStr = startDate?.ToString("yyyyMMdd");
                var endDateStr   = endDate?.ToString("yyyyMMdd");

                // Success
                var BankCode = Transaction.HKKAZ(Account, BLZ, IBAN, BIC, URL, HBCIVersion, UserID, PIN, startDateStr, endDateStr, null);

                var Transactions = ":20:STARTUMS" + Helper.Parse_String(BankCode, ":20:STARTUMS", "'HNSHA");

                swiftStatements.AddRange(MT940.Serialize(Transactions, Account));


                string BankCode_ = BankCode;
                while (BankCode_.Contains("+3040::"))
                {
                    Helper.Parse_Message(BankCode_);

                    var Startpoint = new Regex(@"\+3040::[^:]+:(?<startpoint>[^']+)'").Match(BankCode_).Groups["startpoint"].Value;

                    BankCode_ = Transaction.HKKAZ(Account, BLZ, IBAN, BIC, URL, HBCIVersion, UserID, PIN, startDateStr, endDateStr, Startpoint);

                    var Transactions_ = ":20:STARTUMS" + Helper.Parse_String(BankCode_, ":20:STARTUMS", "'HNSHA");

                    swiftStatements.AddRange(MT940.Serialize(Transactions_, Account));
                }
                return(swiftStatements);
            }
            else
            {
                Log.Write("Initialization/sync failed");
                throw new Exception("Initialization/sync failed");
            }
        }
Exemple #3
0
        /// <summary>
        /// Account transactions in SWIFT-format
        /// </summary>
        /// <param name="connectionDetails">ConnectionDetails object must atleast contain the fields: Url, HBCIVersion, UserId, Pin, Blz, Account, IBAN, BIC</param>
        /// <param name="anonymous"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns>
        /// Transactions
        /// </returns>
        public async Task <HBCIDialogResult <List <SwiftStatement> > > Transactions(TANDialog tanDialog, DateTime?startDate = null, DateTime?endDate = null, bool saveMt940File = false)
        {
            var result = await InitializeConnection();

            if (!result.IsSuccess)
            {
                return(result.TypedResult <List <SwiftStatement> >());
            }

            result = await ProcessSCA(result, tanDialog);

            if (!result.IsSuccess)
            {
                return(result.TypedResult <List <SwiftStatement> >());
            }

            string startDateStr = startDate?.ToString("yyyyMMdd");
            string endDateStr   = endDate?.ToString("yyyyMMdd");

            // Success
            string BankCode = await Transaction.HKKAZ(this, startDateStr, endDateStr, null);

            result = new HBCIDialogResult(Helper.Parse_BankCode(BankCode), BankCode);
            if (!result.IsSuccess)
            {
                return(result.TypedResult <List <SwiftStatement> >());
            }

            result = await ProcessSCA(result, tanDialog);

            if (!result.IsSuccess)
            {
                return(result.TypedResult <List <SwiftStatement> >());
            }

            BankCode = result.RawData;
            var TransactionsMt940 = new StringBuilder();
            var TransactionsMt942 = new StringBuilder();

            Regex regex = new Regex(@"HIKAZ:.+?@\d+@(?<mt940>.+?)(\+@\d+@(?<mt942>.+?))?('{1,2}H[A-Z]{4}:\d+:\d+)", RegexOptions.Singleline);
            Match match = regex.Match(BankCode);

            if (match.Success)
            {
                TransactionsMt940.Append(match.Groups["mt940"].Value);
                TransactionsMt942.Append(match.Groups["mt942"].Value);
            }

            string BankCode_ = BankCode;

            while (BankCode_.Contains("+3040::"))
            {
                Helper.Parse_Message(this, BankCode_);

                string Startpoint = new Regex(@"\+3040::[^:]+:(?<startpoint>[^']+)'").Match(BankCode_).Groups["startpoint"].Value;

                BankCode_ = await Transaction.HKKAZ(this, startDateStr, endDateStr, Startpoint);

                result = new HBCIDialogResult(Helper.Parse_BankCode(BankCode_), BankCode_);
                if (!result.IsSuccess)
                {
                    return(result.TypedResult <List <SwiftStatement> >());
                }

                result = await ProcessSCA(result, tanDialog);

                if (!result.IsSuccess)
                {
                    return(result.TypedResult <List <SwiftStatement> >());
                }

                BankCode_ = result.RawData;
                match     = regex.Match(BankCode_);
                if (match.Success)
                {
                    TransactionsMt940.Append(match.Groups["mt940"].Value);
                    TransactionsMt942.Append(match.Groups["mt942"].Value);
                }
            }

            var swiftStatements = new List <SwiftStatement>();

            swiftStatements.AddRange(MT940.Serialize(TransactionsMt940.ToString(), ConnectionDetails.Account, saveMt940File));
            swiftStatements.AddRange(MT940.Serialize(TransactionsMt942.ToString(), ConnectionDetails.Account, saveMt940File, true));

            return(result.TypedResult(swiftStatements));
        }