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
370 stars 81 forks source link

سوال درمورد درگاه پرداخت ملت #98

Closed rezathecoder closed 4 years ago

rezathecoder commented 4 years ago

سلام. خسته نباشید درمورد درگاه بانک ملت ممنون میشم راهنمایی کنید.

  1. لطفا نحوه تست درگاه روی لوکال رو توضیح بدید. پراپرتی IsTestTerminal در کانفیگ درگاه رو برابر true قرار دادم اما هنگام اتصال به درگاه پیام خطای "آی پی نامعتبر است" میدهد.

  2. لطفا نحوه دریافت شماره کارتی که پرداخت با آن صورت گرفته را توضیح دهید. طبق مستندات درگاه این مقدار در پارامتر CardHolderPAN ذخیره و بازگشت داده میشود اما نمیدونم در پَرباد چطوری دریافتش کنم.

  3. آیا پارامتر خاصی مانند paymentToken به آدرس کالبک ارسال میشود که آن را بررسی کنیم یا استفاده از متد VerifyAsync کفایت میکند؟

  4. در مستندات ذکر شده که پس از دریافت کالبک دو پارامتر RefId, SaleOrderId باید بررسی شوند که همان مقادیر دریافتی از متد Pay باشد. آیا اینکار به صورت خودکار انجام میشود یا کار اضافه ای باید انجام بدهیم؟

با تشکر

Sina-Soltani commented 4 years ago

درود

1. لطفا نحوه تست درگاه روی لوکال رو توضیح بدید. پراپرتی
   IsTestTerminal
   در کانفیگ درگاه رو برابر
   true
   قرار دادم اما هنگام اتصال به درگاه پیام خطای "آی پی نامعتبر است" میدهد.

تا جایی که اطلاع دارم باید روی هاستی تست بشه که آی پی اون توی قرارداد نوشته شده علت اینکه این پیام داده میشه هم همینه قرار دادن مقدار صحیح در پارامتر IsTestTerminal بیانگر این هست که شما تست های خودتون رو در محیط خارج از محیط اصلی میخواین انجام بدید. این محیط در واقع یک کپی از ترمینال اصلی هست با این تفاوت که اهمیتی نداره که خطایی بکنید یا خیر و یا اینکه نگران پولی که واریز شده باشید

2. لطفا نحوه دریافت شماره کارتی که پرداخت با آن صورت گرفته را توضیح دهید. طبق مستندات درگاه این مقدار در پارامتر
   CardHolderPAN
   ذخیره و بازگشت داده میشود اما نمیدونم در پَرباد چطوری دریافتش کنم.

این پارامتر در حال حاضر دریافت نمیشه بررسی میشه و در نسخه های بعدی افزوده میشه

3. آیا پارامتر خاصی مانند
   paymentToken
   به آدرس کالبک ارسال میشود که آن را بررسی کنیم یا استفاده از متد
   VerifyAsync
   کفایت میکند؟

تمام کاری که باید پس از بازگشت خریدار به وب سایت انجام بشه در راهنما درج شده بازگشت به وب‌سایت و تایید تراکنش

4. در مستندات ذکر شده که پس از دریافت کالبک دو پارامتر
   RefId, SaleOrderId
   باید بررسی شوند که همان مقادیر دریافتی از متد
   Pay
   باشد. آیا اینکار به صورت خودکار انجام میشود یا کار اضافه ای باید انجام بدهیم؟

کلیه عملیات توسط پَرباد انجام میشه

rezathecoder commented 4 years ago

ممنون از راهنماییتون. در مورد اضافه شدن قابلیت دریافت شماره کارت چه زمانی مدنظرتون هست؟ یا اگر میتونم کمکی بکنم که این فرایند تسریع بشه بفرمایید چون یک مقدار عجله داریم

Sina-Soltani commented 4 years ago

مستندات درگاه که این پارامتر رو دقیقا ذکر کرده باشه رو لطفا اینجا آپلود کنید تا بررسی بشه

rezathecoder commented 4 years ago

Mellat.PGW.1.16_Fa.pdf

بفرمایید خدمت شما. صفحه 25 به این موضوع اشاره دارد

Sina-Soltani commented 4 years ago

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

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

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

public async Task<IActionResult> Verify()
{
   var invoice = await _onlinePayment.FetchAsync();

   if (invoice.Status == PaymentFetchResultStatus.AlreadyProcessed)
   {
      return Content("The payment is already processed before.");
   }

   var verifyResult = await _onlinePayment.VerifyAsync(invoice);

   if (verifyResult.IsSucceed)
   {
      var cardNumber = Request.QueryString["CardHolderPAN"];
   }

}

همچنین اگر از چندین درگاه همزمان استفاده می‌کنید، میتونید به راحتی با استفاده از پراپرتی نام درگاه در شئ نتیجه، چک کنید که آیا درگاه ملت هست یا خیر و بعد پارامتر رو بخونید

rezathecoder commented 4 years ago

متشکرم. با استفاده از متد TryGetParamAsync که در پرباد استفاده کردین تونستم شماره کارت رو دریافت کنم.

aliramir commented 4 years ago

پیغام: فرمت اطلاعات وارد شده صحيح نمي باشد لطفا میشه بفرمایید اشکال کار من کجاست؟ invoice .UseAutoRandomTrackingNumber() .SetAmount(viewModel.Amount) .SetCallbackUrl(verifyUrl) .UseMellat(mellat => mellat.AddMellatCumulativeAccount(1000, viewModel.Amount)); این subserviceId چی هست؟ در حالت تست terminalId را چی بدم؟

Sina-Soltani commented 4 years ago

پیغام: فرمت اطلاعات وارد شده صحيح نمي باشد لطفا میشه بفرمایید اشکال کار من کجاست؟ invoice .UseAutoRandomTrackingNumber() .SetAmount(viewModel.Amount) .SetCallbackUrl(verifyUrl) .UseMellat(mellat => mellat.AddMellatCumulativeAccount(1000, viewModel.Amount)); این subserviceId چی هست؟ در حالت تست terminalId را چی بدم؟

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