розібрати відповідь на запит ofx

OFX, Open Financial Exchange, файли використовуються для обміну фінансовою інформацією. Він використовується в системах клієнт-сервер, а також у хмарних системах. Тому для обміну фінансовою інформацією використовується модель запит-відповідь. Давайте вивчимо запит і відповідь OFX:

Проаналізуйте запит і відповідь OFX – встановлення C# API

Aspose.Finance for .NET API підтримує кілька функцій для обробки та аналізу фінансових даних. Ви можете завантажити його з розділу Завантаження або встановити через галерею NuGet за допомогою такої команди:

PM> Install-Package Aspose.Finance

Крім того, тут варто згадати еволюцію OFX. OFX версії 1–1.6 базується на синтаксисі SGML. Пізніші версії покладаються на специфікації XML. Для кращого розуміння ми створимо файли запитів і відповідей OFX в обох форматах (1.03 і 2.2).

Програмне створення запиту OFX за допомогою C#

Протокол OFX є стандартом для двостороннього обміну фінансовими даними. Ви можете легко створити запит, виконавши наведені нижче дії.

  1. Ініціалізація об’єкта Ofx Request Document.
  2. Створіть екземпляр Увійти на запит.
  3. Установіть різні властивості
  4. Збережіть запит OFX у форматі 1.03 і 2.2

Наведений нижче фрагмент коду пояснює, як програмно створити запит OFX за допомогою мови C#:

// Ініціалізація об'єкта OfxRequestDocument
OfxRequestDocument document = new OfxRequestDocument();
document.SignonRequestMessageSetV1 = new SignonRequestMessageSetV1();

// Ініціалізуйте SignonRequest і встановіть інші властивості
SignonRequest signonRequest = new SignonRequest();
document.SignonRequestMessageSetV1.SignonRequest = signonRequest;
signonRequest.ClientDate = "20200611000000";
signonRequest.UserId = "aspose";
signonRequest.UserPassword = "password";
FinancialInstitution fi = new FinancialInstitution();
fi.Organization = "aspose";
fi.FinancialInstitutionId = "1";
signonRequest.FinancialInstitution = fi;
signonRequest.AppVersion = "1.0";
signonRequest.AppId = "Aspose.Finance";
signonRequest.ClientUserId = "aaaaaaa";

document.BankRequestMessageSetV1 = new BankRequestMessageSetV1();
StatementTransactionRequest stmtTransRequest = new StatementTransactionRequest();
document.BankRequestMessageSetV1.StatementTransactionRequests.Add(stmtTransRequest);
stmtTransRequest.TransactionUniqueId = "1111111";
stmtTransRequest.StatementRequest = new StatementRequest();
stmtTransRequest.StatementRequest.BankAccountFrom = new BankAccount();
stmtTransRequest.StatementRequest.BankAccountFrom.BankId = "sssss";
stmtTransRequest.StatementRequest.BankAccountFrom.AccountId = "sfsdfsfsdf";
stmtTransRequest.StatementRequest.BankAccountFrom.AccountType = AccountEnum.CHECKING;
stmtTransRequest.StatementRequest.IncTransaction = new IncTransaction();
stmtTransRequest.StatementRequest.IncTransaction.StartDate = "20200601000000";
stmtTransRequest.StatementRequest.IncTransaction.EndDate = "20200611000000";
stmtTransRequest.StatementRequest.IncTransaction.Include = true;

// Створіть запит OFX для обох версій
document.Save(outputDir + @"newOfxRequestBankStatement.xml", OfxVersionEnum.V2x);
document.Save(outputDir + @"newOfxRequestBankStatement.sgml", OfxVersionEnum.V1x);

Програмне створення відповіді OFX за допомогою C#

Ви можете створити відповідь OFX у програмах на основі .NET програмно за допомогою C#. Наступні кроки пояснюють процес створення відповіді OFX:

  1. Ініціалізувати об’єкт класу Ofx Response Document.
  2. Оголошіть Sign on Response і встановіть значення
  3. Збережіть відповідь за допомогою переліку Ofx Version Enum.

У наведеному нижче фрагменті коду показано, як програмно створити відповідь OFX за допомогою C#:

