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

دریافت کد خطای بانک #297

Closed AliDeV7 closed 2 years ago

AliDeV7 commented 2 years ago

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

من داخل فایل های اصلی پروژه دیدم که کدهای خطای هر بانک تعریف شده و برگشت داده میشه از تابع ولی داخل تابع VerifyAsync فقط Message برگشت داده میشه که به صورت String هست.

برای درگاه زرین پال : Error (True, NOK)

ولی داخل سورس های اصلی به این صورت :

        return integerStatus switch
        {
            -1 => "اطلاعات ارسال شده ناقص است.",
            -2 => "آی پی و يا مرچنت كد پذيرنده صحيح نيست",
            -3 => "با توجه به محدوديت هاي شاپرك امكان پرداخت با رقم درخواست شده ميسر نمي باشد.",
            -4 => "سطح تاييد پذيرنده پايين تر از سطح نقره اي است.",
            -11 => "درخواست مورد نظر يافت نشد.",
            -12 => "امكان ويرايش درخواست ميسر نمي باشد.",
            ....
          }

از چه طریق میتونم کدخطای دریافتی از بانک رو بگیرم؟

Sina-Soltani commented 2 years ago

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

var result = _onlinePayment.Request(...);
result.GatewayResponseCode
var result = _onlinePayment.Verify(...);
result.GatewayResponseCode

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

AliDeV7 commented 2 years ago

میتونم پکیج رو fork کنم و خودم این قسمت رو به پروژه اضافه کنم با همون استانداردی که خودتون نوشتید؟

یا اینکه خودتون قصد دارید این قسمت رو به پروژه اضافه کنید؟

Sina-Soltani commented 2 years ago

با توجه به اینکه بنده فرصت کافی برای انجام تمام تیکت‌ها رو ندارم، به همین علت تگ needs a developer زدم تا توسعه دهنده‌های داوطلب برنامه رو توسعه بدن و pull request ارسال کنن. شما توسعه رو شروع کنین و درخواست رو ارسال کنید. در نهایت در زمان مرج کردن، pull request رو بررسی میکنیم

فکر میکنم کد status باید در این بخش‌ها به شئ پاسخ اضافه بشه:

https://github.com/Sina-Soltani/Parbad/blob/master/src/Parbad.Gateway/ZarinPal/src/Internal/ZarinPalHelper.cs#L72 https://github.com/Sina-Soltani/Parbad/blob/master/src/Parbad.Gateway/ZarinPal/src/Internal/ZarinPalHelper.cs#L90 https://github.com/Sina-Soltani/Parbad/blob/master/src/Parbad.Gateway/ZarinPal/src/Internal/ZarinPalHelper.cs#L135

سپاس از شما

AliDeV7 commented 2 years ago

من کدهارو بررسی کردم، دیدم داخل ZarinPalHelper اصلا این تابع Translate تعریف شده.

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

Sina-Soltani commented 2 years ago

اکثریت درگاه‌های فعلی ندارن و باید براشون اضافه بشه. اما درگاه زیبال که اخیرا اضافه شده این قابلیت رو داره:

https://github.com/Sina-Soltani/Parbad/blob/master/src/Parbad.Gateway/Zibal/src/Internal/ZibalHelper.cs#L105

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

AliDeV7 commented 2 years ago

باشه من انجامش میدم ، pull request هم ارسال میکنم که بررسی کنین

AliDeV7 commented 2 years ago

درود

قرار بود داخل متود VerifyAsync علاوه بر Message خطا، یک Code خطا هم بزارید چون مشخص نیست از طرف بانک چه اروری برمیگرده و من به اون کد خطا نیاز دارم.

image

متن دریافتی Payment failed. است که مشخص نیست مشکل دقیقا چه چیزی بوده، ممنون میشم اینون هم اضافه کنید

Sina-Soltani commented 2 years ago

درود

وقتی که کدی وجود نداره که زرین پال ارسال کرده باشه،‌ چه کدی رو ما باید بنویسیم !!!