Coder Social home page Coder Social logo

sina-soltani / parbad Goto Github PK

View Code? Open in Web Editor NEW
347.0 22.0 77.0 8.92 MB

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.

License: GNU Lesser General Public License v3.0

C# 99.06% HTML 0.94%
mellat melli parsian pasargad saman iran-kish sadad iran gateway payment

parbad's People

Contributors

alty-ir avatar anushiravani avatar azaferany avatar azhdari avatar dependabot[bot] avatar mdp66 avatar mohammad-ashrafi2020 avatar mohammadmokhtarii avatar mrmashal avatar sina-soltani avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

parbad's Issues

Error On Create and migrate database

سلام و وقت بخیر . بعد از انجام تنظیمات اولیه در هر حالتی که تلاش میشه خطای
"Error: The new name 'transaction' is already in use as a object name and would cause a duplicate that is not permitted."}
دریافت میشه

error

چگونه از SQLServer استفاده کنیم؟

در مستندات این نمونه کد نوشته شده است.

services.AddParbad()
        .ConfigureStorage(builder => builder.UseParbadSqlServer("ConnectionString"));

UseParbadSqlServer اما انگار
وجود ندارد.
آیا جایگزینی دارد؟

بازگرداندن مبلغ به چندین حساب

گاها نیاز پیدا میشه مبلغ به چند حساب برگشت داده بشه
به عنوان مثال دکتر 20 نفر انلاین ویزیت کرده بعد کنسل شده و میخواد به 20 نفر پولشون رو برگردونه
منشی که نمیتونه بشینه کارت به کارت بزنه دونه به دونه
البته شنیده بودم که فقط بانک ملی شماره کارت ها رو به صورت ارایه میگیره و هزینه رو میگیره و انجامش میده ولی فک کنم بقیه بانک ها هم داشته باشن همچین چیزی
اگه بشه تو پکیج اضافه بشه خیلی عالی میشه

متد استعلام خرید

سلام دوست عزیز

متد استعلام تراکنش خرید رو ندارید ؟

متدش در بانک ملت با این نام هست :
bpInquiryRequest

درگاه پرداخت پاسارگاد

سلام وقتتون بخیر درگاه پرداخت پاسارگاد برای دات نت کور راه اندازی نشده ؟

`

Tracking number 1002
Amount 2500
Gateway PasargadGateway
Gateway account name  
Is succeed False
Message Operation is not supported on this platform.

`

چون من همچین خطایی رو دارم دریافت میکنم.

ایراد در متد SelectByOrderNumber و SelectByOrderNumberAsync

نام تیبل رو در این دو متد استاتیک [TbPayments] در نظر گرفتید
const string query = "SELECT * FROM [TbPayments] WHERE OrderNumber=@OrderNumber";
در صورتی که چیزی شبه به این باید باشه
const string query = $"SELECT * FROM [{PaymentsTableName}] WHERE OrderNumber=@OrderNumber";
وقتی نام تیبل رو چیزی غیر از TbPayments میگرم ارور System.Data.SqlClient.SqlException: 'Invalid object name 'TbPayments'.' بهم بر میگردونه که فکر میکنم ناشی از این دو متد باشه

Unable to resolve service

توضیح خطا

Saman.txt

Unable to resolve service for type 'AVS.ServiceLayer.Services.BankGatewayService' while attempting to activate 'AVS.ServiceLayer.Services.SamanGatewayAccountService'.

 services.AddParbad()
            .ConfigureGateways(gateways =>
            {
                //gateways
                //    .AddMellat()
                //    .WithAccounts(accounts =>
                //    {
                //        accounts.Clear();
                //        accounts.Add<MellatGatewayAccountService>(ServiceLifetime.Transient);
                //    });
                gateways
                    .AddSaman()
                    .WithAccounts(accounts =>
                    {
                        accounts.Clear();
                        accounts.Add<SamanGatewayAccountService>(ServiceLifetime.Transient);
                    });
                //gateways
                //    .AddMelli()
                //    .WithAccounts(accounts =>
                //    {
                //        accounts.Clear();
                //        accounts.Add<MelliGatewayAccountService>(ServiceLifetime.Transient);
                //    });
                gateways
                    .AddParbadVirtual()
                    .WithOptions(options => options.GatewayPath = "/virtualgateway");
            })