// Ініціалізувати об’єкт OfxResponseDocument
OfxResponseDocument document = new OfxResponseDocument();
document.SignonResponseMessageSetV1 = new SignonResponseMessageSetV1();

// Ініціалізація екземпляра SignonResponse
SignonResponse signonResponse = new SignonResponse();
document.SignonResponseMessageSetV1.SignonResponse = signonResponse;
signonResponse.Status = new Status();
signonResponse.Status.Code = "0";
signonResponse.Status.Severity = SeverityEnum.INFO;
signonResponse.Status.Message = "SUCCESS";
signonResponse.ServerDate = "20200611";
signonResponse.ProfileUpdateDate = "20200611";
FinancialInstitution fi = new FinancialInstitution();
fi.Organization = "aspose";
fi.FinancialInstitutionId = "1";
signonResponse.FinancialInstitution = fi;
signonResponse.SessionCookie = "11111111111111111";

document.BankResponseMessageSetV1 = new BankResponseMessageSetV1();
StatementTransactionResponse stmtTransResponse = new StatementTransactionResponse();
document.BankResponseMessageSetV1.StatementTransactionResponses.Add(stmtTransResponse);
stmtTransResponse.TransactionUniqueId = "829631324";
stmtTransResponse.Status = new Status();
stmtTransResponse.Status.Code = "0";
stmtTransResponse.Status.Severity = SeverityEnum.INFO;
stmtTransResponse.StatementResponse = new StatementResponse();
stmtTransResponse.StatementResponse.Currency = CurrencyEnum.USD;
stmtTransResponse.StatementResponse.BankAccountFrom = new BankAccount();
stmtTransResponse.StatementResponse.BankAccountFrom.BankId = "1111111";
stmtTransResponse.StatementResponse.BankAccountFrom.AccountId = "1111111111111";
stmtTransResponse.StatementResponse.BankAccountFrom.AccountType = AccountEnum.CHECKING;
stmtTransResponse.StatementResponse.BankTransactionList = new BankTransactionList();
stmtTransResponse.StatementResponse.BankTransactionList.StartDate = "20200601000000";
stmtTransResponse.StatementResponse.BankTransactionList.EndDate = "20200611000000";
StatementTransaction transaction1 = new StatementTransaction();
transaction1.TransactionType = TransactionEnum.DEBIT;
transaction1.PostedDate = "20200611000000";
transaction1.TransactionAmount = "-12";
transaction1.FinancialInstitutionTransactionId = "1111111111111111111111111";
transaction1.Name = "bbbbbbbbbbbbbbbbbbbbbbb";
StatementTransaction transaction2 = new StatementTransaction();
transaction2.TransactionType = TransactionEnum.CREDIT;
transaction2.PostedDate = "20200611000000";
transaction2.TransactionAmount = "22222.11";
transaction2.FinancialInstitutionTransactionId = "2222222222222222222222222222";
transaction2.Name = "wwwwwwwwwwwwwwwwwwwwwwww";
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction1);
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction2);
stmtTransResponse.StatementResponse.LedgerBalance = new LedgerBalance();
stmtTransResponse.StatementResponse.LedgerBalance.BalanceAmount = "+2222.42";
stmtTransResponse.StatementResponse.LedgerBalance.DateAsOf = "20200611000000";
stmtTransResponse.StatementResponse.AvailableBalance = new AvailableBalance();
stmtTransResponse.StatementResponse.AvailableBalance.BalanceAmount = "+222222.42";
stmtTransResponse.StatementResponse.AvailableBalance.DateAsOf = "20200611000000";

// Зберегти відповідь у специфікації формату OFX 1.03 і 2.2
document.Save(outputDir + @"newOfxResponseBankStatement.xml", OfxVersionEnum.V2x);
document.Save(outputDir + @"newOfxResponseBankStatement.sgml", OfxVersionEnum.V1x);

Висновок

Стандарт OFX не залежить від платформи, тому користувачі можуть вибрати системне середовище або платформу для використання функцій обробки фінансів. Це дозволяє банкам, брокерським компаніям і компаніям, які займаються розрахунком заробітної плати, створювати індивідуальні рішення. Ви можете зв’язатися через безкоштовний форум підтримки. Будемо раді Вам допомогти!

Дивись також