parsisolution / gateway

Iranian Payment Gateways
MIT License
19 stars 7 forks source link

خطای Request parameters are not valid. #36

Closed 0xlimon closed 1 year ago

0xlimon commented 5 years ago

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

0xlimon commented 5 years ago

و این خطا هم در درگاه ملت (لوکال) SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl' : failed to load external entity "https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl"

0xlimon commented 5 years ago

در این مسیر \parsisolution\gateway\src\Providers\Zarinpal و Zarinpal.php در تابع validateSettlementRequest وضعیت پرداخت دریافت میشه و اگر پرداخت موفق بوده باشه true رو برمیگردونه حالا اگه پرداخت ناموفق باشه از طریق throw new InvalidRequestException(); پیغام Request parameters are not valid رو برمیگردونه در صورتی که باید زمان پرداخت ناموفق با استفاده از Status code پیغام مربوطه رو نشون بده دقیقا مشابه درگاه پی.ای ار که به همین صورت نوشته شده البته من از جزئیات این پکیج اطلاعات زیادی ندارم و تغریبا یک روزی بیشتر نیست که ازش استفاده میکنم...اگر این توضیحات بنده اشتباه است ممنون میشم در رابطه با این پیغام توضیحات بیشتری برای حل مشکل بدید

hamed-ehtesham commented 5 years ago

سلام ببخشید بابت تاخیر در پاسخ گویی تا جایی که یادم هست زرین پال در صورت ناموفق بودن تراکنش توضیحاتی ارائه نمیکرد (در صورتی که شبکه ی پرداخت پی توضیحات داره) و استفاده از کدهای خطا برای زرین پال در جای خودش در کد وجود داره اگر به این رسیدید که در جایی از کد میتونیم اطلاعات بیشتری نسبت به چیزی که در حالت فعلی وجود داره (از پاسخ هایی که از سمت psp ها یا واسط ها بر میگرده) به دست بیاریم، حالا چه برای زرین پال باشه چه برای بقیه خوشحال میشم که بفرمایید تا اضافه کنیم حالا این که چرا برای زرین پال داریم InvalidRequestException برمیگردونیم هم به همون دلیلی هست که بالا اشاره کردم به این خاطر که زرین پال در صورت ناموفق بودن تراکنش اطلاعات زیادی به ما برنمیگردونه بنابرین ما حتی نمیتونیم کاملا اطمینان حاصل کنیم که این پاسخ (یا درخواست) از سمت زرین پال هست یا نه

aliqasemzadeh commented 5 years ago

سلام وقت بخیر منم دائما Request parameters are not valid را دریافت می کنم و واقعا نمی دونم این خطا را چطوری باید مدیریت کرد

aliqasemzadeh commented 5 years ago

@hamed-ehtesham @awminux

سلام آقای احتشام نمی خواهید بررسی کنید؟

0xlimon commented 5 years ago

@alighasemzadeh سلام من فعلا دو درگاه پی و زرین پال رو تست کردم و همینطور که اقای احتشام گفتند متاسفانه زرین پال در پرداخت ناموفق اطلاعات زیادی در اختیارمون نمیزاره (اگه برای سرویس دهنده دیگه ای هم این خطا وجود داره فکر میکنم مشکلشون همین باشه) پیغام Request parameters are not valid تنها در پرداخت ناموفق نمایش داده میشه و برای موارد دیگه طبق کدهای خطا پیغام مناسب رو نمایش میده به همین خاطر بنظرم بهتره بجای throw new InvalidRequestException(); یه پیغام ثابت در رابطه با پرداخت ناموفق قرار بدیم (چون برای تکمیل پروژه کمی عجله داشتم فعلا این کار رو انجام دادم تا به راه حل مناسب تری برسیم)

vahidalvandi commented 4 years ago

با این فرمت exception را مدیریت کنید

 try {

            $settledTransaction = Gateway::settle(true);

                return redirect()->route('profile.wallet.index')->withSuccess(trans('business::wallet.payment.success'));

            }

        } catch (\Parsisolution\Gateway\Exceptions\RetryException $e) {
            // user the page or retry
            return redirect()->route('profile.wallet.index')->withSuccess($e->getMessage());
        }catch (\Exception $e) {

            return redirect()->route('profile.wallet.index')->withErrors($e->getMessage());

        }
mmiladkdr commented 4 years ago

من با درگاه آسان پرداخت این مشکل رو دارم Request parameters are not valid. سه روزه دارم باهاش کار میکنم اما درست نمیشه مجبورم حذف کنم این پکیچ رو

hamed-ehtesham commented 4 years ago

سلام @miladkardgar خوشحال میشم برای debug به شما کمک کنم

mmiladkdr commented 4 years ago

سلام @miladkardgar خوشحال میشم برای debug به شما کمک کنم

جناب اقای احتشام در بازگشت از درگاه اسان پرداخت هیچ اطاعاتی POSTنمیشه من این مورد رو با خود آپ در میون گذاشتم اونا هم گفتن ما مشکلی ندارم مشکل از پکیچ شماست! اطلاعات ارسالی برای پرداخت مشکلی نداره اما در هنگام برگشت برای وریفای تراکنش با این خطا مواجه میشم!

نظر شما چیه ؟ مشکل از کجا میتونه باشه؟

hamed-ehtesham commented 4 years ago

حالت stateless این package رو امتحان کردید؟

نمونه کد:

// send
$gateway = Gateway::of('asanpardakht')->stateless();
// callback
$settledTransaction = Gateway::settle(true);
hamed-ehtesham commented 4 years ago

میتونید توی تلگرام با من در ارتباط باشید @H4M3D3

mmiladkdr commented 4 years ago

میتونید توی تلگرام با من در ارتباط باشید @H4M3D3

send:

$gateway = Gateway::of('asanpardakht');
            $gateway->callbackUrl(config('gateways.asanpardakht.callback-url'));callback
            $gateway->stateless();

callback

$settledTransaction = Gateway::settle(true);
            $trackingCode = $settledTransaction->getTrackingCode();
            $refId = $settledTransaction->getReferenceId();
            $cardNumber = $settledTransaction->getCardNumber();

ارسال انجام میشه اما تو برگشت چیزی پست نمیشه !

hamed-ehtesham commented 4 years ago

لطفا در callback این کد رو قرار بدید

$all = $request->all();

return compact('all');

و خروجی رو اینجا بفرستید

mmiladkdr commented 4 years ago
$all = $request->all();

return compact('all');

cakkback

hamed-ehtesham commented 4 years ago

شما باید غیر از _token و transaction_id یه متغییر دیگه به اسم ReturningParams هم دریافت کنید مگر این که آپ api ش رو تغییر داده باشه که بعید میدونم