نام و نسخه پکیج

[Parbad.AspNetCore]
[1.0.1]

نوع برنامه وب

ASP.NET CORE 3.1

How to add gateway (or change gateway settings) right before payment request?

Hi,

I want somehow set the gateway settings dynamically for each payment separately. In other words, I need to add a gateway or change the predefined gateways' settings, just before doing a payment.
Is this possible with your package?

Let's say I have hundreds of bank accounts and I cannot add all of them in advance with services.AddParbad().ConfigureGateways.

The gateway settings should be set when a payment operation have to be done...

Thank you for your great work.

فرم های اجاکسی

سلام
آیا در فرم هایی که به صورت اجاکسی فراخوانی می شود
مییشه از پرباد استفاده کرد؟ به چه شکل؟

استفاده از چندین درگاه بانک

سلام دوست عزیز

این پروژه امکان این رو داره که بشه از چندین حساب یک بانک استفاده کنه و در متد مشخص بشه که کدوم حساب هست ؟؟

در داکیومنت دیدم که باید در StartUp اطلاعات بانک رو مشخص کرد .

من میخوام بصورت داینامیک اطلاعات بانک رو در متد شما وارد کنم نه در کانفیگ برنامه .

خطای رمزنگاری دیتا در هنگام SignRequestData

با سلام متد
SignRequestData
در هنگام استفاده از درگاه بانک ملی سداد خطای زیر را می دهد

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters

که نمیتواند مقدار terminalKey را بصورت Base64 تبدیل کند

نحوه عملکرد اپلیکیشن

سلام
با عرض معذرت از این که وقت شما رو می گیرم
می خواستم از شما این سوال بپرسم
که چطور بدون اضافه کردن وب سرویس بانک میشه از در گاه پرداختش استفاده کرد.؟
اگر لطف کنید مقاله و سر نخ برای تحقیق ارایه بدید
تشکر
مرسی

جواب اشتباه از بانک سامان

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

samanProblem

درگاه پارسیان

زمانی که از درگاه پارسیان بعد از پرداخت بازگشت میخورد به سایت خطای زیر رو نشون میده
در صورتی که در زمانی که در درگاه دکمه انصراف رو میزنی و برمیگرده به سمت سایت همچین خطایی نمیده و اوکی به نظر میرسه

#asp.core #درگاه_پارسیان

{ "TransactionCode": null, "TrackingNumber": 1159, "Amount": {}, "IsSucceed": false, "GatewayName": "ParsianGateway", "GatewayAccountName": "گیمستان", "Message": "Invalid data is received from the gateway", "AdditionalData": {}, "DatabaseAdditionalData": {} }

CORS policy

سلام و خسته نباشید البته این ایراد در کد نیست اما گفتم شاید شما راحت بتونید حلش کنید چون دو روزه من رو گیر انداخته ور هرچی سرچ کردم و امتحان کردم نتونستم حلش کنم با ویرچوال هیچ مشکلی ندارم و خیلی راحت روی لوکال فرایند به درستی طی میشه اما روی سرور پروداکشن با ایراد زیر برخورد میکنم که البته تلاش زیاد کردم برای حلش اما نشد
Access to XMLHttpRequest at 'https://pec.shaparak.ir/NewIPG/?Token=470472695' (redirected from 'https://betaapi.2ristpanel.com/api/v1/TRMS/Financial/AddCredit') from origin 'null' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.

توی استارت اپ پروژه اکسس به * دادم
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.SetIsOriginAllowedToAllowWildcardSubdomains().WithOrigins("https://*.2ristpanel.com")
);
});
و بالای متد هم اتریبیوت
[EnableCors("CorsPolicy")]
به کار بردم و خیلی را های دیگه اما نشد اگر راهنمایی بفرمایید خیلی ممنون میشم

VerifyResultStatus یکسان در تمامی حالت ها

