در قسمت قبل یاد گرفتیم چگونه عملیات پرداخت را انجام دهیم. در این قسمت قصد داریم با تنظیمات پَرباد آشنا شویم.
این تنظیمات در حالت کلی شامل موارد زیر است:
- درگاهها (اجباری)
- HttpContext (اجباری)
- پایگاه داده (اجباری)
- پیامها (اختیاری)
روشهای تنظیم:
- وارد کردن تنظیمات به صورت ثابت (استاتیک)
- تنظیم به صورت داینامیک (برای مثال استفاده از یک منبع، مانند پایگاه داده وب سایت شما)
- تنظیم توسط اینترفیس مایکروسافت IConfiguration
اما قبل از رجوع مستقیم به تنظیمات، بهتر است با نحوه کارکرد آنها آشنا شوید.
پَرباد برای ایجاد و مدیریت تنظیمات و سرویسهای خود، به صورت توکار از تزریق وابستگیها استفاده میکند. بنابراین تنظیم کردن آن به دو حالت امکان پذیر است:
- تنظیم برای پروژههایی که از تزریق وابستگیهای مایکروسافت استفاده میکنند (مانند اپلیکیشنهای ASP.NET CORE ).
- تنظیم برای پروژههایی که از تزریق وابستگیهای مایکروسافت استفاده نمیکنند (مانند Autofac) و یا اینکه اصلا از هیچ تزریق وابستگیای استفاده نمیکنند.
برای روش اول، تنظیمات در حالت کلی به صورت زیر است:
(نمونه مثال در یک اپلیکیشن ASP.NET CORE)
using Parbad.Builder; public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddParbad() // .configurations // .configurations // .configurations }
و برای روش دوم، تنظیمات در حالت کلی به صورت زیر است:
(نمونه مثال در یک اپلیکیشن ASP.NET MVC)
using Parbad.Builder; public class Startup { public void Configuration(IAppBuilder app) { ParbadBuilder.CreateDefaultBuilder() // .configurations // .configurations // .configurations } }
اکنون، با توجه به اینکه با روشهای مختلف تنظیمات آشنا شدید، برای ادامه توضیحات و مثالها (صرفا جهت نوشتن راحتتر این مطلب) از همان روش اول استفاده میکنیم.
تنظیمات درگاهها
طبیعتا شما برای انجام یک پرداخت در درگاه بانک ملت (برای مثال) نیاز به اطلاعاتی مانند نام کاربری و رمز عبور حساب بانکی خود را دارید.
به همین دلیل قبل از انجام هر گونه عملیات پرداخت، ابتدا باید تنظیمات درگاههای مورد استفاده خود را انجام دهید.
به همین دلیل قبل از انجام هر گونه عملیات پرداخت، ابتدا باید تنظیمات درگاههای مورد استفاده خود را انجام دهید.
روش اول: وارد کردن اطلاعات ثابت
نمونه کدهای تنظیم درگاه بانک ملت:
services.AddParbad() .ConfigureGateways(gateways => { gateways .AddMellat() .WithOptions(options => { options.TerminalId = 123; options.UserName = "MyId"; options.UserPassword = "MyPassword"; }); });
نکته: تنظیم سایر درگاهها نیز کاملا مشابه فرمت کدهای بالا است.
روش دوم: تنظیم به صورت داینامیک
برای تنظیم به صورت داینامیک، کلاسی را تعریف کنید که اینترفیس IParbadOptionsProvider را پیادهسازی میکند. مقدار T در این اینترفیس، معادل کلاس مورد نظر جهت تنظیم است.
مثال: تنظیم درگاه ملت توسط یک منبع:
ما قصد داریم اطلاعات مربوط به درگاه بانک ملت را از پایگاه داده فروشگاه خود دریافت کنیم. بنابراین یک منبع را به صورت زیر تعریف میکنیم:
کد بالا اطلاعات مربوط به درگاه بانک ملت را از پایگاه داده (وب سایت شما) دریافت کرده و سپس در متد Provide، آنها را نسبت میدهد.
نکته: ServiceLifetime در اینجا تعیین کننده طول عمر منبع ما است.
public class MellatOptionsProvider : IParbadOptionsProvider<MellatGatewayOptions> { private readonly IMySettingsService _settingsService; public MellatOptionsProvider(IMySettingsService settingsService) { _settingsService = settingsService; } public void Provide(MellatGatewayOptions options) { var settings = _settingsService.GetSettings(); options.TerminalId = settings.TerminalId; options.UserName = settings.UserName; options.UserPassword = settings.UserPassword; } }
نکته: همانطور که در مثال بالا میبینید، در تعریف یک منبع، شما همچنین قادر به
تزریق وابستگیها نیز هستید (در صورت نیاز). بدیهی است که در اینجا، اینترفیس
IMySettingsService توسط تزریق وابستگی اپلیکیشن شما باید ثبت شده باشد، در غیر اینصورت پَرباد قادر به ساخت منبع شما نخواهد بود.
در نهایت منبع را به پَرباد معرفی میکنیم:
services.AddParbad() .ConfigureGateways(gateways => { gateways .AddMellat() .WithOptionsProvider<MellatOptionsProvider>(ServiceLifetime.Transient); });
نمونه مثال کامل را در اینجا میتوانید پیدا کنید.
روش سوم: تنظیم توسط IConfiguration
اگر با اپلیکیشنهای ASP.NET CORE آشنایی داشته باشید، پس قطعا IConfiguration را نیز میشناسید. این اینترفیس به شما کمک میکند تنظیمات مورد نیاز در یک اپلیکیشن را از منابع مختلفی (مانند فایلهای JSON ) دریافت و استفاده کنید.
کد زیر نمونه تنظیم درگاه بانک ملت، با استفاده از IConfiguration و یک فایل JSON است.
و محتوای فایل JSON:
در کد بالا، پَرباد از اینترفیس پیش فرض IHttpContextAccessor در اپلیکیشن ASP.NET CORE استفاده میکند.
نکته: اگر به هر دلیلی، سرور و یا وب سایت شما، ریاستارت شود، اطلاعات موجود در این پایگاه داده ( In-Memory Database ) نیز از بین خواهند رفت. به عبارت دیگر، این پایگاه داده پایدار نیست و صرفا جهت اهداف تست از آن استفاده میشود.
بدیهی است که شما میتوانید این تنظیمات را نادیده گرفته و خودتان مسئولیت نمایش پیام به کاربران را به عهده بگیرید.
services.AddParbad() .ConfigureGateways(gateways => { gateways .AddMellat() .WithConfiguration(IConfiguration.GetSection("Mellat"); });
و محتوای فایل JSON:
"Mellat": { "TerminalId": 123, "UserName": "MyUsername", "UserPassword": "MyPassword" }
تنظیمات HttpContext
پَرباد برای تبادل اطلاعات با درگاههای بانکی، نیاز به یک HttpContext دارد.
ASP.NET WebForms, ASP.NET MVC
ParbadBuilder.CreateDefaultBuilder() .ConfigureHttpContext(builder => builder.UseOwinFromCurrentHttpContext());
در کد بالا، پَرباد HttpContext مورد نیاز خود را توسط Owin تامین میکند. متد UseOwin همچنین شامل گزینههای دیگری جهت تنظیمات بیشتر نیز میباشد.
ASP.NET CORE
services.AddParbad() .ConfigureHttpContext(builder => builder.UseDefaultAspNetCore());
نکته: اگر این اینترفیس قبلا توسط شما و یا اپلیکیشن شما ثبت شده باشد، پَرباد از آن استفاده خواهد کرد؛ در غیر اینصورت، کلاس پیش فرض HttpContextAccessor را به صورت خودکار جهت استفاده ثبت میکند.
تنظیمات پایگاه داده
پایگاه داده استفاده شده در پَرباد سیستم مشهور و شناخته شدهی EntityFrameworkCore است. این بدان معناست که شما میتوانید پایگاه داده مورد نیاز پَرباد را توسط منابع بسیار مختلفی از جمله SQL Server, MySql, Oracle, SQLite و غیره تامین کنید.
SQL Server و InMemory به صورت پیش فرض با پکیج پَرباد در اپلیکیشن شما نصب خواهند شد. اما اگر نیاز به پایگاه دادهی دیگری دارید، میتوانید آن را از بین تامین کنندههای مختلف انتخاب، نصب و استفاده کنید.
نکته: پایگاه داده، برای مصرف و عملکرد داخلی پَرباد است و نه مصرف خارجی در اپلیکیشن شما. در واقع شما نیازی به داشتن اطلاعات درونی پایگاه داده پَرباد ندارید و موارد مهمی مانند کد رهگیری، شماره تراکنش بانکی، مبلغ، نام بانک و غیره را پس از هر عمل پرداخت میتوانید توسط پَرباد دریافت کنید و در پایگاه داده خود برای فاکتور مورد نظر ذخیره کنید.
نمونه کدهای تنظیم را در زیر میتوانید مشاهده کنید:
SQL Server
services.AddParbad() .ConfigureStorage(builder => builder.UseParbadSqlServer("ConnectionString"));
نکته: همانطور که میدانید، متد اصلی دیگری به نام UseSqlServer وجود دارد. تفاوت آن با متد استفاده شدهی در کد بالا این است که UseParbadSqlServer ، به صورت خودکار Migrationهای مرتبط با پروژه پَرباد را نیز اعمال میکند. هر چند که این عمل توسط خود شما نیز امکان پذیر است.
In-Memory Database
services.AddParbad() .ConfigureStorage(builder => builder.UseInMemoryDatabase("MyMemoryName"));
تنظیمات پیامها (اختیاری)
منظور از پیامها، پیامهای متنیای است که پس از انجام عملیاتهای مختلف به شما بازگشت داده میشوند؛ برای مثال: پرداخت با موفقیت انجام شد.
شما میتوانید این پیامها را به شکل زیر تنظیم کنید:
services.AddParbad() .ConfigureMessages(options => { options.PaymentSucceed = "Payment was successful."; options.PaymentFailed = "Payment was not successful."; // other messages... });
نکته: شما همچنین میتوانید از اینترفیس IConfiguration که بالاتر توضیح داده شد نیز برای تنظیم پیامها استفاده کنید.
نمونه پروژهها:
مقالههای مرتبط: