OFX ، Open Financial Exchange ، تُستخدم الملفات لتبادل المعلومات المالية. يتم استخدامه في خادم العميل وكذلك الأنظمة المستندة إلى السحابة. لذلك يتم استخدام نموذج الطلب والاستجابة لتبادل المعلومات المالية. دعنا نتعرف على طلب OFX والرد عليه:
- طلب واستجابة تحليل OFX - تثبيت C# API
- إنشاء طلب OFX برمجيًا باستخدام C#
- إنشاء استجابة OFX برمجيًا باستخدام C#
طلب واستجابة تحليل 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 هو معيار لتبادل البيانات المالية في اتجاهين. يمكنك بسهولة إنشاء طلب باتباع الخطوات التالية:
- تهيئة كائن Ofx Request Document
- قم بإنشاء مثيل Sign on Request
- تعيين خصائص مختلفة
- حفظ طلب 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:
- تهيئة مستند استجابة Ofx كائن فئة
- قم بتعريف Sign on Response وقم بتعيين القيم
- حفظ الرد مع Ofx Version Enum Enumeration
يوضح مقتطف الشفرة التالي كيفية إنشاء استجابة 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 مستقل عن النظام الأساسي بحيث يمكن للمستخدمين اختيار بيئة النظام أو النظام الأساسي لاستخدام ميزات المعالجة المالية. إنه يمكّن البنوك وشركات السمسرة وشركات معالجة كشوف المرتبات من إنشاء حلول مخصصة. يمكنك التواصل عبر منتدى الدعم المجاني. سنكون سعداء لمساعدتك!