سلام آقای سلطانی، خسته نباشید. متشکر بابت این کتابخانه خیلی خوب. ما در پروژمون (ASP.NET MVC) داریم از پرباد (و بانک پاسارگاد) استفاده می کنیم، منتها چند تا مشکل وجود داره:
  1. یک اینکه در "اینام" VerifyResultStatus، در تمامی وضعیت ها، مقدار AlreadyVerified باز گردونده میشه، یعنی هم هنگام پرداخت موفق، هم هنگام کنسل کردن. اصلا این گزینه به چه معناست و چرا این مشکل وجود داره؟

  2. چرا در اینام PaymentDataStatus، مقدار Cancelled وجود نداره، و اصلا تفاوت اون با VerifyResultStatus چی هست؟

  3. طبق چیزی که من دیدم، Transaction ID ذخیره نمیشه. یعنی حتی در صفحه تأیید پرداخت نمایش داده میشه اما بعد از اون به متد Update در Storage ارسال نمیشه.

ضمنا من چون دیدم Issue قبلی دیروز باز شده و شما سریع پاسخ دادید تصمیم گرفتم این Issue رو باز کنم، وگرنه مجبور میشدم از API خود بانک پاسارگاد استفاده کنم.
ممنون میشم اگر پاسخ بدید.

اضافه کردن پروکسی

در بخشنامه جدید بانک مرکزی سرور های خارج از کشور فیلتر می شوند و احتیاج به یک پروکسی داخل ایران برای اتصال می باشد

استفاده از پروژه بدونه دیتابیس

سلام.

میشه از این پروژه بدون دیتابیس استفاده کرد و اطلاعاتی که قراره در دیتابیس ذخیره بشه رو بصورت خروجی از متد ها بگیریم و خودمون تو دیتابیس ذخیره کنیم ؟

دریافت کد وضعیت بازگشتی از بانک

با سلام
چطور میتوان به کد وضعیت بازگشتی از سمت بانک نیز دسترسی پیدا کرد
من نیاز دارم تا کد وضعیت را پس از
call back
در پایگاه داده ذخیره کنم

اصلاح داینامیک اطلاعات حساب درگاه

سلام
من از این بخش استفاده کردم
gateways
.AddMellat()
.WithAccounts(accounts =>
{
accounts.Add(ServiceLifetime.Transient);
});
اگر تغییری در اطلاعات درگاه در سیستم رخ دهد با فراخوانی کلاس
MellatAccountSource
اطلاعات دوباره بروزرسانی می شود؟

مستندات نسخه‌های قبلی

سلام.
مستندات و آموزش‌های مربوط به نسخه‌های قدیم موجود نیست؟
من می‌خوام ازش تو یه پروژه قدیمی استفاده کنم.

عدم وجود متد FetchAsync

توضیح خطا

در مثالها برای تایید یک تراکنش، تابعی به نام FetchAsync صدا زده شده است اما چنین تابعی ظاهرا وجود ندارد.

نسخه پَرباد

1.0.1

نوع برنامه

ASP.NET CORE

خطا در Register کردن سرویس

با سلام و عرض ادب
من با استفاده از آموزش های شما توی همین گیت هاب و ویکی پرباد رو به پروژه ام اضافه کردم ولی یه ایرادی داره و موقعی که اینترفیس IOnlinePayment رو به کنترلرم اضافه میکنم این خطا رو میده.
میشه لطفا راهنمایی کنید؟

None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Parbad.Internal.DefaultOnlinePayment' can be invoked with the available services and parameters: Cannot resolve parameter 'Parbad.Storage.Abstractions.IStorageManager storageManager' of constructor 'Void .ctor(System.IServiceProvider, Parbad.Storage.Abstractions.IStorageManager, Parbad.PaymentTokenProviders.IPaymentTokenProvider, Parbad.Abstraction.IGatewayProvider, Microsoft.Extensions.Options.IOptions1[Parbad.Options.MessagesOptions], Microsoft.Extensions.Logging.ILogger1[Parbad.IOnlinePayment])'.

البته از ورژن قدیمیش استفاده کرده بودم مشکلی نداشت ولی با این ورژن مشکل دارم.

EntityFrameworkCore 3 Exception

I had updated my project to .net core 3 but in my program.cs i get this exception :

