Sina-Soltani / Parbad

A free, open-source, integrated and extensible library which connects your web applications to online payment gateways. Gateways can be added or developed by you.
GNU Lesser General Public License v3.0
364 stars 81 forks source link

TrackingNumber Exeption #353

Closed ShahramNo closed 1 year ago

ShahramNo commented 1 year ago

با سلام . من بادرگاه بانک ملت این خطارو دارم. Parbad.AspNetCore" Version="1.3.0"

The tracking number already exists in database. Use a unique one for each requests

  `var result = await _onlinePayment.RequestAsync(invoice =>
                        {
                            invoice

                                .UseAutoIncrementTrackingNumber()
                                .SetCallbackUrl(callbackUrl)
                                .SetAmount(currentOrder.TotalAmount)
                                 .UseMellat();

                        });

                        currentOrder.PaymentTypeId = gateway.SelectedGateway;

                        if (result.IsSucceed)
                        {

                            return result.GatewayTransporter.TransportToGateway();

                        }
                        Logger.LogError("An error occurred: " + result.Message);`
Sina-Soltani commented 1 year ago

درود لطفاً کدهای تنظیمات رو اینجا قرار بدید.

ShahramNo commented 1 year ago
      `
builder.Services.AddParbad()
    .ConfigureGateways(gateways =>
    {
        gateways
            .AddMellat()
            .WithAccounts(source => source.Add<GatewaysAccounts>(ServiceLifetime.Transient));

        gateways
            .AddParsian()
            .WithAccounts(source => source.Add<GatewaysAccounts>(ServiceLifetime.Transient));

        gateways.AddPasargad()
            .WithAccounts(source => source.Add<GatewaysAccounts>(ServiceLifetime.Transient));

        gateways.AddSaman()
            .WithAccounts(source => source.Add<GatewaysAccounts>(ServiceLifetime.Transient));

        gateways
            .AddZarinPal()
            .WithAccounts(source => source.Add<GatewaysAccounts>(ServiceLifetime.Transient));

        gateways
            .AddParbadVirtual()
            .WithOptions(option => option.GatewayPath = "/MyVirtualGateway");

    })
    .ConfigureHttpContext(httpContextBuilder => httpContextBuilder.UseDefaultAspNetCore())
    .ConfigureStorage(builder => builder.UseMemoryCache())

.ConfigureOptions(options =>
{
  options.EnableLogging = true;

})
.ConfigureAutoIncrementTrackingNumber(options =>
{
    options.MinimumValue = 1000;
    options.Increment = 1;
})
.ConfigureStorage(storageBuilder => storageBuilder.UseEfCore(options =>
{
    string connectionString = builder.Configuration.GetConnectionString(name: "Web");
    var migrationsAssemblyName = typeof(BranchConfig).Assembly.GetName().Name; 

        options.ConfigureDbContext = db => db.UseSqlServer(connectionString, sql =>
    {
        sql.MigrationsAssembly(migrationsAssemblyName);
        sql.MigrationsHistoryTable("ParbadMigration");
    });

    options.DefaultSchema = "parbad";

    options.PaymentTableOptions.Name = "Payments";
    options.PaymentTableOptions.Schema = "parbad";

    options.TransactionTableOptions.Name = "Transactions";
    options.TransactionTableOptions.Schema = "parbad";
}));

`

     `public async Task AddAccountsAsync(IGatewayAccountCollection<MellatGatewayAccount> accounts)
{
    var payment = await _businessService.GetPaymentMethods(CancellationToken.None);
    var info = await _businessService.GetCurrentBusinessInfoForFront(CancellationToken.None);
    accounts.Add(new MellatGatewayAccount()
    {
        Name = info.Name,
        UserName = payment.BehPardakhtGateway.UserName,
        UserPassword = payment.BehPardakhtGateway.Password,
        TerminalId = payment.BehPardakhtGateway.TerminalId.Value

    });
}`
ShahramNo commented 1 year ago

جناب مهندس من روی صفحه pay چندین بار رفرش زدم و چندین بار ارور داد . ولی بلخره وارد شد . ایرادشو نمیدونم این هم لاگ گرفتم که مشخصه:

2023-07-20 00:42:41.7627|ERROR|Shop.Web.Controllers.PaymentController|An error occurred: The tracking number already exists in database. Use a unique one for each requests.| 2023-07-20 00:42:47.5737|ERROR|Shop.Web.Controllers.PaymentController|An error occurred: The tracking number already exists in database. Use a unique one for each requests.| 2023-07-20 00:42:50.3596|ERROR|Shop.Web.Controllers.PaymentController|An error occurred: The tracking number already exists in database. Use a unique one for each requests.| 2023-07-20 00:42:52.6011|info|Shop.Web.Controllers.PaymentController|TransportToGateway: True| 2023-07-20 00:43:46.0489|ERROR|Microsoft.EntityFrameworkCore.Database.Connection|An error occurred using the connection to database 'zzzzz_DB' on server '.'.|database=zzzzz_DB, server=., EventId=20004, EventName=Microsoft.EntityFrameworkCore.Database.Connection.ConnectionError 2023-07-20 00:44:25.1043|info|Shop.Web.Controllers.PaymentController|TransportToGateway: True|

Sina-Soltani commented 1 year ago

کدهای تنظیمات درست به نظر میرسه. البته شما ۲ بار متد تنظیم مخزن داده رو صدا زدین. یکبار برای مموری کش و بار دوم برای پایگاه داده. مموری کش رو حذف کنید و دوباره تست کنید ببینید مشکل رفع میشه یا خیر.

ShahramNo commented 1 year ago

ممنونم از پاسختون . بله مشکل از همین جا بود .