Integrate Sepehr payment gateway via Parbad library

Added `Parbad.Gateway.Sepehr` package to enable Sepehr payment gateway integration. Updated `Index.cshtml.cs` to handle online payment requests using `IOnlinePayment`. Configured Sepehr gateway in `Program.cs` with terminal ID from `appsettings.Development.json`. Enabled Swagger for development builds.
This commit is contained in:
2025-11-12 12:01:44 +03:30
parent 861b214b0c
commit 7f9531f07b
4 changed files with 31 additions and 2 deletions

View File

@@ -13,6 +13,7 @@
</PackageReference>
<PackageReference Include="Microsoft.QualityTools.Testing.Fakes" Version="16.11.230815" />
<PackageReference Include="MongoDB.Driver" Version="3.5.0" />
<PackageReference Include="Parbad.Gateway.Sepehr" Version="1.7.0" />
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
</ItemGroup>

View File

@@ -21,6 +21,8 @@ using Company.Domain.InstitutionPlanAgg;
using CompanyManagment.App.Contracts.InstitutionContract;
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
using Microsoft.Extensions.Options;
using Parbad;
using Parbad.Gateway.Sepehr;
using static ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk.IndexModel2;
namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
@@ -35,6 +37,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
private readonly IPaymentGateway _paymentGateway;
private readonly ITemporaryClientRegistrationApplication _clientRegistrationApplication;
private readonly IHttpClientFactory _httpClientFactory;
private readonly IOnlinePayment _onlinePayment;
@@ -43,7 +46,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
public IndexModel(IAndroidApkVersionApplication application, IRollCallDomainService rollCallDomainService,
CompanyContext context, AccountContext accountContext, IHttpClientFactory httpClientFactory,
IOptions<AppSettingConfiguration> appSetting,
ITemporaryClientRegistrationApplication clientRegistrationApplication)
ITemporaryClientRegistrationApplication clientRegistrationApplication, IOnlinePayment onlinePayment)
{
_application = application;
_rollCallDomainService = rollCallDomainService;
@@ -51,6 +54,7 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
_accountContext = accountContext;
_httpClientFactory = httpClientFactory;
_clientRegistrationApplication = clientRegistrationApplication;
_onlinePayment = onlinePayment;
_paymentGateway = new AqayePardakhtPaymentGateway(httpClientFactory, appSetting);
}
@@ -76,6 +80,13 @@ namespace ServiceHost.Areas.AdminNew.Pages.Company.AndroidApk
//var notEndedRollCalls = rollCalls.Where(x => x.EndDate == null).ToList();
//RefactorAllTheRollCallsOnEsfand(endedRollCalls, notEndedRollCalls);
//CreateRewardForKebabMahdi().GetAwaiter().GetResult();
var result = await _onlinePayment.RequestAsync(invoices =>
{
invoices.SetAmount(10000)
.SetCallbackUrl("https://gozareshgir.ir/Payment/PageCallBackSaderat")
.UseSepehr();
});
return await result.GatewayTransporter.TransportAsync();
var httpClient = _httpClientFactory.CreateClient();
httpClient.BaseAddress = new Uri("https://sepehr.shaparak.ir/");
var terminal = 99213700;

View File

@@ -30,6 +30,8 @@ using Microsoft.AspNetCore.Mvc.Infrastructure;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Diagnostics;
using MongoDB.Driver;
using Parbad.Builder;
using Parbad.Gateway.Sepehr;
using Swashbuckle.AspNetCore.SwaggerUI;
@@ -306,11 +308,24 @@ builder.Services.AddCors(options =>
builder.Services.AddExceptionHandler<CustomExceptionHandler>();
var sepehrTerminalId = builder.Configuration.GetValue<long>("SepehrGateWayTerminalId");
builder.Services.AddParbad().ConfigureGateways(gateways =>
{
gateways.AddSepehr().WithAccounts(accounts =>
{
accounts.AddInMemory(account =>
{
account.TerminalId = sepehrTerminalId;
});
});
});
var app = builder.Build();
app.UseCors("AllowSpecificOrigins");
#region Mahan
//app.UseStatusCodePagesWithRedirects("/error/{0}");
@@ -324,6 +339,7 @@ if (builder.Environment.IsDevelopment())
await tester.Test();
}
if (app.Environment.IsDevelopment())
{
app.UseSwagger();

View File

@@ -42,7 +42,8 @@
"SmsSettings": {
"IsTestMode": true,
"TestNumbers": [ "09116967898", "09116067106", "09114221321" ]
}
},
"SepehrGateWayTerminalId": 99213700
}