◢ | $exception | {"Method not found: 'Microsoft.EntityFrameworkCore.Metadata.Builders.IndexBuilder Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder1.HasIndex(System.Linq.Expressions.Expression1<System.Func`2<!0,System.Object>>)'."} | System.MissingMethodException

when i remove this line from configuration the error will gone:
.ConfigureDatabaseInitializer(a => a.CreateAndMigrateDatabase())

Please help to solve this issue.

Thanks

افزودن زرین پال

سلام
توی موارد قبلی دیدم که نوشتید قصد اضافه کردن زرین پال و درگاه های واسط رو به این کتابخانه عالی دارید، اما خبری نیست ظاهرا خواستم اطلاعات بگیرم و ببینم که کاری در این باره در جریان هست یا نه؟
و اگر نیست اجازه هست که زرین پال رو اضافه کنم و پول ریکوئست بفرستم خدمتتون؟!

با تشکر

اطلاعات درگاه ها در کجا ذخیره شود؟

سلام. اولا تشکر و تبریک، واقعا همچین چیزی نیاز بود.
سوال اینکه اطلاعات درگاه ها رو از کجا میخونه؟؟ مثل مرچنت آیدی یا نام کاربری و رمز و...
درگاه واسط مثل زرین پال هم اضافه کنید.
تشکر

افزودن بانک های جدید

سلام. خسته نباشید
آیا بانک های جدید هم اضافه میشن؟ مثل مبنا کارت بانک صادرات و یا ایران کیش؟

اضافه کردن درگاه آسان پرداخت

اولا ممنون بابت پرباد!

دوستان درگاه هایی رو گفتن اضافه بشن که خیلی عالین اما یه درگاه پرکاربرد که این روزا خیلی ازش استفاده میشه آسان پرداخت هستش. ممنون میشم این درگاه رو هم به پرباد اضافه کنید

بیلد و انتشار پکیج به صورت اتوماتیک

به دلیل استفاده نکردن از CI، هر زمان که سورس آپدیت می‌شه باید پکیج nuget به صورت مجزا آپدیت بشه. پیشنهاد من استفاده از appveyor و اتوماتیک کردن پروسه build و انتشار پکیج در nuget.org است. من پیشتر این کار رو برای پروژه‌های دیگه‌ای انجام داد و اگر نیاز به راهنمایی بود در خدمتم

RefId & SaleReferenceId

با سلام
فیلد های برگشتی از بانک مثل مقادیر
RefId & SaleReferenceId
در چه بخشی قابل دستیابی می باشد؟

به درگاه مجازی منتقل نمی شود!

در مثال های انتقال به درگاه از خط زیر استفاده شده است:

return result.GatewayTransporter.TransportToGateway();
ولی به نظر میاد که در آخرین نسخه این متد عوض شده و خروجی هم ندارد:
result.GatewayTransporter.Transport();
آیا نمونه ای که با آخرین نسخه پرباد و MVC باشه جایی هست؟

خطای برگشت به سایت درگاه پارسیان

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

#asp.core #درگاه_پارسیان

{ "TransactionCode": null, "TrackingNumber": 1159, "Amount": {}, "IsSucceed": false, "GatewayName": "ParsianGateway", "GatewayAccountName": "گیمستان", "Message": "Invalid data is received from the gateway", "AdditionalData": {}, "DatabaseAdditionalData": {} }

و اصلا تایید نمیشه در صورتی که پرداخت موفق آمیز بوده ولی خطا میده

این مورد مشکلش برطرف نشد؟

سوال در مورد نحوه تنظیم DistributedCache

و یک سوال دیگه داشتم
من فلسفه storage رو درک نکردم، الان ما خودمون در جدول تنظیمات اطلاعات اکانتهای درگاه رو ثبت کردیم و برای استفاده هم یه AccountSource ساختیم و معرفی کردیم، حالا چه لزومی به استفاده از storage هست؟ و اگر قصد استفاده از dist cache داشته باشیم تنظیم خاصی باید برای انجام بدیم؟
ما از ردیس توی پروژه استفاده کردیم اما چیزی ندیدم که مثلا ردیس رو معرفی کنم.

مبلغ واریزی

سلام با عرض خسته نباشید
وقتی از صفحه بانک برگشت داده میشه به سایت خودمون مبلغ واریزی از بانک به ما داده میشه ؟
اگه میشه تو کدوم متد و چطوری اون مبلغ واریزی رو بگیرم و بررسی کنم ببینم طرف هزینه رو موقع ارسال دستکاری نکرده باشه و درست واریز کرده باشه
با تشکر

خطا در ارسال به بانک پاسارگاد

با سلام
در متد
_onlinePayment.Request(Gateway.Pasargad, Convert.ToInt64(myclass.classes.FirstOrDefault().intClassId), (decimal)myclass.classes.FirstOrDefault().dPrice, "http://........./registerClass/Verify");

به خطای
Operation is not supported on this platform
میرسم.

لطفا راهنمایی نمایید

ایدی دیتابیس

با سلام
در کدوم قسمت و کدوم متد میتونم
ایدی دیتابیس که guid
هستش رو بگیرم
چون میخوام تو جدول دیگه ای ب غیر جدول مورد نظر شما هم کلید خارجی بدم
این مورد خیلی واجبه
با تشکر

برگشت هزینه

وقتی از متد CancelAsync استفاده مکنیم آیا لازم هست متد RefundCompletelyAsync رو فراخوانی کنیم؟

Bank Gateways enum Missing

سلام . تو نسخه جدیدی که توی ناگت گذاشتید انتخاب بانک بر اساس استرینگ نام بانک هستش
اگه مثله قبل از اینام استفاده بشه بهتر نیست ؟
که دلیلشم احتمالا بخاطر اضافه کردن درگاه بانک جدید توسط دولوپر های دیگست
و دیگه اینکه اگه قراره که همینجوری بمونه لیست نام درگاه ها رو اگه میشه توی داکیومنت قرار بدید. متشکر

خطا در استفاده از درگاه مجازی

بعد از ریدارکت به سمت درگاه مجازی این پیفام نمایش داده می شود
..\Resources\VirtualGatewayRequestHtml.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;windows-1256

پیاده سازی برای Asp.Net Core 2.x

در ابتدا تشکر برای تلاش قابل ستایش شما.
لطفا پیاده سازی پرباد برای نسخه دات نت کور رو هم مدنظر داشته باشید.

موفق باشید.

ایراد در AddAdditionalData

توضیح خطا

در هر دو حالت رو امتحان کردم کار نمیکنه AddAdditionalData متد

   Dictionary<string, object> data = new Dictionary<string, object>();
   data.Add("PaymentRequestId", Payment.Id.ToString());

var result = _onlinePayment.Request(invoice =>
{
invoice
.SetTrackingNumber(Payment.Id)
.SetAmount((decimal)amount)
.SetCallbackUrl(callBackBaseUrl + "/api/IPGCallBack/Verify")
.UseGateway(Gateway)
.UseAccount(Payment.IPG.ClientId.ToString())
// حالت اول
.AddAdditionalData(data)
//حالت دوم
.AddAdditionalData("PaymentRequestId", Payment.Id.ToString())

                      .BuildAsync();
            });

var invoice = await _onlinePayment.FetchAsync();
وقتی توی وریفای اینویس رو میگیریم ادیشنال دیتا خالیه

حتی خاستم استوریج رو به دیتابیسم وصل کنم ولی فکر کنم توی دات نت کور 3 یه کانفیلیکتی وجود داره و نشد

(لطفا جهت تسریع روند یافتن خطا، مشخصات زیر را وارد کنید)

نام و نسخه پکیج

Parbad
3.1.1
Parbad.AspNetCore
1.0.1

نوع برنامه وب

ASP.NET CORE

تنظیمات پایگاه داده

با سلام
میشه راهنمایی کنید در اپدیت جدید چرا مثل نسخه قدیمی فیلد های جداول رو تو اموزش نذاشتید
چون نیاز دارم یه جدول براش ایجاد کنم تا ordernumber
رو کلید خارجی کنم
الان مسئله برام گنگ هستش
در ضمن در نسخه جدید فقط برای donet core
گذاشتید
services.AddParbad()
.ConfigureStorage(builder => builder.UseParbadSqlServer("ConnectionString"));
خبری از dotnet framework
نیستش

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.